Установка сервера TeamSpeak 3 FreeBSD MySQL
Что это? Виа Wiki
TeamSpeak — компьютерная программа, предназначенная для голосового общения в сети Интернет посредством технологии VoIP. От классического телефона отличается практически неограниченным количеством абонентов, разговаривающих одновременно. Больше всего это похоже на многоканальную рацию, в которой можно одновременно пользоваться несколькими каналами. При этом доступны все опции, разработанные ранее для удобства использования раций в полевых (боевых) условиях. Программы этого типа предназначены прежде всего для геймеров, но могут использоваться везде, где необходима голосовая связь и координация большой группы людей.
Установка TeamSpeak 3 на FreeBSD
Система:
FreeBSD 9.1-RELEASE #0: Mon Jan 21 22:14:00 IRKT 2013 root@f02.24srv.ru:/usr/obj/usr/src/sys/GEN210113 i386
Сам ТимСпик:
teamspeak3-server_freebsd-x86-3.0.6.1
Устанавливаем:
Создаем директорию, где будет размещать сервер, у меня это: /mnt/soft/
Скачиваем сервер:
cd /mnt/soft/
fetch http://teamspeak.gameserver.gamed.de/ts3/releases/3.0.6.1/teamspeak3-server_freebsd-x86-3.0.6.1.tar.gz
Распаковываем, переименовываем, входим:
tar xvzf teamspeak3-server_freebsd-x86-3.0.6.1.tar.gz
mv teamspeak3-server_freebsd-x86 ts3
cd ts3
Для установки с поддержкой MySQL создаём файлы:
ts3db_mysql.ini с содержанием (в нём прописываем доступ к БД MySQL):
[config]
host=localhost
port=3306
username=db_username
password=db_password
database=database
socket=
и ts3server.ini с содержанием:
machine_id=
default_voice_port=9987
voice_ip=0.0.0.0 =IP SERVER
licensepath=
filetransfer_port=30033
filetransfer_ip=0.0.0.0 =IP SERVER
query_port=10011
query_ip=0.0.0.0 =IP SERVER
dbplugin=ts3db_mysql
dbpluginparameter=ts3db_mysql.ini
dbsqlpath=sql/
dbsqlcreatepath=create_mysql/
logpath=logs
logquerycommands=1
Проверяем доступность библиотек для запуска сервера:
ldd ts3server_freebsd_x86
ts3server_freebsd_x86:
libthr.so.3 => /lib/libthr.so.3 (0x285c3000)
libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x285e3000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x286db000)
libm.so.5 => /lib/libm.so.5 (0x287d0000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x287ea000)
libc.so.7 => /lib/libc.so.7 (0x287f5000)
Тут мы видим, что все библиотеки для запуска сервера есть, этого хватит для запуска сервера БЕЗ MySQL.
Проверяем наличие библиотек для запуска сервера с MySQL:
ldd /mnt/soft/ts3/libts3db_mysql.so
/mnt/soft/ts3/libts3db_mysql.so:
libmysqlclient.so.15 => not found (0)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x2820e000)
libm.so.5 => /lib/libm.so.5 (0x28303000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2831d000)
libc.so.7 => /lib/libc.so.7 (0x2806c000)
libcrypt.so.4 => not found (0)
libz.so.4 => not found (0)
Тут мы видим откровенно отсутствие на сервере библиотек: libmysqlclient.so.15, libcrypt.so.4, libz.so.4.
P.S. Тут буду описывать — как ставить библиотеки, которых не хватало именно у меня. Об остальных промолчу.
Установка библиотеки libmysqlclient.so.15 для TeamSpeak3
Проверяем, есть ли вообще MySQL (ну должен быть, мы ж хотим собрать сервер с его поддержкой и уже его поставили и настроили):
pkg_info | grep mysql
mysql-client-5.5.29 Multithreaded SQL database (client)
mysql-server-5.5.29 Multithreaded SQL database (server)
php5-mysql-5.4.10 The mysql shared extension for php
php5-mysqli-5.4.10 The mysqli shared extension for php
Видим, что Мускул стоит версии 5.5.29. Посмотрим какие есть с ним библиотеки:
cd /usr/local/lib/mysql/
ls
libmysqlclient.a libmysqlclient_r.a libmysqld.a
libmysqlclient.so libmysqlclient_r.so libmysqlservices.a
plugin libmysqlclient.so.18 libmysqlclient_r.so.18
Нужной нам библиотеки нет, оказывается она ставится с версией мускула 5.0. Не хочется откатываться на старую версию — поэтому лечим. В любую директорию скачиваем клиента 5-го мускула, распаковываем, копируем библиотеки:
fetch http://ftp.urc.ac.ru/pub/OS/FreeBSD/packages-7/databases/mysql-client-5.0.86.tbz
tar xvzf mysql-client-5.0.86.tbz
cd lib/mysql
cp libmysqlclient.so.15 /usr/local/lib/mysql/
cp libmysqlclient_r.so.15 /usr/local/lib/mysql/
Проверяем состояние библиотек:
ldd /mnt/soft/ts3/libts3db_mysql.so
/mnt/soft/ts3/libts3db_mysql.so:
libmysqlclient.so.15 => /usr/local/lib/mysql/libmysqlclient.so.15 (0x281af000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x2820e000)
libm.so.5 => /lib/libm.so.5 (0x28303000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2831d000)
libc.so.7 => /lib/libc.so.7 (0x2806c000)
libcrypt.so.4 => not found (0)
libz.so.4 => not found (0)
Во, Мускул тянется, идём дальше.
Установка библиотеки libcrypt.so.4 для TeamSpeak3
Перерыл несколько сайтов в поисках пакета с данной библиотекой, нашел, пакет называется: compat7x, установочный находится в /usr/ports/misc/compat7x. Можете установить, но я не стал, т.к. там есть ещё пакеты:
/usr/ports/misc > ls | grep compat
compat4x
compat5x
compat6x
compat7x
compat8x
compat9x
Какой завтра понабиться и не знаешь. Решил вылечить тем же способом, что и Мускул (Заметьте, я качаю библиотеки под свою архитектуру i386, под иную ищите линк):
fetch ftp://ftp.freebsd.ru/pub/FreeBSD/ports/distfiles/compat7x-i386-7.3.703000.201008.tar.bz2
tar xvzf compat7x-i386-7.3.703000.201008.tar.bz2
cd compat7x-i386-7.3.703000.201008/lib/
cp libcrypt.so.4 /lib/
Проверяем:
ldd /mnt/soft/ts3/libts3db_mysql.so
/mnt/soft/ts3/libts3db_mysql.so:
libmysqlclient.so.15 => /usr/local/lib/mysql/libmysqlclient.so.15 (0x281af000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x2820e000)
libm.so.5 => /lib/libm.so.5 (0x28303000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2831d000)
libc.so.7 => /lib/libc.so.7 (0x2806c000)
libcrypt.so.4 => /lib/libcrypt.so.4 (0x28328000)
libz.so.4 => not found (0)
Библиотека есть, идем дальше…
Установка библиотеки libz.so.4 для TeamSpeak3
Оказывается данная библиотека есть в пакете, описанном немного выше (compat7x-i386), так что не будем изощряться:
cd /mnt/soft/1_arch/compat7x-i386-7.3.703000.201008/lib/
cp libz.so.4 /lib/
ldd /mnt/soft/ts3/libts3db_mysql.so
/mnt/soft/ts3/libts3db_mysql.so:
libmysqlclient.so.15 => /usr/local/lib/mysql/libmysqlclient.so.15 (0x281af000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x2820e000)
libm.so.5 => /lib/libm.so.5 (0x28303000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2831d000)
libc.so.7 => /lib/libc.so.7 (0x2806c000)
libcrypt.so.4 => /lib/libcrypt.so.4 (0x28328000)
libz.so.4 => /lib/libz.so.4 (0x28341000)
Всё, все библиотеки есть!
Запуск сервера TeamSpeak3
Запускаем сервер с папки /mnt/soft/ts3 командой:
./ts3server_minimal_runscript.sh inifile=ts3server.ini
Смотрим вывод на экран, обычно все происходит без ошибок, из выведенной на экран информации нам нужно:
- Просмотреть, есть ли ошибочные логи;
- Запомнить ник и пароль админа:
------------------------------------------------------------------
I M P O R T A N T
------------------------------------------------------------------
Server Query Admin Acccount created
loginname= "serveradmin", password= "QY53GbqQ"
------------------------------------------------------------------
- Запомнить токен сервера (а лучше записать):
------------------------------------------------------------------
I M P O R T A N T
------------------------------------------------------------------
ServerAdmin token created, please use it to gain
serveradmin rights for your virtualserver. please
also check the doc/token_guide.txt for details.
token=EkMWxw+1UG4keQVI1s6lmI3t/zBZFcgzSRjLVl8l
------------------------------------------------------------------
Дальше подключаемся клиентом на порт 9987.
P.S. Если нужно — открываем порты на внешнем фаерволе, а какие? — Смотрим ниже:
sockstat | grep ts3
ts3 ts3server_ 83476 17 tcp4 0.0.0.0:30033 *:*
ts3 ts3server_ 83476 22 udp4 0.0.0.0:9987 *:*
ts3 ts3server_ 83476 24 tcp4 0.0.0.0:10011 *:*
Сложилась такая фигня, что любой скрипт запуска через rc.conf вылетал в ошибку, в связи с отсутствием соединения с БД, либо невозможностью соединиться с сервером авторизации тимспика. Автозапуск так и не победил, зато нашел решение запуска через crontab:
cat crontab | grep ts3
*/10 * * * * ts3 ps ax | grep -v "grep ts3server_freebsd_x86" | grep ts3server_freebsd_x86 || /mnt/soft/ts3/ts3server_minimal_runscript.sh inifile=ts3server.ini
Вот теперь всё)