Ubuntu+PerlでWebシステム開発 環境構築

  • Ubuntu20
  • Ubuntu18
  • Ubuntu16

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