Установка и настройка сервера Teamspeak 3 + mysql
Наконец вышел новый сервер TeamSpeak3. Тут я опишу, как установить и настроить данный сервер в Mandriva 2010. И так приступим.
Закачка дистрибутива
Идем на сайт teamspeak и качаем нужный нам сервер. Я опишу для Server 64-bit 3.0.0-beta20.
Установка
Создание пользователя
Создаем нового пользователя ts3, от которого будет работать TeamSpeak server.
# useradd -c ts3_user -d /home/ts3 -r -m -s /dev/null ts3
Копирование файлов
Переписываем архив с сервером в каталог /home/ts3 и распаковываем его
#tar xvfz teamspeak3-server_linux-x86-3.0.0-beta20.tar.gz
Создание файлов настроек
Идем в каталог с сервером
# cd teamspeak3-server_linux-amd64
И там создаем 2 файла
ts3server.ini
machine_id= default_voice_port=9987 voice_ip=0.0.0.0 liscensepath= filetransfer_port=30033 filetransfer_ip=0.0.0.0 query_port=10011 query_ip=0.0.0.0 dbplugin=ts3db_mysql dbpluginparameter=ts3db_mysql.ini dbsqlpath=sql/ dbsqlcreatepath=create_mysql/ logpath=logs logquerycommands=1
И ts3db_mysql.ini
[config] host=localhost port=3306 username=mysqluser password=mysqlpasswd database=ts3 socket=
Параметры файлов, мне кажется, понятны.
Создание базы данных
Создаем файл pre_ts3.sql следующего содержания:
use mysql;
INSERT INTO user (Host, User, Password) VALUES ('localhost','ts3',password('sqlpassword'));
INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv,
Index_priv, Alter_priv) VALUES ('%', 'ts3', 'ts3', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');
CREATE DATABASE ts3;
Не забудьте исправить sqlpassword на свое усмотрение. Для тех кто не понял, это пароль mysql-пользователя ts3, необходимый для доступа к базе данных ts3
Cоздаём пользователя и базу.
Далее делаем в консоли.
# mysql -u root -p < pre_ts3.sql # mysqladmin flush-privileges
Проверка библиотек
Из консоли выполняем
ldd libts3db_mysql.so
linux-vdso.so.1 => (0x00007fff6dbf3000)
libmysqlclient.so.15 => not found
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f597cdea000)
libm.so.6 => /lib64/libm.so.6 (0x00007f597cb68000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f597c952000)
libc.so.6 => /lib64/libc.so.6 (0x00007f597c5f3000)
/lib64/ld-linux-x86-64.so.2 (0x00007f597d322000)
И видим строку
libmysqlclient.so.15 => not found
Тк в mandriva 1010 входит уже драйвер клиента libmysqlclient.so.16, а TeamSpeak серверу нужен libmysqlclient.so.15, то мне пришлось взять данный файл из пакета lib64mysql15-5.0.67-3mdv2009.0.x86_64.rpm от Mandriva 2009.
Выкачиваем данный пакет, открываем в mc, идем с CONTENTS.cpio, потом в usr/lib64 и копируем файлы libmysqlclient.so.15.0.0 и @libmysqlclient.so.15 в каталог /usr/lib64/
После этого снова проверяем, с помощью ldd и должны получить
# ldd libts3db_mysql.so
linux-vdso.so.1 => (0x00007fff4fbff000)
libmysqlclient.so.15 => /usr/lib64/libmysqlclient.so.15 (0x00007f150b79b000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f150b490000)
libm.so.6 => /lib64/libm.so.6 (0x00007f150b20d000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f150aff7000)
libc.so.6 => /lib64/libc.so.6 (0x00007f150ac99000)
libssl.so.0.9.8 => /usr/lib64/libssl.so.0.9.8 (0x00007f150aa45000)
libcrypto.so.0.9.8 => /usr/lib64/libcrypto.so.0.9.8 (0x00007f150a68c000)
libz.so.1 => /lib64/libz.so.1 (0x00007f150a477000)
/lib64/ld-linux-x86-64.so.2 (0x00007f150bd43000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f150a272000)
Запуск сервера
Первый запуск
Правим файл ts3server_minimal_runscript.sh
#!/bin/bash
export LD_LIBRARY_PATH=".:$LD_LIBRARY_PATH"
if [ -e ts3server_linux_x86 ]; then
./ts3server_linux_x86 inifile=ts3server.ini $@
else
./ts3server_linux_amd64 inifile=ts3server.ini $@
fi
И запускаем его. И если запуск произошел без ошибок (Программа не вывалилась в консоль), сохраняем строку с token, для получения полномочий superadmin на клиенте. Так же эта строка сохранена в логах в папке logs.
Останавливаем сервер через (Ctrl-C).
Настройка сервиса запуска сервера
Для того чтобы наш сервер работал от имени пользователя ts3.
1.Меняем пользователя и группу папки /home/ts3
# chown -R ts3:ts3 /home/ts
2.Копируем файл ts3server_startscript.sh в файл /etc/rc.d/init.d/ts3
3.Правим файл /etc/rc.d/init.d/ts3
#!/bin/bash
#TeamSpeak 3
#For TeamSpeak 3 server
#
# /etc/rc.d/init.d/ts3
#
# Starts the TeamSpeak 3 daemon
#
# chkconfig: 255 99 10
# description: Runs commands scheduled by the at command at the time \
# specified when at was run, and runs batch commands when the load \
# average is low enough.
# processname: atd
#
### BEGIN INIT INFO
# Provides: atd at
# Default-Start: 3 4 5
# Short-Description: Starts the at daemon
# Description: Runs commands scheduled by the at command at the time
# specified when at was run, and runs batch commands when
# the load average is low enough.
### END INIT INFO
# Source function library.
#set -x
# Source function library.
if [ -f /etc/init.d/functions ] ; then
. /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
. /etc/rc.d/init.d/functions
else
exit 0
fi
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
# Check that smb.conf exists.
#[ -f /etc/samba/smb.conf ] || exit 0
RETVAL=0
#
# See how we were called.
#
# Copyright (c) 2010 TeamSpeak Systems GmbH
# All rights reserved
COMMANDLINE_PARAMETERS="inifile=ts3server.ini" #add any command line parameters you want to pass here
BINARYPATH="/home/ts3/teamspeak3-server_linux-amd64"
USER="ts3"
if [ -e "$BINARYPATH/ts3server_linux_x86" ]; then
BINARYNAME="ts3server_linux_x86"
else
BINARYNAME="ts3server_linux_amd64"
fi
cd "${BINARYPATH}"
LIBRARYPATH="$(pwd)"
case "$1" in
start)
if [ -e ts3server.pid ]; then
if ( kill -0 $(cat ts3server.pid) 2> /dev/null ); then
echo "The server is already running, try restart or stop"
exit 1
else
echo "ts3server.pid found, but no server running. Possibly your previously started server crashed"
echo "Please view the logfile for details."
rm ts3server.pid
fi
fi
#if [ "${UID}" = "0" $USER = "root" ]; then
# echo WARNING ! For security reasons we advise: DO NOT RUN THE SERVER AS ROOT
# for c in $(seq 1 10); do
# echo -n "!"
# sleep 1
# done
# echo "!"
#fi
echo "Starting the TeamSpeak 3 server"
#set -x
if [ -e "$BINARYNAME" ]; then
if [ ! -x "$BINARYNAME" ]; then
echo "${BINARYNAME} is not executable, trying to set it"
chmod u+x "${BINARYNAME}"
fi
if [ -x "$BINARYNAME" ]; then
export LD_LIBRARY_PATH="${LIBRARYPATH}:${LD_LIBRARY_PATH}"
su $USER -s "/bin/bash" -c "./${BINARYNAME} ${COMMANDLINE_PARAMETERS}" > /dev/null &
echo $! > ts3server.pid
echo "TeamSpeak 3 server started, for details please view the log file"
else
echo "${BINARNAME} is not exectuable, cannot start TeamSpeak 3 server"
fi
else
echo "Could not find ${BINARYNAME}, aborting"
exit 5
fi
;;
stop)
if [ -e ts3server.pid ]; then
echo -n "Stopping the TeamSpeak 3 server"
if ( kill -TERM $(cat ts3server.pid) 2> /dev/null ); then
for c in $(seq 1 300); do
if ( kill -0 $(cat ts3server.pid) 2> /dev/null ); then
echo -n "."
sleep 1
else
break
fi
done
fi
if ( kill -0 $(cat ts3server.pid) 2> /dev/null ); then
echo "Server is not shutting down cleanly - killing"
kill -KILL $(cat ts3server.pid)
else
echo "done"
fi
rm ts3server.pid
else
echo "No server runing (ts3server.pid is missing)"
exit 7
fi
;;
restart)
$0 stop && $0 start || exit 1
;;
status)
if [ -e ts3server.pid ]; then
if ( kill -0 $(cat ts3server.pid) 2> /dev/null ); then
echo "Server is running"
else
echo "Server seems to have died"
fi
else
echo "No server running (ts3server.pid is missing)"
fi
;;
*)
echo "Usage: ${0} {start|stop|restart|status}"
exit 2
esac
exit 0