1. msmrbtsk Пользователь

    Регистрация:
    29.03.15
    Сообщения:
    365
    Симпатии:
    94
    Пол:
    Мужской
    На сегодняшний момент, не смотря на то что Counter-Strike 1.6 потихоньку умирает, а игровой "рынок" индустрией завладела CS:GO которая по моему мнению на 95% состоит из торговой площадки и на 5% из игры, довольно актуальна тема о том как поднять свой сервер с минимальными вложениями но при этом добиться хорошего результата, а главное что это будет стоить дешевле чем на хостингах серверов. Да, хостинг сервер проще, ведь там все практически готово, оплатил, запустил, поставил плагины и играешь, а тут надо будет все ручками сделать, но ведь когда сделаешь сам, получишь хороший опыт, а главное потратишь и будешь тратить меньше чем за аренду сервера.

    Стоит учитывать что при низких вложениях, не стоит ожидать от сервера сверхпроизводительности, в данном случае вы добьетесь 500 - 700 FPS при 32 слотах, это вполне нормально, но если поставить 20 - 24 слота, то будет очень все приятненько.

    В чем плюсы иметь сервер на VPS/VDS?

    • Вы всегда имеете доступ к корню, мета плагинам, не придётся просить недороботников поддержки изменить Вам GameName в dproto.cfg или что-то еще.
    • Вы помимо сервера можете поставить на машину все что угодно, amxbans, быструю загрузку, да и все остальное что душе угодно.
    • Вы всегда будете сами в ответе за работоспособность сервера, не придется гадать почему сервер упал и не работает ( авось тп виноваты или еще чето )
    • Нету никаких ограничение на тикрейт и прочее, все вы регулируете и крутите сами.
    Перейдем в выбору VPS
    Пинг конечно упирается в выбор локации. Тут долго говорить не стоит.

    Как правило, OpenVZ самые дешевые, XEN самые дорогие, но можно найти XEN c теми же характеристиками дешевле, чем у некоторых OpenVZ. Не вдаваясь в подробности и различие между виртуализацией и контейнерами, скажем кратко: OpenVZ если брать - то очень осторожно, если что просить на тест или спрашивать у техподдержки значение dgramrcvbuf (это в cat /proc/user_beancounters, бывает агент техподдержки не знает что это такое). Если значение порядка 200 тыс - такой сервер фтопку, 600 тыс уже можно смотреть, но лучше брать где 1-2 млн. Дело в том, что CS работает по протоколу UDP, и при смене карты (когда в пике количество приходящих и отправляемых пакетов) при низком dgramrcvbuf игроков выкидывает с сервера по таймауту, это годиться только для фейков и редиректов :)
    Еще внимательно прочитайте правила хостера или спросите, что с CPU. Есть хостеры, которые ограничивают процессорную нагрузку, скажем, до 800 Мгц. Этого достаточно только на 22 слота, не больше, дальше проседает FPS. Был такой классный VPS хостинг EOMY.NET, они раньше вообще не ограничивали использование процессора, и можно было держать пару серверов за $8 в месяц, но потом случился набег лиц нетрадиционной сексуальной ориентации, которые вздумали майнить биткоины на CPU (тут подтверждается их ориентация, на CPU уже давно никто не майнит), и хостер ввел автоматическое ограничение использования процессора.
    Ну, и кроме всего прочего, случается такое что у одного и того же хостера на одном и том же тарифе в разных локациях производительность физического сервера отличается в разы, потому в одной локации игровой сервер держит 32 с нормальным FPS, а в другой локации проседает уже при 16 игроках.

    Однако не забывайте учитывать что с выходом ReHLDS нагрузка на сервер снизилась! И если Вы будете использовать ReHLDS то все у вас потянет и получится,!

    Рекомендации:
    - http://abc-server.com/ - на данный момент скидки на SX1-SX5. Начиная с SX2 за 2$ можно очень много-го добиться.

    В качестве ОС чтобы не напрягаться рекомендую последний Debian или Centos. Эта статья написана под Centos.
    Итак, что мы имеем?
    Чистый VPS с базовой ОС. В лучшем случае у Вас будет еще и Apache+MySQL.
    Первым делом запускаем yum update, если не хотите лагов потом - это обязательно.

    1. Начальная установка ПО
    Далее, если взяли XEN и нет SWAP, делаем его сами (на OpenVZ не канает, пропускаем).
    Код:
    dd if=/dev/zero of=/swap bs=1024 count=512000 (это значит 512мб)
    mkswap /swap
    swapon /swap
    Смотрим top - должно быть написано
    Код:
    Swap: 511992k total
    Хоть это и не полноценная память, но это спасет от вылета процессы, в случае острой нехватки памяти.
    Что нам еще понадобится? Midnight commander
    Код:
    yum install mc
    Сразу идем в Options -> Configuration и ставим плюху напротив Use internal edit, иначе задолбаетесь искать как выйти из того гуано, которое идет по умолчанию :)

    Если будем использовать Amxbans или другую систему, требующую БД, ставим MySQL если его нет по умолчанию.
    Код:
    yum install mysql mysql-server
    chkconfig --levels 235 mysqld on
    /etc/init.d/mysqld start
    В этот момент пароль пустой. Задаем свой:
    Код:
    mysql_secure_installation
    Вбиваем текущий пустой, жмем ентер. На Установить пароль? отвечаем "у", жмем ввод 2 раза,
    Убрать анонимных юзеров? у
    Disallow root remote y
    убрать тестовые базы у
    Обновить привилегии у


    Теперь если у нас нет апача - ставим.
    Код:
    yum install httpd
    chkconfig --levels 235 httpd on
    /etc/init.d/httpd start
    
    yum install php
    /etc/init.d/httpd restart
    Создаем в /var/www/index.php и вставляем туда <? phpinfo(); ?>
    Заходим по http://IP АДРЕС/ и смотрим - если открывается исходник значит php не стал :)

    По умолчанию Апач устанавливается prefork, к сожалению, но фиг с ним. Worker жрет меньше памяти, но, ИМХО, в этом случае проще снести апач и поставить Lighttpd.

    Далее доставляем модули PHP:
    Код:
    yum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc
    (лишнее вычеркнуть) и перегружаем апач.
    /etc/init.d/httpd restart
    Осталось сказать, что все настройки веб сервера лежат в /etc/httpd/conf/httpd.conf
    а настройки пхп в /etc/php.ini.
    В /etc/httpd/conf/httpd.conf целесообразно добавить VirtualHost с вашим доменом по образу и подобию существующего шаблона и залить контент (AMXBans?) в указанный каталог.

    2. Оптимизация конфигураций
    Теперь немного оптимизируем конфигурацию.
    Прописываем ulimit -s и видим по умолчанию 10240 (на многих серверах 8192). Это, мягко говоря, много, и ведет к лишнему расходу памяти. По собственному опыту знаю что 2048 хватит с головой.
    Далее ulimit -n - это количество одновременно открытых файлов. Опять же по своему опыту замечал что 1024 мало, а некоторые процессы при превышении не вылетают с ошибкой чтобы перезапуститься, а наглухо зависают.
    Чтобы этого не происходило, изменим на те же 2048. Теперь пропишем это жестко:
    Открываем /etc/security/limits.conf
    дописываем в конец
    Код:
    * soft stack 2048
    * hard stack 2048
    * soft nofile 2048
    * hard nofile 2048
    Не забывает сохранить и выходим.

    В httpd.conf лучше поставить:

    Код:
    KeepAlive Off (насколько я знаю, CS не умеет запрашивать несколько файлов через то же соединение, или уже умеет?)
    MaxKeepAliveRequests 20 - хватит
    KeepAliveTimeout 10 - уменьшить до этого значения.
    находим
    #prefork MPM
    после него

    Код:
    StartServers 2
    MinSpareServers 2
    MaxSpareServers 5
    
    или чуть больше в зависимости от вашей памяти. Нам не надо, чтобы AmxBans открывался супербыстро, если кого забанили - он подождет, а вот лишние апачи в памяти висеть не будут. Перегружаем сервер.

    Далее нам пригодится:
    Код:
    yum install screen
    yum install unzip
    Если нужен FTP - пишем
    Код:
    yum install proftpd
    Кидаем в автозапуск
    Код:
    chkconfig proftpd on
    Проверяем
    Код:
    chkconfig --list proftpd
    По настройке - ищите в сети, писать лень. Как по мне, WinSCP (трансфер файлов по SSH) достаточно.
    Теперь создаем для HLDS нового пользователя
    Код:
    useradd game
    passwd game
    тут вводим пароль.
    Переходим в домашний каталог /home/game
    Если вдруг его нет, создаем домашний каталог и даем на него права
    Код:
    mkdir /home/game
    chown game:users /home/game
    Теперь заходим по SSH уже под юзером game

    Переходим в свой домашний каталог

    3. Установка HLDS
    wget http://media.steampowered.com/client/steamcmd_linux.tar.gz
    Распаковываем командой tar -xf steamcmd_linux.tar.gz

    Запускаем
    Код:
    ./steamcmd.sh
    force_install_dir ./hlds/
    app_update 90
    в конце должна появиться надпись
    Код:
    Success! App '90' fully installed.
    Заходим в HLDS и прописываем
    Код:
    ./hlds_run -game cstrike +ip 0.0.0.0 -port 27015 +map de_dust2 +maxplayers 32
    В консоле появляется
    Код:
    Exe version 1.1.2.7/Stdio (cstrike)
    Если не запустился с 1 раза или завис - жмем ctrl+c и пробуем еще раз. Если не запускается стабильно - ищем причину ошибки, смотрим логи.

    Добавляем сервер в избранное и заходим (точнее, нас посылает, поскольку сейчас сервер Steam Only).
    Теперь делаем из этого нормальный сервер.

    На этом месте мне надоело много писать, и т.к. написано на эту тему предостаточно, буду краток:
    Скачиваем Metamod последней версии с _Metamod
    Распаковываем скачанный архив в свежесозданный каталог ./hlds/cstrike/addons/metamod
    Теперь в liblist.gam прописываем gamedll_linux "addons/metamod/dlls/metamod.so" вместо того что там было. Убедитесь, что библиотека метамода так и называется.
    Теперь обязательно ставим DPROTO, AMXMODX ( Colored )последней версии и проверяем что это все работает.

    Что касается другого MUST HAVE для игрового сервера, это:
    HLDS VoiceTranscoder для того чтобы STEAM и NoSteam игроки слышали друг друга, а не "робот заговорил".
    Если будет прерывистый звук - побалуйтесь с sv_voicefloodms. Я себе поставил настройки
    Код
    Код:
    sv_voicecodec voice_speex
    sv_voicequality 4
    sv_voicevolume_speex 1
    sv_voicevolume_silk 1
    sv_voicefloodms 0
    И античит? от wh можно поставить [Metamod] WHBlocker остальное уже ищем и подбираем для себя сами.
    Блокирует все что у меня есть, причем не только вх, но и аим. Но, все равно, лучше попросить десять друзей зайти погонять прежде чем запускать раскрутку, кто знает вдруг кого-то начнет выкидывать

    Если сервер новый - не помешало бы поставить PodBot с настройками
    Код
    Код:
    pb_minbots 0
    pb_maxbots 5
    pb add
    pb add
    pb add
    pb add
    pb add
    иначе на ваш пустой сервер не зайдет никто кроме вас самих. Именно такие настройки дают постоянное присутствие ботов, которые выходят по мере захода живых людей. Кстати, WHBlocker блокирует звуки от ботов, это нормально.

    Теперь обязательно сделайте FastDownload - пропишите server.cfg sv_downloadurl "Каталог объектов VPS или домен/cstrike", создайте /var/www/cstrike/ или /var/www/ДОМЕН/cstrike/ и скопируйте туда все каталоги из cstrike за вычетом addons и logs, и потом добавьте все WAD файлы текстур.
    После этого смело ставьте AMXBans или любой аналог по инструкции, хостинг сайта и сервер у вас к этому моменту уже настроены.

    Собственно на этом в основном всё. В итоге мы получаем довольно не дорогой в оплате сервер, все нам необходимое.
     
    Последнее редактирование: 06.11.16
    oleg4444, dimka198, гл0к и 6 другим нравится это.
  2. msmrbtsk Пользователь

    Регистрация:
    29.03.15
    Сообщения:
    365
    Симпатии:
    94
    Пол:
    Мужской
    UPD.

    Удалены все ссылки на рекомендуемые VDS. Постепенно по мере тестов будут заменяться на более актуальные.
    Добавлена 1 ссылка.