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

Материал из Wiki МИАЦ ВО
Перейти к навигации Перейти к поиску
(Проверка библиотек)
(Настройка сервиса запуска сервера)
Строка 105: Строка 105:
 
<pre># chown -R ts3:ts3 /home/ts</pre>
 
<pre># chown -R ts3:ts3 /home/ts</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     
Строка 145: Строка 146:
 
# 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: Строка 153:
 
#                               
 
#                               
  
 
+
</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>

Версия 08:30, 15 марта 2010

Наконец вышел новый сервер 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

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 &