Каков наилучший способ запустить серверное приложение в 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}
запретить запуск сервера после перезагрузки