Установка и настройка сервера Teamspeak 3 + mysql

Материал из Wiki МИАЦ ВО
Версия от 15:00, 12 мая 2011; Misha (обсуждение | вклад) (Если забыли пароль admin)
Перейти к навигации Перейти к поиску

Наконец вышел новый сервер 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 -p 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 для 64 битной ОС или libmysql15-5.0.67-3mdv2009.0.i586.rpm для 32 битной от Mandriva 2009.
Выкачиваем данный пакет, открываем в mc, идем с CONTENTS.cpio, потом в usr/lib64 и копируем файлы libmysqlclient.so.15.0.0 и @libmysqlclient.so.15 в каталог /usr/lib64/ для 64 битной ОС или в /usr/lib для 32 битной
После этого снова проверяем, с помощью 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/ts3

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

RETVAL=0

#
#       See how we were called.
#                              

Изменяем строку с COMMANDLINE_PARAMETERS

COMMANDLINE_PARAMETERS="inifile=ts3server.ini" #add any command line parameters you want to pass here
BINARYPATH="/home/ts3/teamspeak3-server_linux-amd64"                                                                               
USER="ts3"                                                                                           

Закоментировать строки с проверкой на root

                #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

И изменяем строку запуска
Было

"./${BINARYNAME}" ${COMMANDLINE_PARAMETERS} > /dev/null & 

Стало

 su $USER -s "/bin/bash" -c "./${BINARYNAME} ${COMMANDLINE_PARAMETERS}" > /dev/null &

Если забыли пароль admin

Первый вариант

Взято тут

Второй вариант

Как мне кажется намного более простой.

  1. Заранее, пока еще можем зайти администратором, создаем несколько ключей токенов.
    1. На клиенте заходим администратором, идем Привилегии --> Ключи привилегий --> Нажимаем Create
    2. Выбираем Type - Группа сервера, Group - Server Admin, Description - какое нибудь описание, что бы потом не забыть.
    3. Несколько раз нажимаем кнопку Создать.
  2. Когда надо дать права админа какой нибудь машине
    1. С помощью клиента, например phpmyadmin, смотрим таблицу tokens из базы данных ts3 mysql.
    2. Копируем оттуда token_key клиенту в поле Привилегии --> Использовать ключ привилегий и нажимаем Ок