Установка сервера TeamSpeak 3 FreeBSD MySQL

Установка сервера 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, под иную ищите линк):

cd /mnt/soft/1_arch

В процессе написания статьи создал папку для архивов пакетов

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

Смотрим вывод на экран, обычно все происходит без ошибок, из выведенной на экран информации нам нужно:

  1. Просмотреть, есть ли ошибочные логи;
  2. Запомнить ник и пароль админа:
------------------------------------------------------------------
I M P O R T A N T
------------------------------------------------------------------
Server Query Admin Acccount created
loginname= "serveradmin", password= "QY53GbqQ"
------------------------------------------------------------------
  1. Запомнить токен сервера (а лучше записать):
------------------------------------------------------------------
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

Вот теперь всё)