Заметил что много людей используют самопальные shell скрипты + screen/tmux/nohup для управления серверами и игнорируют штатный системный менеджер, это меня вынудило написать этот небольшой мануал по использованию systemd для управления серверами
Требования: Системный менеджер systemd, отсутствие в системе пользователя hlds, отсутствие жестких/мягких ссылок на /opt/hlds и /home/hlds, умение работать в unix shell, знание базовых unix команд, крайне желательны хоть какие-то познания в systemd
Все shell команды необходимо выполнять от root пользователя
1. Создание systemd сервиса, пользователя и директории для серверов
2. Добавление сервера
Копируем директорию сервера в /opt/hlds/
Указуем по необходимости параметры командной строки в файле /opt/hlds/директория сервера/env
Например для cstrike сервера необходимо как минимум добавить "-game cstrike", а значит содержимое файла должно быть такое:
Если требуется, то исправляем рекурсивно пользователя и группу после копирования файлов:
Запускаем сервер -
Добавляем сервер в автозагрузку -
Можно идти играть
3. Управление серверами
Запуск сервера -
Остановка сервера -
Просмотр статуса сервера -
Просмотр статуса всех серверов -
Включить автозапуск сервера -
Выключить автозапуск сервера -
Просмотр логов сервера -
Более детально смотрите в документации по systemd
При выполнении вышеперечисленных команд необходимо заменить "сервер" на имя сервера над которым вы хотите совершить действие, имя сервера соответствует имени директории сервера в /opt/hlds
Требования: Системный менеджер systemd, отсутствие в системе пользователя hlds, отсутствие жестких/мягких ссылок на /opt/hlds и /home/hlds, умение работать в unix shell, знание базовых unix команд, крайне желательны хоть какие-то познания в systemd
Все shell команды необходимо выполнять от root пользователя
1. Создание systemd сервиса, пользователя и директории для серверов
Bash:
cat << EOF > /etc/systemd/system/[email protected]
[Unit]
Description=%I - Half-Life engine dedicated server
After=network.target
[Service]
User=hlds
Group=hlds
WorkingDirectory=/opt/hlds/%I
Environment=LD_LIBRARY_PATH=/opt/hlds/%I
EnvironmentFile=-/opt/hlds/%I/env
ExecStart=/opt/hlds/%I/hlds_linux $EXTRA_OPTS
Restart=always
Nice=-10
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
useradd -m hlds
su -c "mkdir srv" - hlds
ln -s /home/hlds/srv /opt/hlds
Копируем директорию сервера в /opt/hlds/
Указуем по необходимости параметры командной строки в файле /opt/hlds/директория сервера/env
Например для cstrike сервера необходимо как минимум добавить "-game cstrike", а значит содержимое файла должно быть такое:
EXTRA_OPTS="-game cstrike"
Если требуется, то исправляем рекурсивно пользователя и группу после копирования файлов:
chown -R hlds:hlds /opt/hlds
Запускаем сервер -
systemctl start hlds@директория сервера
Добавляем сервер в автозагрузку -
systemctl enable hlds@директория сервера
Можно идти играть
3. Управление серверами
Запуск сервера -
systemctl start hlds@сервер
Остановка сервера -
systemctl stop hlds@сервер
Просмотр статуса сервера -
systemctl status hlds@сервер
Просмотр статуса всех серверов -
systemctl status hlds@*
Включить автозапуск сервера -
systemctl enable hlds@сервер
Выключить автозапуск сервера -
systemctl disable hlds@сервер
Просмотр логов сервера -
journalctl -u hlds@сервер
Более детально смотрите в документации по systemd
При выполнении вышеперечисленных команд необходимо заменить "сервер" на имя сервера над которым вы хотите совершить действие, имя сервера соответствует имени директории сервера в /opt/hlds
Последнее редактирование: