Поднятию серверов после рестарта

Руководство Поднятию серверов после рестарта

Поддерживаемые версии
  1. Отсутствует
Вступление

У всех бывали ситуации, когда сервер падал (или просто перезагружался) по разным причинам: у кого-то хостинг некачественный, у кого-то просто отключили свет и т.д. А после того, как сервер поднялся, приходится снова подключаться, открывать скрины, заходить в нужную директорию и запускать сервер. А задумывались ли вы, что этот процесс можно автоматизировать?

Оглавление

Представим, что у нас есть три сервера: для прокси, лобби и выживания. Каждый из них будет находиться по пути "/home/имя_пользователя/servers/". Название папки каждого сервера будет отражать его назначение (например, "proxy" для прокси-сервера и т.д.). Также в каждой папке сервера должен находиться файл запуска "start.sh". Конечно, можно было бы написать один большой скрипт для поднятия всех серверов и без "start.sh", но если потребуется изменить параметры для одного из серверов, придется заморачиваться. А мы ленивые, так что не будем ничего изобритать.

Шаги

Для начала определим, где будет храниться наш скрипт для открытия скринов и запуска серверов. Я выбрал создать дополнительную директорию в папке моего пользователя и назвать её "scripts" (туда же позже можно будет положить скрипты для бекапов и другое, если конечно имеется).
Screenshot_457.png

Далее создаём файл и называем его как угодно, главное — расширение должно быть ".sh".
Screenshot_458.png

Теперь вписываем в файл следующий скрипт:
Bash:
#!/bin/bash

# Имя пользователя, от имени которого будут запускаться экраны
USER="groundbreaking"

# Директории серверов Minecraft
SERVER_DIRS=(
    "/home/$USER/servers/vanila"
    "/home/$USER/servers/auth"
    "/home/$USER/servers/proxy"
)

# Названия сринов в которых будут запускаться сервера
# Заметьте что они должны идти в таком-же порядке как и сервера, то есть если мы хотим чтобы ванила запустилась в скрине с именем "vanila", то ставим их в список под одинаковыми номерами.
SCREEN_NAMES=(
    "vanila"
    "auth"
    "proxy"
)

# Скрипт открытия скринов и вызова скрипта "start.sh"
for i in "${!SERVER_DIRS[@]}"; do
    DIR="${SERVER_DIRS[i]}"
    SCREEN="${SCREEN_NAMES[i]}"
    if screen -list | grep -q "$SCREEN"; then
        echo "Окно $SCREEN уже запущенно!"
    else
        if [ ! -d "$DIR" ]; then
            echo "Директория $DIR не существует! Пропускаем сервер $SCREEN."
            continue
        fi
        echo "Запускаем сервер $SCREEN..."
        screen -S "$SCREEN" bash -c "cd $DIR && sh start.sh"
    fi
done

Теперь нужно сделать так, чтобы наш скрипт запускался при старте ОС. Для этого переходим в "/etc/systemd/system" и создаём файл с любым названием, но обязательно с расширением ".service" (название запомните для последующих команд!). Я же назову его "mc_servers.service"
Screenshot_459.png

После создания файла открываем его и добавляем в него следующее содержимое:
INI:
[Unit]
Description=Minecraft Server Manager # Описание для нашего процесса
After=network.target # Когда он будет вызываться (при старте ОС)

[Service]
Type=oneshot # Процесс, который будет вызван по завершению
User=имя_пользователя # Имя нашего пользователя, от которого будет запущен скрипт
ExecStart=/home/имя_пользователя/scripts/mc_servers.sh # Путь до нашего скрипта
RemainAfterExit=false # Нужно ли поддерживать жизнь процесса даже после его завершения

[Install]
WantedBy=multi-user.target # Указываем, что процесс будет запущен на "уровне нашего юзера"

Ещё одна важная вещь — необходимо установить формат конца строк для двух файлов в "LF", чтобы Linux мог их корректно обработать.
Вот как это можно сделать в Notepad++:
Screenshot_460.png

Завершающеая часть

Нужно указать systemd, что скрипт должен запускаться при старте сервера. Для этого используем следующие команды:
сhmod +x /home/имя_пользователя/scripts/mc_servers.sh # Укажите ваш путь
sudo systemctl daemon-reload
sudo systemctl enable mc_servers.service

Если не хотите перезагружать машину, чтобы проверить, всё ли получилось, используйте команду:
sudo systemctl start mc_servers.service
Автор
Groundbreaking
Просмотры
275
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Другие ресурсы пользователя Groundbreaking

Поделиться ресурсом

Назад
Сверху Снизу