Каков наилучший способ запустить серверное приложение в Ubuntu?

Это моя первая попытка запустить сервер Linux. У меня есть серверное приложение, которое я хочу запустить на сервере, к которому у меня есть доступ по ssh.

Если бы это был сервер Windows, я бы просто открыл удаленный рабочий стол, запустил его и отключил сеанс удаленного рабочего стола. Тем не менее, я понимаю, что выход из сеанса SSH убивает все процессы, порожденные внутри.

Так что я немного искал, и, кажется, мне придется использовать screen или же tmux чтобы мой процесс работал после отключения. Тем не менее, я хотел бы знать, есть ли лучший способ. Серверный процесс должен иметь возможность считывать управляющие команды из stdin, и я бы предпочел также просмотреть некоторые результаты регистрации stdout (хотя остальная часть этого неизбежно попадает в файл журнала).


ОБНОВЛЕНИЕ: я в настоящее время запускаю приложение в сеансе tmux. Кажется, все работает хорошо, но я не совсем уверен, что это наилучший из возможных способов...

1 ответ

Решение

Чтобы запустить сервер в Linux, вы добавляете его к вещам, которыми управляет systemd, Услуги описаны коротким service файл, который помещается в /etc/systemd/system/{target}/ где {target} указывает на состояние системы (как правило, multi-user.target.wants). Описание службы включает в себя такие вещи, как исполняемый файл и что делать, если он завершается. Например, mysql сервер:

# MySQL systemd service file

[Unit]
Description=MySQL Community Server
After=network.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
PermissionsStartOnly=true
ExecStartPre=/usr/share/mysql/mysql-systemd-start pre
ExecStart=/usr/sbin/mysqld
ExecStartPost=/usr/share/mysql/mysql-systemd-start post
TimeoutSec=600
Restart=on-failure
RuntimeDirectory=mysqld
RuntimeDirectoryMode=755

Как только файл настроен, вы используете systemctl команда:

  • systemctl start {service} запустить сервер
  • systemctl stop {service} остановить сервер
  • systemctl enable {service} заставить сервер запускаться после загрузки
  • systemctl disable {service} запретить запуск сервера после перезагрузки
Другие вопросы по тегам