[Trinity Core][FreeBSD] Сборка и установка сервера
Как вижу, полного мана по установке trinity на FreeBSD пока нет, ниже попробую это исправить.
Действия проводились на FreeBSD 7.2 stable
В первую чередь нам понадобиться 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 - вместо имён будет "?????????"
Установка 6ой версии пока не рекомендуется по ряду причин, в частности
Кроме того, частично не совпадает синтаксис запросов, возможно, при установки trinity core это и не всплывет, но на других проектах приведет к проблемам (на моем опыте это был форум SMF)
Для запуска сервера в screen режиме нужно поставить сам скрин:
Код:
cd /usr/ports/sysutils/screen/ && make install clean
Для компиляции я использую gmake, потому, если у вас его нет, ставим из портов:
Код:
cd /usr/ports/devel/gmake/ && make install clean
Исходники мы будем выкачивать при помощи Mercurial
Код:
cd /usr/ports/devel/mercurial/ && 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.2.2а, на момент написания)
Код:
hg clone https://trinitycore.googlecode.com/hg/
Ждем, пока они выкачаются
После заходим в каталог исходников и запускаем оттуда скрипт такого вида, параметры конфигурации нужно подобрать под свою систему:
Стоит заметить, что строчки после cmake определяют параметры конфигурации сборки для вашей системы, параметры эти на всех никсах одинаковые, так что можем невозбранно утащить их из [Ссылки могут видеть только зарегистрированные пользователи. ]
Правда при том, что openssl и ACE у нас установлены в системные директории, нам не нужно указывать конфигуратору где их искать, и строки
Вероятно вы заметили отличие в О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
Т.К. Риалм сервер падает в разы меньше и по более очевидным причинамм, столь страшный скрипт для него не нужен.
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 строк из лога сервера в указанную папку
В составлении мана помогли отзывы по сборке АСЕ, ман сборке под линукс, и старые маны по мангосу.