これは、Linuxサーバーを実行する最初の試みです。 sshにアクセスできるサーバーで実行したいサーバーアプリケーションがあります。
これがWindowsサーバーの場合、リモートデスクトップを開いて実行し、リモートデスクトップセッションを切断します。ただし、sshセッションからログアウトすると、内部で生成されたすべてのプロセスが強制終了されることを理解しています。
そのため、少し検索を行いましたが、切断後にプロセスを実行し続けるには、screen
またはtmux
を使用する必要があるようです。しかし、もっと良い方法があるかどうか知りたいです。サーバープロセスは標準入力から制御コマンドを読み取ることができるはずです。私はむしろ標準出力のログ出力も表示できるようにします(ただし、残りの部分は必然的にログファイルに記録されます)。
更新:現在、tmuxセッション内でアプリを実行しています。それはうまく機能しているようですが、これが最良の方法だとは思いません...
Linuxでサーバーを実行するには、systemd
によって実行されるものにサーバーを追加します。サービスは、/etc/systemd/system/{target}/
に置かれる短いservice
ファイルで記述されます。ここで、{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}
は、再起動後にサーバーが起動しないようにします