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

  • Ubuntu20
  • Ubuntu18
  • Ubuntu16

Apacheの起動・停止・再起動・状態確認

Apacheの起動・停止・再起動・状態確認について解説します。

Apacheの状態確認

Apacheの状態確認は、systemctlコマンドの「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 Tue 2020-05-19 08:59:09 JST; 9s ago
  Process: 120415 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
  Process: 120947 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
 Main PID: 120968 (apache2)
    Tasks: 55 (limit: 9479)
   CGroup: /system.slice/apache2.service
           tq120968 /usr/sbin/apache2 -k start
           tq120971 /usr/sbin/apache2 -k start
           mq120972 /usr/sbin/apache2 -k start
停止している場合

停止している場合は、以下のように表示されます。

● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset:
  Drop-In: /lib/systemd/system/apache2.service.d
           mqapache2-systemd.conf
   Active: inactive (dead) since Tue 2020-05-19 08:52:07 JST; 3min 51s ago
  Process: 120415 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCE
 Main PID: 104579 (code=exited, status=0/SUCCESS)

Apacheの起動

Apacheの起動は、systemctlコマンドの「start」を使って行います。sudoコマンドを使って、root権限で実行します。

sudo systemctl start apache2

起動が成功しても、成功したというメッセージは返ってきません。状態確認を行ってください。

Apacheの停止

Apacheの停止は、systemctlコマンドの「stop」を使って行います。sudoコマンドを使って、root権限で実行します。

sudo systemctl stop apache2

停止が成功しても、成功したというメッセージは何も返ってきません。状態確認を行ってください。

Apacheの再起動

Apacheの再起動は、systemctlコマンドの「restart」を使って行います。sudoコマンドを使って、root権限で実行します。

sudo systemctl restart apache2

restartは単に、stopコマンドを実行して、startコマンドを実行します。HTTPクライアントからの処理を切断してしまうので、通常はreloadコマンドを使用しましょう

再起動が成功しても、成功したというメッセージは返ってきません。状態確認を行ってください。

Apacheのグレースフル(graceful)再起動

Apacheのグレースフル(graceful)再起動は、systemctlコマンドの「reload」を使って行います。sudoコマンドを使って、root権限で実行します。

sudo systemctl reload apache2

グレイスフル(graceful, 優美な)再起動と呼ばれている再起動は、Apacheに接続しているHTTPクライアントに対して、正しくHTTPレスポンスを返しつつ、Apacheを再起動できる技術を使った再起動です。すべてのHTTPクライアントの処理を正しく処理できるので、通常はこちらの再起動を使いましょう。

再起動が成功しても、成功したというメッセージは返ってきません。状態確認を行ってください。

Apacheの起動・停止のログを見るには

Apacheなどのサーバーは、systemdというプログラムによって集中的に管理されています。

systemdのログにApacheの起動・停止ログが出力されています。

systemdのログを見るにはjournalctlコマンドを使います。「-u」オプションでユニット「apache2」を指定します。sudoで実行しないとApacheのログが見れないので注意してください。ログの最後の部分だけ見たい場合は「-r」オプションを組み合わせます。

sudo journalctl -r -u apache2

ログのサンプルです。

- Logs begin at Mon 2020-06-01 15:51:16 JST, end at Thu 2020-07-23 14:37:14 JST. --
Jul 22 13:34:22 shinshina-development-app-00000001 systemd[1]: apache2.service: Failed with result 'exit-code'.
Jul 22 13:34:22 shinshina-development-app-00000001 systemd[1]: apache2.service: Main process exited, code=exited, status=1/FAILURE
Jul 22 13:24:35 shinshina-development-app-00000001 systemd[1]: Started The Apache HTTP Server.
Jul 22 13:24:35 shinshina-development-app-00000001 apachectl[1299]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 10.0.0.4. Set the 'ServerName' direct
Jul 22 13:24:33 shinshina-development-app-00000001 systemd[1]: Starting The Apache HTTP Server...
-- Reboot --
Jul 22 13:13:48 shinshina-development-app-00000001 systemd[1]: Stopped The Apache HTTP Server.
Jul 22 13:13:47 shinshina-development-app-00000001 systemd[1]: Stopping The Apache HTTP Server...
Jul 22 06:25:03 shinshina-development-app-00000001 systemd[1]: Reloaded The Apache HTTP Server.
Jul 22 06:25:03 shinshina-development-app-00000001 systemd[1]: Reloading The Apache HTTP Server.

再起動前にApacheの設定ファイルが正しいか確認する

Apacheの再起動(グレースフル再起動)を行う前には「apachectl -t」で、Apacheの設定ファイルが正しいことを確認します。これを忘れると、再起動に失敗して、Webシステムが止まることがあります。よくやりがちなので、注意します。

# Apacheの設定ファイルの試験
apachectl -t

Apacheのsystemdの設定ファイルを見るには

Apacheのsystemdの設定ファイルは「systemctl status apache2」で見れます。

設定ファイルをcatコマンドで見てみましょう。

cat /lib/systemd/system/apache2.service

start、stop、reloadのコマンド定義などが確認できます。

[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

Apacheの他の情報

Apacheをインストールするには

Apacheのインストールについては、以下の記事で解説しています。

apache2のインストール - WebサーバーであるApacheのバージョン2系

Apacheの設定ファイル

Apacheの設定ファイルについては、別の記事で解説します。