В данном HOWTO я расскажу как активировать настроить функцию Replay на выделенном сервере TF2. Возможно два сценария:
- веб-сервер находится на той же машине, что и игровой сервер TF2;
- веб-сервер находится на другой машине.
Наличие веб-сервера обязательно, т.к. с него клиенты будут скачивать записанные сервером демки. Сервер должен отдавать файлы напрямую без редиректов, поэтому бесплатные не подойдут для этой цели.
Подробности читайте под катом.
Настройка по сценарию 1
Если веб-сервер находится на той же машине, что и игровой сервер TF2 пропишите в конфиг сервера server.cfg следующие строки с нужными параметрами:
replay_fileserver_host "HTTP_HOST_OR_IP_ADDRESS" replay_fileserver_port "80" replay_fileserver_path "/replays" replay_local_fileserver_path "ЛОКАЛЬНЫЙ_ПУТЬ_К_КАТАЛОГУ/replays" replay_enable 1 replay_port 27040
Наибольшую сложность здесь представляет правильно записать хост веб-сервера. Например, у Вас есть сайт http://site.ru, на котором Вы будете размещать демки в каталоге /replays, т.е. URL вида http://site.ru/replays/. Согласно этому примеру, в конфиге сервера Вы должны записать (закрывающие слэши и указание протокола не требуется):
replay_fileserver_host "site.ru" replay_fileserver_path "/replays"
В переменной replay_local_fileserver_path нужно указать ЛОКАЛЬНЫЙ путь к каталогу с повторами (реплеями) локального веб-сервера. Для Windows — это путь вида «c:\webserver\htdocs\replays«, для Linux — «/home/username/public_html/replays» (закрывающий слэш не требуется). В этом каталоге сервер TF2 будет хранить реплеи, которые будут раздаваться клиентам с помощью веб-сервера. Обратите внимание на слэши: в Windows используются обратные (\), а в Linux — прямые (/).
В переменной replay_port нужно указать порт, который будет слушать сервер повторов. Заранее проверьте, чтобы указанный порт был свободен любым сканером портов.
Настройка по сценарию 2 (с использованием FTP)
Если веб-сервер и игровой сервер TF2 находятся на разных машинах, Вам потребуется веб-сервер и FTP.
Если у Вас нет веб-сервера, а сервер TF2 расположен на хостинге, купите домен и любой платный хостинг, затем создайте на нём каталог /replays и создайте FTP-аккаунт с помощью панели управления хостинга с рабочей папкой /replays. Это избавит Вас от большого количества проблем.
Итак, пропишите в конфиг сервера server.cfg следующее (естественно в модифицированном под Вашу конкретную систему варианте):
replay_fileserver_host "HTTP_HOST_OR_IP_ADDRESS" replay_fileserver_port "80" replay_fileserver_path "/replays" replay_enable 1 replay_port 27040 replay_fileserver_offload_enable 1 replay_fileserver_offload_hostname "IP_OR_HOSTNAME" replay_fileserver_offload_login "LOGIN" replay_fileserver_offload_password "PASSWORD" replay_fileserver_offload_protocol ftp replay_fileserver_offload_port 21 replay_fileserver_offload_remotepath /
Рассмотрим данные настройки более подробно.
В replay_fileserver_host и replay_fileserver_path укажите настройки веб-сервера (см. сценарий 1 выше): хост и путь к каталогу с реплеями на сервере.
В переменной replay_fileserver_offload_hostname укажите IP или имя хоста FTP-сервера, на который будут выгружать демки и реплеи, в replay_fileserver_offload_login и replay_fileserver_offload_password соответственно логин и пароль для доступа к этому FTP-серверу.
Если Вы не задали рабочим каталогом по умолчанию в профиле FTP каталог с реплеями и хотите использовать общий FTP-аккаунт, в replay_fileserver_offload_remotepath укажите путь к каталогу с реплеями на FTP-сервере. Этого делать настоятельно не рекомендуется из соображений безопасности (создайте отдельный FTP-аккаунт для выгрузки).
Заключение
Если Ваш сервер TF2 размещён на хостинге, при включении функции Replay, он может начать работать нестабильно и лагать. В случае появления лагов, отключите данную функцию, установив значение переменной replay_enable в 0.
Сделал всё как сказано, в списке серверов указывается, что возможность записи есть, но консоль сервера отвечает «ERROR: Replay not active.» и игроки записывать ни чего не могут, как исправить?
@mr_0003Spy
Если сервер на Linux, проверьте пути. У сервера должны быть права на запись в каталоги как веб-сервера, так и к /replays в каталоге самого сервера. Поставьте chmod 777 (хотя 777 и категорически не рекомендуется) на них если не хотите вручную ставить права через chown.
Посмотрите в лог игрового сервера — там наверняка есть более подробная информация.
Проверьте работоспособность HTTP-сервера (или FTP), который будет отдавать реплеи пользователям и правильно ли указан локальный путь в конфиге.
У меня Windows, а где логи находятся? HTTP работает и путь указан верно.
@mr_0003Spy
Логи находятся в каталоге сервера, в подкаталоге logs.
Не забывайте, что несмотря на то, что у Вас используется Windows, в конфигах стандартные для неё обратные слэши (\) недопустимы. Необходимо использовать прямые (/).
В логах ни чего нет, а путь у меня указан «D:\Servers\tf2\orangebox\replays», если поставить обратные слеши, то сервер будет выдавать ошибку и отключать реплеи.
@mr_0003Spy
Логи-то сперва надо включить, вписав в конфиг сервера log on.
А зачем указан D:\Servers\tf2\orangebox\replays? Там надо указывать каталог, который отдаётся локальным веб-сервером (Apache или nginx). При такой настройке клиенты естественно ничего не могут скачать.
Логи то я естественно включил, я про то, что в файле лога нет ни чего того, что было бы информативным. А в D:\Servers\tf2\orangebox\replays я так понял туда будут сохранятся демки и этот каталог я указал в IIS. Апач должен стоять обязательно? Прост у меня его нет. Если нужен, то как установить и настроить? А то я мучися пытаясь разобратся как поднять сам веб сервер, на него PHP поставить и MySQL (не спрашивай зачем PHP и MySQL, это для другого дела).
@mr_0003Spy
Выложите всё содержимое конфига в части реплеев например на http://pastebin.com/, а ссылку сюда. Гляну, попробую найти ошибку.
С IIS, к счастью, не приходилось сталкиваться. Я много работал с Apache, nginx, lighttpd. Поднять PHP и MySQL к апачу вообще элементарно, в сети есть сотни пошаговых руководств. Под Windows можно даже поднять nginx + php-cgi + mysql. Об этом здесь есть статья.
http://pastebin.com/KWz1Qfc5
А за статью спасибо, учту на будующее.
Про IIS можно много статей найти в интернете, довольно таки простанькая вещь.
Сообщение отправил, глянь в заблокированых.
@mr_0003Spy
А вот и причина: replay_fileserver_host «localhost». Здесь должен быть указан внешний IP, либо имя хоста локального веб-сервера, доступного из Интернета всем пользователям.
Здесь тоже несостыковки: replay_fileserver_path «/replays» и replay_local_fileserver_path «D:\Servers\tf2\orangebox\replays». Если стартовый каталог в веб-сервере для хоста указан как D:\Servers\tf2\orangebox\replays, то в переменной replay_fileserver_path нужно указать просто «/», т.е. корневой каталог.
Проверить работу можно просто открыв в браузере http://ВНЕШНИЙ_IP/.
Не перевариваю серверную продукцию Microsoft. Linux/FreeBSD мне куда больше нравится ;).
@Vitaly
Все ошибки исправил, сделал как ты сказал, но ни чего не произошло, всё по прежнему, консоль: http://pastebin.com/wENR6cPV
Что ещё можно сделать?
Глянь сообщение в заблокированых, я там всё что в консоли отправил, может это как то поможет.
@mr_0003Spy
Глянул. Снова ошибка:
wget -E http://46.8.142.151/
—2011-09-12 13:33:56— http://46.8.142.151/
Connecting to 46.8.142.151:80… connected.
HTTP request sent, awaiting response… 403 Forbidden
2011-09-12 13:33:57 ERROR 403: Forbidden.
Сервер отвечает 403 — доступ запрещён, а должен отдавать файлы. Хотя, подёргал разные случайные файлы — отдаёт 404, значит должен работать. Советую попробовать поместить в каталог игрового сервера, установленный как начальный для веб (D:\Servers\tf2\orangebox\replays), любой файл и проверить работу веб-сервера, скачав через браузер по внешнему IP.
@mr_0003Spy
Да, и ещё: A ‘changelevel’ or ‘map’ is required – recording will begin at the start of the next round. Запись начнётся при следующей смене карты. Чтобы такого не было, нужно в параметрах запуска сервера прописать +replay_enable 1.
@Vitaly
Исправил, реплеи работают, съёмка идёт, но загружатся файлы не хотят, все реплеи выдают ошибку при загрузке на сервер, как быть?
Спасибо, учту.
Я вижу, что сервер выдаёт листинг реплеев, но при обращении к любому файлу возникает ошибка 404, например, http://46.8.142.151/20110912-203213-itemtest_part_36.block. Снова неправильная настройка сервера, либо прав доступа к каталогу. На NTFS сервер создаёт файлы с правами пользователя, от которого он запущен, а веб-сервер соответственно не может получить к ним доступ, т.к. не разрешено наследование прав. Необходимо выдать права на чтение веб-серверу для каталога D:\Servers\tf2\orangebox\replays рекурсивно с наследованием. Это можно сделать в свойствах каталога в Проводнике на странице Безопасность.
У меня там на всех группах и пользователях стоит полный доступ, может нужно кого-то определённого туда добавить? Если да, то кого?
И кстати, если я добавляю туда какой нибудь другой файл, например музыку, то в браузере я могу спокойно скачать её =\
@mr_0003Spy
Сейчас файлы отлично скачиваются. Система реплеев должна работать.
Точно, благодарю за помощь =)
Сделал систему реплеев по первому сценарию, но после смерти игрока, когда начинается обработка реплея, сервак падает. Это из-за недостатка мощности железа ? Железо у меня не топовое уж точно.
@Gorge
Что сервер пишет в логи при падении?