Создать сервер TF2 на linux

Обсуждаем все, что относится к выделенным серверам *NIX (Unix, Linux) и Windows
Сообщение
Автор
Rassol2
Сержант
Сержант
Сообщения: 43
Зарегистрирован: 16.02.2011

#1 Сообщение 11.09.2011, 19:39

TF2 сервер нужно пачить , так как теперь он открытый?
и ести ли скрипт запуска сервера. такой же как и на кс 1.6

Код: Выделить всё

#!/bin/bash
# chkconfig: 2345 95 20
# description: HLDS Start Script
# Start HLDS Server
# processname: hlds
# author: LeXiKoN http://eqline.ru
# version: 0.94

# Source function library.
. /etc/init.d/functions

#echo "$PATH"

VERSION=0.94

#####################################################
# Конфигурирование
#####################################################

#SERVER_NAME="My Server" #Название сервера
screen_name=cs #Название screen-сессии
path="/home/rassol2/Документы/Сервера"  #Путь до ROOT-директории сервера
hlds_ip=localhost #IP сервера
hlds_port=27015  #Порт сервера
hlds_gametype=cstrike  #Тип игры
hlds_players=13 #Максимальное количество игроков на сервере
hlds_map=de_dust2 #Имя первоначальной карты при запуске
hlds_pid=server.pid
screen_pid=$screen_name-screen.pid
hlds_options="+exec server.cfg"  #Дополнительные параметры запуска
use_user=cs #Имя юзера от которого запускается сервер
condebug=0
check_version=0
checker_command="qstat" #Команда пакета qStat отвечающего за проверку сервера 


#################	ВНИМАНИЕ	###################
#
# Строчки ниже, если не знаете, лучше не трогать!
#
#################	ВНИМАНИЕ	###################
просто хочу поднять сервер TF2 на линуксе и мне нужна ваша помочь.

Аватара пользователя
Dev
Майор
Майор
Сообщения: 601
Зарегистрирован: 07.05.2011
Откуда: Одесса
Благодарил (а): 5 раз
Поблагодарили: 48 раз
Контактная информация:

#2 Сообщение 13.09.2011, 15:33

Патчить теперь ничего не надо =)
Игра бесплатная! Просто скачиваешь через hldsupdatetools и дальше настраиваешь как тебе надо)

Скрипт запуска для Source серверов где-то видел, но не помню где.

Rassol2
Сержант
Сержант
Сообщения: 43
Зарегистрирован: 16.02.2011

#3 Сообщение 13.09.2011, 20:41

Dev_ua
спасибо друг.

Соурс скрипт вполне подходит под TF2 ?

Rassol2
Сержант
Сержант
Сообщения: 43
Зарегистрирован: 16.02.2011

#4 Сообщение 19.09.2011, 01:09

Допустим с этим разобрались а как обстоят дела с правами? какие права на какие каталоги задавать для запуска ?

Аватара пользователя
Dev
Майор
Майор
Сообщения: 601
Зарегистрирован: 07.05.2011
Откуда: Одесса
Благодарил (а): 5 раз
Поблагодарили: 48 раз
Контактная информация:

#5 Сообщение 19.09.2011, 17:19

Rassol2 писал(а):Допустим с этим разобрались а как обстоят дела с правами? какие права на какие каталоги задавать для запуска ?
вот 2 скрипта от того же автора, что и скрипт который ты указал в 1-м посту)

один скрипт для дебиана, другой под дистрибьютивы основанные на Redhat (centos, fedora...)
Вложения
srcds.zip
(7.02 КБ) 151 скачивание
srcds.zip
(7.02 КБ) 151 скачивание

raiden_satan
Лейтенант
Лейтенант
Сообщения: 127
Зарегистрирован: 19.07.2011
Поблагодарили: 1 раз

#6 Сообщение 19.09.2011, 20:13

Как на сервере ТФ2 запретить оружие?

Rassol2
Сержант
Сержант
Сообщения: 43
Зарегистрирован: 16.02.2011

#7 Сообщение 21.10.2011, 01:11

Взял скрипт и оформил его и у меня получилось вот что
SERVER_NAME="My Server" #Название сервера
screen_name=rassol2 #Название screen-сессии
path="/home/rassol2" #Путь до ROOT-директории сервера
srcds_ip=88.888.888.888 #IP сервера
srcds_port=27015 #Порт сервера
srcds_gametype=tf #Тип игры
srcds_players=20 #Максимальное количество игроков на сервере
srcds_map=cp_dustbowl #Имя первоначальной карты при запуске
srcds_pid=server.pid
screen_pid=$screen_name-screen.pid
srcds_options="-pingboost 3 +exec server.cfg +log on" #Дополнительные параметры запуска
use_user=rassol2 #Имя юзера от которого запускается сервер
condebug=1
check_version=0
checker_command="gstat" #Команда пакета qStat отвечающего за проверку сервера
restarttime=10 #Время после которого сервер будет перезагружен ( выводится в чат на сервере )

#----------------------------------------------------
# Номер ядра/процессора в линуксе.
# 2х-ядерные: 0 - первое ядро, 1 - второе ядро
# 4x-ядерные: 0 - первое ядро ... 3 - четвертое ядро
# По аналогии с другими многоядерными процессорами
use_core=0123
И при запуске вот что выводит

Код: Выделить всё

root@debian:/home/rassol2# /etc/init.d/serverTF restart
 Невозможно остановить My Server, сервер НЕ запущен [ FAIL ]
sched_setaffinity: Invalid argument
failed to set pid 0's affinity.
 [>>] Запуск сервера My Server 
	 Порт севрера: 27015
	 Привязка к ядру: 0123
	 Запуск от юзера: rassol2
	 Статус: 
И сервер не работает :( при попытке просмотреть screen -x rassol2 выводит:

Код: Выделить всё

root@debian:~# screen -x rassol2
There are several suitable screens on:
	24981.rassol2	(10/21/2011 12:00:45 AM)	(Detached)
	24863.rassol2	(10/21/2011 12:00:08 AM)	(Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
root@debian:~# 
вот такие вот пироги. :(

Аватара пользователя
bigbrain911
Майор
Майор
Сообщения: 618
Зарегистрирован: 22.03.2010
Откуда: http://zloy.pl.ua/
Поблагодарили: 11 раз
Контактная информация:

#8 Сообщение 21.10.2011, 02:57

Добавлено спустя 5 минут 11 секунд:

И сервер не работает :( при попытке просмотреть screen -x rassol2 выводит:

Код: Выделить всё

root@debian:~# screen -x rassol2
There are several suitable screens on:
	24981.rassol2	(10/21/2011 12:00:45 AM)	(Detached)
	24863.rassol2	(10/21/2011 12:00:08 AM)	(Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
root@debian:~# 
вот такие вот пироги. :(
Здесь вам сервер говорит что у вас запущено 2 скрина с одинаковыми именами, нужно ввести pid т.е. screen -x 24981 или 24863 и не запускайте сервера под рутом.


Не понимаю зачем такие сложные скрипты для запуска, прослушки и т.д.
Так как адекватных и простых скриптов в инете не нашел сделал так:
делаешь 2 файла скирптов .sh

1-й которым будешь запускать 2-й кладешь в любое место

Код: Выделить всё

#!/bin/sh
echo "Starting TF2"
sleep 1
screen -A -m -d -S tf2 /****/servers/tf2/orangebox/tf2.sh
где tf2 имя screen, tf2.sh имя 2-ого скрипта, **** папка юзера

2-й должен находиться в папке с сервером (tf2/orangebox/)

Код: Выделить всё

#!/bin/sh
while true ; do
/****/servers/tf2/orangebox/srcds_run -console -game tf -tickrate 66 +ip 0.0.0.0 +fps_max 300 +maxplayers 32 -port 27018 +tv_port 27054 +map pl_badwater +sv_lan 0
done
Принцип прост, 1-й скрипт запускает 2-й в скрине + если сервер падает то автоматически в скрине и перезапускается, прослушками и прочей сранью не пользуюсь так как сервера в идеале не должны не виснуть не падать, а все остальное зависит от вас.
Надеюсь как со скринами обращаться знаете.
Последний раз редактировалось bigbrain911 21.10.2011, 02:59, всего редактировалось 6 раз.
i7-3770k, Asus P8Z77-V PRO, Team 2x4Gb 2000MHz, MSI 560GTX-Ti 2048MB, ssd 120gb+ 2 hdd 1Tb, HAF 912+
Панели управления игровыми серверами
http://zloy.pl.ua

Аватара пользователя
SeregaIRK
Лейтенант
Лейтенант
Сообщения: 172
Зарегистрирован: 07.02.2010
Откуда: Иркутск

#9 Сообщение 21.10.2011, 12:55

А как приоритет процессу srcds_run задать?
Intel® Core™ i7-2600K, ASUS LGA 1155 P8Z68-V, DIMM DDR-3 2x4Gb 1600MHz Corsair Vengeance, ASUS GTX 560 Ti TOP...

Аватара пользователя
Dev
Майор
Майор
Сообщения: 601
Зарегистрирован: 07.05.2011
Откуда: Одесса
Благодарил (а): 5 раз
Поблагодарили: 48 раз
Контактная информация:

#10 Сообщение 21.10.2011, 15:15

SeregaIRK писал(а):А как приоритет процессу srcds_run задать?
man nice

Аватара пользователя
SeregaIRK
Лейтенант
Лейтенант
Сообщения: 172
Зарегистрирован: 07.02.2010
Откуда: Иркутск

#11 Сообщение 23.10.2011, 07:50

Dev_ua писал(а):
SeregaIRK писал(а):А как приоритет процессу srcds_run задать?
man nice
Тоесть примерно так да?
... ./srcds_run man nice ...
Intel® Core™ i7-2600K, ASUS LGA 1155 P8Z68-V, DIMM DDR-3 2x4Gb 1600MHz Corsair Vengeance, ASUS GTX 560 Ti TOP...

Аватара пользователя
xiloid
Капитан
Капитан
Сообщения: 341
Зарегистрирован: 30.10.2008
Поблагодарили: 3 раза

#12 Сообщение 23.10.2011, 13:41

SeregaIRK писал(а): Тоесть примерно так да?
... ./srcds_run man nice ...
Вообще не так, это он тебя послал курить маны просто :D
# nice -10 ./start.sh - вот так будет лучше, к примеру. А вообще, КСС по умолчанию запускается с УЖЕ достаточным приоритетом.

Rassol2
Сержант
Сержант
Сообщения: 43
Зарегистрирован: 16.02.2011

#13 Сообщение 11.11.2011, 22:38

Здесь вам сервер говорит что у вас запущено 2 скрина с одинаковыми именами, нужно ввести pid т.е. screen -x 24981 или 24863 и не запускайте сервера под рутом.
но типерь
при запуске вот что я вижу

Код: Выделить всё

tf@debian:~# /etc/init.d/tf1 restart
 Невозможно остановить My Server, сервер НЕ запущен [ FAIL ]
 [>>] Запуск сервера My Server 
	 Порт севрера: 27035
	 Привязка к ядру: 0
	 Запуск от юзера: tf1
	 Статус: tf1@debian:~# 

И в htop вижу процес он временами начинает есть 86% CPU но через HLSW невижу что бы сервер на нужном порту встал

Аватара пользователя
cuttep
Капитан
Капитан
Сообщения: 446
Зарегистрирован: 26.06.2010
Откуда: http://www.evoplay.ru
Поблагодарили: 1 раз
Контактная информация:

#14 Сообщение 12.11.2011, 08:34

линух не всем дается 8-)

Аватара пользователя
Dev
Майор
Майор
Сообщения: 601
Зарегистрирован: 07.05.2011
Откуда: Одесса
Благодарил (а): 5 раз
Поблагодарили: 48 раз
Контактная информация:

#15 Сообщение 12.11.2011, 13:01

Rassol2 писал(а):
Здесь вам сервер говорит что у вас запущено 2 скрина с одинаковыми именами, нужно ввести pid т.е. screen -x 24981 или 24863 и не запускайте сервера под рутом.
но типерь
при запуске вот что я вижу

Код: Выделить всё

tf@debian:~# /etc/init.d/tf1 restart
 Невозможно остановить My Server, сервер НЕ запущен [ FAIL ]
 [>>] Запуск сервера My Server 
	 Порт севрера: 27035
	 Привязка к ядру: 0
	 Запуск от юзера: tf1
	 Статус: tf1@debian:~# 

И в htop вижу процес он временами начинает есть 86% CPU но через HLSW невижу что бы сервер на нужном порту встал
хех блин..там всё нормально, просто скрипт начинает опрашивать сервер до того, как он успеет запустится!

сделай так!

В секции start () перед:

Код: Выделить всё

	if [ -f $path/$srcds_pid ] && [ -f $path/$screen_pid ]; then
		ch=`ps -ef | grep SCREEN | grep $screen_name`
		if [ -n "$ch" ]; then
			printf "$succes\n"
		else
			printf "$failed\n"
		fi
	fi
Поставь

Код: Выделить всё

sleep 10

Должно получится что-то вроде:

Код: Выделить всё

start() {
	# Проверка престартовая
	prestart_check
	cd $path
	# Запускаем сервер
	$INTR sudo -u $use_user ./srcds_run -game $srcds_gametype +maxplayers $srcds_players +map $srcds_map +ip $srcds_ip -port $srcds_port $srcds_options -pidfile $path/$srcds_pid
	# Поиск и запись пидов процессов сервера и скрина в системе
	ps -ef | grep SCREEN | grep "$screen_name" | grep -v grep | awk '{ print $2}' > $path/$screen_pid
	printf "$title\033[1;34m Запуск сервера $SERVER_NAME \033[0m\n"
	printf "\t\033[1;35m Порт севрера:\033[0m \033[1;36m$srcds_port\033[0m\n"
	printf "\t\033[1;35m Запуск от юзера:\033[0m \033[1;36m$use_user\033[0m\n"
	printf "\t\033[1;33m Статус: \033[0m"
	sleep 10
	if [ -f $path/$srcds_pid ] && [ -f $path/$screen_pid ]; then
		ch=`ps -ef | grep SCREEN | grep $screen_name`
		if [ -n "$ch" ]; then
			printf "$succes\n"
		else
			printf "$failed\n"
		fi
	fi
}
НЕ КОПИРУЙ ГОТОВЫЙ КОД, ИБО МОГУТ БЫТЬ ОТЛИЧИЯ!


Я вообще этот скрипт почти полностью переписывал под себя и под полную работу с Source...

Ответить Вложения 3