Настраиваем функцию Replay на сервере TF2

В данном HOWTO я расскажу как активировать настроить функцию Replay на выделенном сервере TF2. Возможно два сценария:

  1. веб-сервер находится на той же машине, что и игровой сервер TF2;
  2. веб-сервер находится на другой машине.

Наличие веб-сервера обязательно, т.к. с него клиенты будут скачивать записанные сервером демки. Сервер должен отдавать файлы напрямую без редиректов, поэтому бесплатные не подойдут для этой цели.

Подробности читайте под катом.

Настройка по сценарию 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.

24 commentary to post

  1. Сделал всё как сказано, в списке серверов указывается, что возможность записи есть, но консоль сервера отвечает «ERROR: Replay not active.» и игроки записывать ни чего не могут, как исправить?

  2. @mr_0003Spy
    Если сервер на Linux, проверьте пути. У сервера должны быть права на запись в каталоги как веб-сервера, так и к /replays в каталоге самого сервера. Поставьте chmod 777 (хотя 777 и категорически не рекомендуется) на них если не хотите вручную ставить права через chown.

    Посмотрите в лог игрового сервера — там наверняка есть более подробная информация.

    Проверьте работоспособность HTTP-сервера (или FTP), который будет отдавать реплеи пользователям и правильно ли указан локальный путь в конфиге.

  3. У меня Windows, а где логи находятся? HTTP работает и путь указан верно.

  4. @mr_0003Spy
    Логи находятся в каталоге сервера, в подкаталоге logs.

    Не забывайте, что несмотря на то, что у Вас используется Windows, в конфигах стандартные для неё обратные слэши (\) недопустимы. Необходимо использовать прямые (/).

  5. В логах ни чего нет, а путь у меня указан «D:\Servers\tf2\orangebox\replays», если поставить обратные слеши, то сервер будет выдавать ошибку и отключать реплеи.

  6. @mr_0003Spy
    Логи-то сперва надо включить, вписав в конфиг сервера log on.

    А зачем указан D:\Servers\tf2\orangebox\replays? Там надо указывать каталог, который отдаётся локальным веб-сервером (Apache или nginx). При такой настройке клиенты естественно ничего не могут скачать.

  7. Логи то я естественно включил, я про то, что в файле лога нет ни чего того, что было бы информативным. А в D:\Servers\tf2\orangebox\replays я так понял туда будут сохранятся демки и этот каталог я указал в IIS. Апач должен стоять обязательно? Прост у меня его нет. Если нужен, то как установить и настроить? А то я мучися пытаясь разобратся как поднять сам веб сервер, на него PHP поставить и MySQL (не спрашивай зачем PHP и MySQL, это для другого дела).

  8. @mr_0003Spy
    Выложите всё содержимое конфига в части реплеев например на http://pastebin.com/, а ссылку сюда. Гляну, попробую найти ошибку.

    С IIS, к счастью, не приходилось сталкиваться. Я много работал с Apache, nginx, lighttpd. Поднять PHP и MySQL к апачу вообще элементарно, в сети есть сотни пошаговых руководств. Под Windows можно даже поднять nginx + php-cgi + mysql. Об этом здесь есть статья.

  9. http://pastebin.com/KWz1Qfc5

    А за статью спасибо, учту на будующее.

    Про IIS можно много статей найти в интернете, довольно таки простанькая вещь.

  10. Сообщение отправил, глянь в заблокированых.

  11. @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/.

  12. mr_0003Spy :

    Про IIS можно много статей найти в интернете, довольно таки простанькая вещь.

    Не перевариваю серверную продукцию Microsoft. Linux/FreeBSD мне куда больше нравится ;).

  13. @Vitaly
    Все ошибки исправил, сделал как ты сказал, но ни чего не произошло, всё по прежнему, консоль: http://pastebin.com/wENR6cPV

    Что ещё можно сделать?

  14. Глянь сообщение в заблокированых, я там всё что в консоли отправил, может это как то поможет.

  15. @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.

  16. @mr_0003Spy
    Да, и ещё: A ‘changelevel’ or ‘map’ is required – recording will begin at the start of the next round. Запись начнётся при следующей смене карты. Чтобы такого не было, нужно в параметрах запуска сервера прописать +replay_enable 1.

  17. @Vitaly
    Исправил, реплеи работают, съёмка идёт, но загружатся файлы не хотят, все реплеи выдают ошибку при загрузке на сервер, как быть?

    Vitaly :

    Да, и ещё: A ‘changelevel’ or ‘map’ is required – recording will begin at the start of the next round. Запись начнётся при следующей смене карты. Чтобы такого не было, нужно в параметрах запуска сервера прописать +replay_enable 1.

    Спасибо, учту.

  18. mr_0003Spy :

    @Vitaly
    Исправил, реплеи работают, съёмка идёт, но загружатся файлы не хотят, все реплеи выдают ошибку при загрузке на сервер, как быть?

    Я вижу, что сервер выдаёт листинг реплеев, но при обращении к любому файлу возникает ошибка 404, например, http://46.8.142.151/20110912-203213-itemtest_part_36.block. Снова неправильная настройка сервера, либо прав доступа к каталогу. На NTFS сервер создаёт файлы с правами пользователя, от которого он запущен, а веб-сервер соответственно не может получить к ним доступ, т.к. не разрешено наследование прав. Необходимо выдать права на чтение веб-серверу для каталога D:\Servers\tf2\orangebox\replays рекурсивно с наследованием. Это можно сделать в свойствах каталога в Проводнике на странице Безопасность.

  19. У меня там на всех группах и пользователях стоит полный доступ, может нужно кого-то определённого туда добавить? Если да, то кого?

  20. И кстати, если я добавляю туда какой нибудь другой файл, например музыку, то в браузере я могу спокойно скачать её =\

  21. Сделал систему реплеев по первому сценарию, но после смерти игрока, когда начинается обработка реплея, сервак падает. Это из-за недостатка мощности железа ? Железо у меня не топовое уж точно.

Обсуждение закрыто.