|
|
Модератор форума: Dimitro |
Форум TrinityCore Установка / Настройка TrinityCore [FreeBSD] Сборка и установка сервера |
[FreeBSD] Сборка и установка сервера |
Доброго времени суток,приступим.
В первую чередь нам понадобиться mysql сервер и клиент: Код cd /usr/ports/databases/mysql51-server/ && make install clean cd /usr/ports/databases/mysql51-client/ В принципе, все должно будет неплохо работать и с конфигом по умолчанию, но если вы намереваетесь использовать русские имена персов, не забудьте в my.cnf в разделе [client] и [mysqld] добавить: default-character-set=utf8 т.к. по умолчанию из порта мускуль собирается с "default-character-set=latin1", и если не прописать utf8 - вместо имён будет "?????????" Для запуска сервера в screen режиме нужно поставить сам скрин: Код cd /usr/ports/sysutils/screen/ && make install clean Для компиляции я использую gmake, потому, если у вас его нет, ставим из портов: Код cd /usr/ports/devel/gmake/ && make install clean Исходники мы будем выкачивать при помощи GIT Код cd /usr/ports/devel/git/ && make install clean Для сборки openssl и АСЕ может понадобиться последний libtool Код cd /usr/ports/devel/libtool22/ && make install clean Кроме того, для сборки будет нужен openssl Код cd /usr/ports/security/openssl/ && make install clean АСЕ, версии 5.7.5 Чтобы его установить нам нужно взять вот этот патч и вот этот архив Содержимым архива заменяем содержимое каталога /usr/ports/devel/ace далее пробуем сделать make, система выкачает и распакует архив с исходниками и начнет сборку (вдруг нам повезет!), если удача повернулась тылом и выдала ошибку, касаемо pthread, накатываем патч Код cd /usr/ports/devel/ace/work patch < путь к вышеуказанному патчу/compa_freebsd7.patch Вероятнее всего спросит, какие файлы патчить: указываем ему полный путь: /usr/ports/devel/ace/work/ACE_wrappers/ace/OS_NS_signal.inl и /usr/ports/devel/ace/work/ACE_wrappers/ace/OS_NS_netdb.inl повторяем Код cd /usr/ports/devel/ace/ make install Если все в порядке, после этих действий выходим из под рута. Идем в свой домашний каталог, создаем там каталог для исходников, заходим в него и запускаем (исходники для версии 3.3.5а, на момент написания) Код Ждем, пока они выкачаются После заходим в каталог исходников и запускаем оттуда скрипт такого вида, параметры конфигурации нужно подобрать под свою систему: Код mkdir build cd build cmake ../ -DPREFIX=/opt/mangos/trinity/hg/release \ -DCMAKE_C_FLAGS="-O2" \ -DCMAKE_CXX_FLAGS="-O2" -DDO_DEBUG=0 -DDO_SCRIPTS=true \ -DCMAKE_DFD_SETSIZE=4096 -DLARGE_CELL=0 -DSHORT_SLEEP=1 \ -DCMAKE_C_FLAGS="-march=prescott -m64 -D_LARGEFILE_SOURCE \ -D_FILE_OFFSET_BITS=64 -O2 -pipe -pipe -msse3 -fomit-frame-pointer \ -ffast-math -fno-strength-reduce -fno-strict-aliasing -frename-registers" #cd build #gmake install Стоит заметить, что строчки после cmake определяют параметры конфигурации сборки для вашей системы, параметры эти на всех никсах одинаковые, так что можем невообразимым образом утащить их из мана для сборки на linuxе Правда при том, что openssl и ACE у нас установлены в системные директории, нам не нужно указывать конфигуратору где их искать, и строки Код -DACE_LIBRARY=~/.sys/lib/libACE.so -DACE_INCLUDE_DIR=~/.sys/include/ -DSSLLIB=~/.sys/lib/libssl.so мы выбрасываем Вероятно вы заметили отличие в О3/О2 - эти параметры отвечают за степень оптимизации, причем стабильной считается О2, будем собирать с ней. Этот скрипт после конфигурации сразу же начнет сборку, если вам это не нужно, комментируем последние две строчки. Результат наших трудов будет сохранен в каталог, указанный в -DPREFIX= Проверяем этот каталог, если видим там папку bin с 2мя файлами trinity-core и trinity-realm, можно себя поздравить. Стандартные конфиги лежат в etc/редактируем их под себя. Для удобства запуска в папку с бинарниками можно бросить вот такие скрипты: core.sh: Код #!/bin/sh while true ; do servlog='путь к логу сервера, указанный в конфиге, включая имя файла лога'; outpath='путь к папке, в которую будем сохранять крашлог'; date=`date "+%Y-%m-%d_%H:%M:%S"`; echo "Server CRASHED !!! Start Bugreport System." >> $outpatch$date.txt; echo "Server.log Log FILE Last 30 Lines:" >> $outpatch$date.txt; cat $servlog | tail -n 30 >> $outpath$date.txt; echo "" >> $outpatch$date.txt; echo "END bugtracker system." >> $outpatch$date.txt; /путь к бинарникам/bin/trinity-core -c ../etc/trinitycore.conf #указывает расположение файла конфигурации done Т.К. Рeалм сервер падает в разы меньше и по более очевидным причинамм, столь страшный скрипт для него не нужен. realm.sh: Код #!/bin/sh while true ; do echo `date` ", Realm daemon crashed and restarted." >> /путь куда сохранять краш лог/realmcrash.log /путь к бинарникам/bin/trinity-realm -c ../etc/trinityrealm.conf done start.sh: Код screen -AmdS world /путь к скрипту/core.sh screen -AmdS realm /путь к скрипту/realm.sh start.sh готов к тому, чтобы занести его, например в /etc/rc.d тогда он будет автоматом запускать тринити после старта сервера. Скрипты core.sh и realm.sh - авторестарт в случае падения. core.sh записывает последние 30 строк из лога сервера в указанную папку ВАЖНО! 99.9% у вас будет ошибка с FileSystem.cpp Решение: Код diff -r 4c8e9fc4c125 dep/g3dlite/source/FileSystem.cpp --- a/dep/g3dlite/source/FileSystem.cpp Thu Sep 02 06:02:51 2010 +0300 +++ b/dep/g3dlite/source/FileSystem.cpp Fri Sep 03 12:47:47 2010 +0600 @@ -31,6 +31,8 @@ # include <dirent.h> # include <fnmatch.h> # include <unistd.h> +# define O_LARGEFILE 0100000 +# define stat64 stat # define _getcwd getcwd # define _stat stat #endif (положить в папку с ядром в виде FileSystem.patch и залить гитом) Либо руками прописать в dep/g3dlite/source/FileSystem.cpp Код +#elif defined(__FreeBSD__) +# include <dirent.h> +# include <fnmatch.h> +# include <unistd.h> +# define O_LARGEFILE 0100000 +# define stat64 stat +# define _stat stat +# define _getcwd getcwd Если же будет ошибка с jemalloc: Код [ 98%] Built target scripts Linking CXX executable worldserver /usr/bin/ld: cannot find -ljemalloc gmake[2]: *** [src/server/worldserver/worldserver] Error 1 gmake[1]: *** [src/server/worldserver/CMakeFiles/worldserver.dir/all] Error 2 gmake: *** [all] Error 2 Зайдите в /исходник/src/server/worldserver/CMakeLists.txt и в блоке: Код: Код ]else() target_link_libraries( worldserver game shared trinitysockets trinitydatabase trinityauth trinityconfig collision g3dlib jemalloc ${SCRIPT_LIB} ${READLINE_LIBRARY} ${TERMCAP_LIBRARY} ${ACE_LIBRARY} ${MYSQL_LIBRARY} ${OPENSSL_LIBRARIES} ${ZLIB_LIBRARIES} ${OSX_LIBS} ) endif() Просто уберите строку jemalloc Взято с http://trinity-core.ru/,переписано и дополнено мной.
Присяжный - краб.
|
| |||
| |||