systemctl - systemdで管理されているサーバーアプリケーションの管理
systemctlコマンドを使うと、systemdで管理されているサーバーアプリケーションの管理を行うことができます。
ここでは、apache2を使って、各種コマンドについて解説します。
アプリケーションの開始
アプリケーションを開始するには、startコマンドを使用します。
sudo systemctl start apache2
アプリケーションの停止
アプリケーションを停止するには、stopコマンドを使用します。
sudo systemctl stop apache2
アプリケーションの再起動
アプリケーションを再起動するには、restartコマンドを使用します。
sudo systemctl restart apache2
stopの後に、startが実行されます。
アプリケーションの状態
アプリケーションの状態を見るには、statusコマンドを使用します。
sudo systemctl status apache2
アプリケーションが起動している場合は、以下のように表示されます。
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d mqapache2-systemd.conf Active: active (running) since Fri 2020-06-05 10:27:15 JST; 3h 32min ago Main PID: 1624 (apache2) Tasks: 55 (limit: 9479) CGroup: /system.slice/apache2.service tq1624 /usr/sbin/apache2 -k start tq1628 /usr/sbin/apache2 -k start mq1629 /usr/sbin/apache2 -k start
アプリケーションのリロード
アプリケーションで、reloadが定義されている場合は、reloadを使うことができます。
sudo systemctl reload apache2
apache2の場合はグレースフルスタート、postfixの場合は、設定ファイルの再読み込みが定義されています。
各アプリケーションのsystemdの設定ファイルを見る
各アプリケーションのsystemdの設定ファイルは「systemctl status」の内容に含まれています。
sudo systemctl status apache2
以下の「/lib/systemd/system/apache2.service」というのが、systemdのapacheの設定ファイルです。
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d mqapache2-systemd.conf Active: active (running) since Fri 2020-06-05 10:27:15 JST; 3h 32min ago Main PID: 1624 (apache2) Tasks: 55 (limit: 9479) CGroup: /system.slice/apache2.service tq1624 /usr/sbin/apache2 -k start tq1628 /usr/sbin/apache2 -k start mq1629 /usr/sbin/apache2 -k start
catコマンドを使って「/lib/systemd/system/apache2.service」の中身を見てみましょう。
[Unit] Description=The Apache HTTP Server After=network.target remote-fs.target nss-lookup.target [Service] Type=forking Environment=APACHE_STARTED_BY_SYSTEMD=true ExecStart=/usr/sbin/apachectl start ExecStop=/usr/sbin/apachectl stop ExecReload=/usr/sbin/apachectl graceful PrivateTmp=true Restart=on-abort [Install] WantedBy=multi-user.target
systemdの設定ファイル
systemdの設定ファイルは「/lib/systemd/system」にあります。以下はApacheの設定ファイルです。
/lib/systemd/system/apache2.service
systemdのサービスとして追加
systemdで管理される新しいアプリケーションを追加するには、systemdの設定ファイルがあるディレクトリの中に設定ファイルを追加します。
MojoliciousでWebアプリケーションを作成してhypnotoadで起動している場合にこれをsystemdで管理する場合の公式ドキュメントのサンプルは以下のようになっています。
[Unit] Description=My Mojolicious application After=network.target [Service] Type=forking PIDFile=/home/sri/myapp/script/hypnotoad.pid ExecStart=/path/to/hypnotoad /home/sri/myapp/script/my_app ExecReload=/path/to/hypnotoad /home/sri/myapp/script/my_app KillMode=process [Install] WantedBy=multi-user.target
ファイル名は以下のようにします。「mywebapp」の部分は任意の名前でOKです。viを使って、編集して、内容を追記しましょう。
sudo vi /lib/systemd/system/mywebapp.service
systemdにサービスとして登録しておくと、OSの再起動時に、Webアプリケーションを自動起動させることができます。
設定ファイルが正しいく記述されているかどうかはsystemctlコマンドのstatusで確認することができます。
systemctl status mywebapp