unity

Участник
Сообщения
211
Реакции
65
Большинство используют обновление серверов по крону и некоторые плагинами. У SteamCMD есть нативный способ обновление серверов без крона и сторонних плагинов. Многие об этом знают или слышали, но мало кто знает, как правильно настроить, а если и настроили, но не обновляется - возвращаются опять по старикне обновлять по крону, так и не попытавшись разобраться.

Требование:
  • linux
  • vps/vds
  • SteamCMD
В папке /steamcmd сделать копию файла steamcmd.sh и переименовать его в steam.sh
Переименованный файл steam.sh закинуть в туже папку /steamcmd и выставить права файла 700
в папке /steamcmd/linux32/ сделать копию файла steamcmd и переименовать его в steam
переименованный файл steam закинуть в туже папку /steamcmd/linux32/ и выставить права файла 700

В папке /steamcmd/
создать файл с любым именем. На пример у меня update_aim.txt В текстовом файле вставляем содержимое:

@ShutdownOnFailedCommand 1
@NoPromptForPassword 1
login anonymous
force_install_dir ../aimserv
app_update 740
quit

Прошу заметить:
force_install_dir ../aimserv // Имя папки сервера у вас своё

Создать файл с любым именем в корень папки сервера. с расширением .sh (Это важно!) и выставить права файла 700 На пример у меня /home/unity/aimserv/aimstart.sh

Cкопируйте у меня содержимое и отредактируйте под себя и вставьте его в созданный файл с расширением .sh

screen -A -m -d -S aimserv /home/unity/aimserv/srcds_run -autoupdate -steam_dir /home/unity/steamcmd/ -steamcmd_script /home/unity/steamcmd/update_aim.txt -game csgo -console -usercon +net_public_adr 0.0.0.0 +ip 0.0.0.0 -maxplayers_override 24 -tickrate 128 -port 27037 +tv_port 37037 +game_type 0 +game_mode 0 +host_workshop_collection 485684628 +workshop_start_map 2240626180 -secure +sv_lan 0 -condebug -debug +clientport 47037

Прошу заметить:
  • screen -A -m -d -S aimserv // aimserv - Это папка сервера, У вас своё имя
  • /home/unity/aimserv/srcds_run // У вас свой путь к файлу srcds_run
  • -autoupdate // Запускает автоматическое обновление
  • -steam_dir /home/unity/steamcmd/ // у вас свой путь к папке steamcmd
  • -steamcmd_script /home/unity/steamcmd/update_aim.txt // у вас свой путь к файлу со своим именем, в котором есть содержимое для авторизауии SteaCMD
Все остальные настройки запуска сервера у вас свои

В server.cfg или конфиг режима вставить переменную sv_hibernate_when_empty 1 // Если у вас присутствует в конфиге эта переменная, но стоит значение 0, автоматическое обновление не сработает и будет каждые 10 секунд сервер уходить в краш, когда выйдет обновление. Убедитесь, что переменная sv_hibernate_when_empty ни в каких конфигах больше не повторяется с другим значением.

Когда выходит обновление - игроков сообщает, что сервер через 10 секунд перезагрузится для обновление. Если нет игроков, то сервер сразу уходит на перезагрузку для обновления.

Вот и всё! Если что то не понятно - задавайте вопросы в комментариях! Отвечу всем. )

Не забудьте удалить свои кроны на автоматическое обновления по времени! в crontab
 
Последнее редактирование:

Arthur Don

Участник
Сообщения
1,702
Реакции
248
@unity, и как будет происходить обнова сервера? Сразу при выходе или при перезапуске сервера?
 

unity

Участник
Сообщения
211
Реакции
65
@unity, и как будет происходить обнова сервера? Сразу при выходе или при перезапуске сервера?
Как только выходит обновление - игроков сообщает в чате ,что через 10 секунд сервер пере запустится и уйдёт в обновление. Если на сервере нет игроков, то сервер сразу уйдёт в обновление.
Сообщения автоматически склеены:

Немного отредактировал статью. Забыл я написать ,что двум файлам, из которых делали копии и отредактировали название - надо права поставить 700 С файлом для запуска сервера, который имеет расширение .sh - тоже надо выставить права 700
 
Последнее редактирование:
Сверху