Выделенный сервер под Linux
Содержание
Установка
Напишите в терминале строки находящиеся ниже
sudo apt-get install lib32gcc1 (for 64-bit platform) wget http://www.steampowered.com/download/hldsupdatetool.bin chmod +x hldsupdatetool.bin ./hldsupdatetool.bin type yes ./steam ./steam -command update -game tf -dir .
Запуск
cd orangebox ./srcds_run -game tf +map cp_badlands
Init-script для запуска сервера
#!/bin/bash # # chkconfig 345 80 20 # # Startup script # Gameserver: generic for srcds_run # Credits: Zack # Version: 1.00 # # # NOTE: # game_type variable indicates what game should be started. Generally, it is just prefix for ACTUAL start script. # Consider to make changes to this script by hand. # Add user called "gameserver" or change variable "server_user". Running under root is strongly discouraged. #variables server_user="gameserver" server_install_path="/home/gameserver/engine" game_name="tf2" startup_command="$game_name-startup.sh" RETVAL=0 # start and stop functions start() { echo "Gameserver will be running under user $server_user" echo "Starting gameserver..." chown -R $server_user:$server_user $server_install_path su - $server_user -c "$server_install_path/$startup_command > /dev/null 2>&1 &" RETVAL=$? return $RETVAL } stop() { PID=`ps axu | grep -v gameserver | grep 1000 | awk '{print $2}'` if [ "$PID" != "" ] then echo "Stopping gameserver (PID $PID)..." kill -9 $PID sleep 2 else echo "Gameserver is already stopped" fi } status() { PID=`ps axu | grep -v gameserver | grep 1000 | awk '{print $2}'` if [ "$PID" != "" ] then echo "Gameserver is running and have pids $PID" else echo "Gameserver is stopped" fi } case "$1" in start) start ;; stop) stop ;; restart) stop sleep 2 start ;; status) status ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac exit $RETVAL
- В директории с сервером лежит скрипт для запуска сервера, который вызывает инит скрипт. Пример скрипта:
#!/bin/bash if [ "$1" != "" ]; then MAP=$1 else MAP='mvm_mannworks' fi cd /home/gameserver/engine/team-fortress/orangebox/ ./srcds_run -game tf -maxplayers 32 +map $MAP
Правила iptables
-A INPUT -i venet0 -p tcp -m tcp --dport 27015 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -i venet0 -p tcp -m tcp --dport 27005 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -i venet0 -p udp -m udp --dport 27015 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -i venet0 -p udp -m udp --dport 27005 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -i venet0 -p tcp -m tcp --dport 27016 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -i venet0 -p tcp -m tcp --dport 27017 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -i venet0 -p tcp -m tcp --dport 27018 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -i venet0 -p tcp -m tcp --dport 27019 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -i venet0 -p tcp -m tcp --dport 27020 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -i venet0 -p udp -m udp --dport 27016 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -i venet0 -p udp -m udp --dport 27017 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -i venet0 -p udp -m udp --dport 27018 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -i venet0 -p udp -m udp --dport 27019 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -i venet0 -p udp -m udp --dport 27020 -m state --state NEW,ESTABLISHED -j ACCEPT
- Замечание: если работает модуль multiports, то можно вместить всё в два правила.
- Замечание: измените имя интерфейса (venet0) в соответствии с вашими настройками системы.
Замечания
- Выделенный сервер не требует прав суперпользователя (root) для установки и запуска. Рассмотрите установку отдельной учётной записи пользователя для выделенного сервера (hlds).
- Если ваш сервер использует 64-битную (AMD64) версию Linux, возможно вам понадобится установить некоторые пакеты для 32-битной поддержки (binary compatibility). Если у вас установлен дистрибутив Debian, просто напишите в терминале sudo aptitude install ia32-libs, это должно помочь.
- server.cfg находится в папке orangebox/tf/cfg. Для информации по настройке сервера посмотрите Dedicated server configuration.
- Не забудьте открыть порты 27000-27015 в вашем сетевом экране, если он у вас установлен.