Установка и настройка сервера Teamspeak 3 + mysql: различия между версиями

Материал из Wiki МИАЦ ВО
Перейти к навигации Перейти к поиску
(Проверка библиотек)
м (Откат правок Sopod (обсуждение) к версии Misha)
 
(не показано 16 промежуточных версий 3 участников)
Строка 55: Строка 55:
 
Далее делаем в консоли.
 
Далее делаем в консоли.
 
<pre># mysql -u root -p < pre_ts3.sql
 
<pre># mysql -u root -p < pre_ts3.sql
# mysqladmin flush-privileges
+
# mysqladmin -p flush-privileges
 
</pre>
 
</pre>
 +
 
===Проверка библиотек===
 
===Проверка библиотек===
 
Из консоли выполняем
 
Из консоли выполняем
Строка 69: Строка 70:
 
</pre>И видим строку
 
</pre>И видим строку
 
  libmysqlclient.so.15 => not found
 
  libmysqlclient.so.15 => not found
Тк в mandriva 1010 входит уже драйвер клиента libmysqlclient.so.16, а TeamSpeak  серверу нужен libmysqlclient.so.15, то мне пришлось взять данный файл из пакета [http://mirror.yandex.ru/mandriva/official/2009.0/x86_64/media/main/release/lib64mysql15-5.0.67-3mdv2009.0.x86_64.rpm lib64mysql15-5.0.67-3mdv2009.0.x86_64.rpm] от Mandriva 2009.<br / >
+
Тк в mandriva 1010 входит уже драйвер клиента libmysqlclient.so.16, а TeamSpeak  серверу нужен libmysqlclient.so.15, то мне пришлось взять данный файл из пакета [http://mirror.yandex.ru/mandriva/official/2009.0/x86_64/media/main/release/lib64mysql15-5.0.67-3mdv2009.0.x86_64.rpm lib64mysql15-5.0.67-3mdv2009.0.x86_64.rpm] для 64 битной ОС или [http://mirror.yandex.ru/mandriva/official/2009.0/i586/media/main/release/libmysql15-5.0.67-3mdv2009.0.i586.rpm libmysql15-5.0.67-3mdv2009.0.i586.rpm] для 32 битной от Mandriva 2009.<br / >
Выкачиваем данный пакет, открываем в mc, идем с CONTENTS.cpio, потом в usr/lib64 и копируем файлы libmysqlclient.so.15.0.0 и @libmysqlclient.so.15 в каталог /usr/lib64/<br / >
+
Выкачиваем данный пакет, открываем в mc, идем с CONTENTS.cpio, потом в usr/lib64 и копируем файлы libmysqlclient.so.15.0.0 и @libmysqlclient.so.15 в каталог /usr/lib64/ для 64 битной ОС или в /usr/lib для 32 битной<br / >
 
После этого снова проверяем, с помощью ldd и должны получить  
 
После этого снова проверяем, с помощью ldd и должны получить  
 
<pre># ldd libts3db_mysql.so  
 
<pre># ldd libts3db_mysql.so  
Строка 85: Строка 86:
 
         libdl.so.2 => /lib64/libdl.so.2 (0x00007f150a272000)
 
         libdl.so.2 => /lib64/libdl.so.2 (0x00007f150a272000)
 
</pre>
 
</pre>
 +
 
==Запуск сервера==
 
==Запуск сервера==
 
===Первый запуск===
 
===Первый запуск===
Строка 103: Строка 105:
 
Для того чтобы наш сервер работал от имени пользователя ts3.<br />
 
Для того чтобы наш сервер работал от имени пользователя ts3.<br />
 
1.Меняем пользователя и группу папки /home/ts3
 
1.Меняем пользователя и группу папки /home/ts3
<pre># chown -R ts3:ts3 /home/ts</pre>
+
<pre># chown -R ts3:ts3 /home/ts3</pre>
2.Копируем файл ts3server_startscript.sh в файл /etc/rc.d/init.d/ts3</br>
+
2.Копируем файл ts3server_startscript.sh в файл /etc/rc.d/init.d/ts3 <br />
3.Правим файл /etc/rc.d/init.d/ts3
+
3.Правим файл /etc/rc.d/init.d/ts3. Полностью файл выводить не буду - покажу только изменения.<br />
<pre>#!/bin/bash              
+
Итак в начало файла после строки '''#!/bin/bash''', вставляем.
 +
<pre>             
 
#TeamSpeak 3               
 
#TeamSpeak 3               
 
#For TeamSpeak 3 server     
 
#For TeamSpeak 3 server     
Строка 113: Строка 116:
 
#                           
 
#                           
 
# Starts the TeamSpeak 3 daemon
 
# Starts the TeamSpeak 3 daemon
#                          
+
#
# chkconfig: 255 99 10    
+
# chkconfig: 255 99 10
 
# description: Runs commands scheduled by the at command at the time \
 
# description: Runs commands scheduled by the at command at the time \
 
#    specified when at was run, and runs batch commands when the load \
 
#    specified when at was run, and runs batch commands when the load \
#    average is low enough.                                          
+
#    average is low enough.
# processname: atd                                                    
+
# processname: atd
#                                                                    
+
#
### BEGIN INIT INFO                                                  
+
### BEGIN INIT INFO
# Provides: atd at                                                   
+
# Provides: TeamSpeak
# Default-Start: 3 4 5                                                
+
# Required-Start: $network
# Short-Description: Starts the at daemon                             
+
# Required-Stop: $network
# Description: Runs commands scheduled by the at command at the time 
+
# Should-Start: $named mysqld postgresql ldap saslauthd
#              specified when at was run, and runs batch commands when
+
# Should-Stop: $named mysqld postgresql ldap saslauthd
#              the load average is low enough.                       
+
# Default-Start: 2 3 4 5
### END INIT INFO                                                    
+
# Short-Description: Starts the ts3 server
 +
# Description: TeamSpeak  is flaxible, voice Server
 +
### END INIT INFO
 +
                                             
  
 
# Source function library.
 
# Source function library.
Строка 145: Строка 151:
 
# Check that networking is up.
 
# Check that networking is up.
 
[ ${NETWORKING} = "no" ] && exit 0
 
[ ${NETWORKING} = "no" ] && exit 0
 
# Check that smb.conf exists.
 
#[ -f /etc/samba/smb.conf ] || exit 0
 
  
 
RETVAL=0
 
RETVAL=0
Строка 155: Строка 158:
 
#                               
 
#                               
  
 
+
</pre>
 
+
Изменяем строку с '''COMMANDLINE_PARAMETERS'''
# Copyright (c) 2010 TeamSpeak Systems GmbH
+
<pre>
# All rights reserved                     
 
 
 
 
COMMANDLINE_PARAMETERS="inifile=ts3server.ini" #add any command line parameters you want to pass here
 
COMMANDLINE_PARAMETERS="inifile=ts3server.ini" #add any command line parameters you want to pass here
 
BINARYPATH="/home/ts3/teamspeak3-server_linux-amd64"                                                                               
 
BINARYPATH="/home/ts3/teamspeak3-server_linux-amd64"                                                                               
 
USER="ts3"                                                                                           
 
USER="ts3"                                                                                           
 
+
</pre>
if [ -e "$BINARYPATH/ts3server_linux_x86" ]; then
+
Закоментировать строки с проверкой на root
        BINARYNAME="ts3server_linux_x86"       
+
<pre>
else                                           
+
                 #if [ "${UID}" = "0"  $USER = "root" ]; then
        BINARYNAME="ts3server_linux_amd64"     
+
                 #      echo WARNING ! For security reasons we advise: DO NOT RUN THE SERVER AS ROOT
fi                                             
+
                 #      for c in $(seq 1 10); do
 
+
                 #              echo -n "!"
cd "${BINARYPATH}"
+
                 #              sleep 1
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                                                                                                 
 
                 #      done                                                                                                 
                 #      echo "!"                                                                                            
+
                 #      echo "!"
                 #fi                                                                                                        
+
                 #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
 
 
</pre>
 
</pre>
 +
И изменяем строку запуска<br />
 +
Было
 +
<pre>"./${BINARYNAME}" ${COMMANDLINE_PARAMETERS} > /dev/null & </pre>
 +
Стало<pre> su $USER -s "/bin/bash" -c "./${BINARYNAME} ${COMMANDLINE_PARAMETERS}" > /dev/null &</pre>
 +
 +
===Если забыли пароль admin===
 +
====Первый вариант====
 +
Взято [http://forum.firstvds.ru/viewtopic.php?t=5935&postdays=0&postorder=asc&start=165 тут]
 +
====Второй вариант====
 +
Как мне кажется намного более простой.<br />
 +
#Заранее, пока еще можем зайти администратором, создаем несколько ключей токенов.
 +
##На клиенте заходим администратором, идем '''Привилегии''' --> '''Ключи привилегий''' --> Нажимаем '''Create'''
 +
##Выбираем '''Type''' - '''Группа сервера''', '''Group''' - '''Server Admin''', '''Description''' - какое нибудь описание, что бы потом не забыть.
 +
##Несколько раз нажимаем кнопку  '''Создать'''.
 +
#Когда надо дать права админа какой нибудь машине
 +
##С помощью клиента, например phpmyadmin, смотрим таблицу '''tokens''' из базы данных '''ts3''' mysql.
 +
##Копируем оттуда '''token_key''' клиенту  в поле '''Привилегии''' --> '''Использовать ключ привилегий''' и нажимаем '''Ок'''
 +
===Web Интерфейс===
 +
Брать [http://addons.teamspeak.com/directory/tools/web-based/Teamspeak-3-Webinterface-by-Psychokiller.html тут]<br />
 +
Про установку все написано в install.txt<br />
 +
Очень удобно, зная пароль serveradmin, править некоторые значения.
 +
===При количестве клиентов 100, отключается звук в конференции===
 +
В настройке сервера по умолчанию стоит минимальное число клиентов в одном канале, при котором включается режим молчания = 100.<br />
 +
Для его изменения. Правая кнопка мыши на сервере -> '''Параметры виртуального сервера'''.<br />
 +
Идем во вкладку - '''Разное''' и меняем '''Min clients in Channel before silents''' на нужное.

Текущая версия на 06:40, 6 марта 2013

Наконец вышел новый сервер 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: TeamSpeak
# Required-Start: $network
# Required-Stop: $network
# Should-Start: $named mysqld postgresql ldap saslauthd
# Should-Stop: $named mysqld postgresql ldap saslauthd
# Default-Start: 2 3 4 5
# Short-Description: Starts the ts3 server
# Description: TeamSpeak  is flaxible, voice Server 
### 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 клиенту в поле Привилегии --> Использовать ключ привилегий и нажимаем Ок

Web Интерфейс

Брать тут
Про установку все написано в install.txt
Очень удобно, зная пароль serveradmin, править некоторые значения.

При количестве клиентов 100, отключается звук в конференции

В настройке сервера по умолчанию стоит минимальное число клиентов в одном канале, при котором включается режим молчания = 100.
Для его изменения. Правая кнопка мыши на сервере -> Параметры виртуального сервера.
Идем во вкладку - Разное и меняем Min clients in Channel before silents на нужное.