変更を有効にする必要がある場合、またはApacheのリソース使用を通常の範囲に戻す必要がある場合は、Apache®を再起動する必要がある場合があります。ただし、Apacheが再起動に失敗することがあります。この記事では、構成設定を確認し、失敗したときにApacheを再起動する方法を説明します。
注 :次の手順を使用して構成ファイルに変更を加える前に、既存のファイルをバックアップすることをお勧めします。
エラーの原因は、スペルミスまたはドット(。)が適切でない可能性があります。次のコマンドを実行して、構文を確認してください。
[user@server ~]$ httpd –S
次の出力が表示されます。
Syntax OK
次の出力例のようなエラーメッセージが表示された場合は、Apacheを再起動する前にエラーに対処する必要があります。
Syntax error on line 51 of /etc/httpd/conf/httpd.conf:
Invalid command 'erverRoot', perhaps misspelled or defined by a module not included in the server configuration
Apacheエラーログを確認する
これらのエラーを解決してもApacheが再起動しない場合は、Apacheエラーログを確認してください。 2つのウィンドウを使用すると役立つ場合があります。 1つのウィンドウで、次のコマンドを実行して、エラーログに対してtailコマンドを使用します。
tail –f /var/log/httpd/error_log
もう一方のウィンドウで、次のコマンドを実行してApacheの再起動を試みます。
# For RHEL/CentOS 6
[user@server ~]$ sudo /etc/init.d/httpd restart
# For Ubuntu 14/Debian 8
[user@server ~]$ sudo /etc/init.d/apache2 restart
# For RHEL/CentOS 7+
[user@server ~]$ sudo systemctl restart httpd
# For Ubuntu 16+/Debian 9+
[user@server ~]$ sudo systemctl restart apache2
Apacheの再起動中に最初のウィンドウを見て、ログに生成されているエラーを確認してください。
次の出力に示すように、Apacheが使用しようとしているポートにバインドしている別のサービスがある場合も、Apacheは再起動しない可能性があります。
Stopping httpd: [FAILED]
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 2001:4801:7824:103:9ed:a5a8:3301:d53a for ServerName
[Wed Sep 10 20:48:11 2014] [warn] NameVirtualHost *:443 has no VirtualHosts
[Wed Sep 10 20:48:11 2014] [warn] NameVirtualHost *:80 has no VirtualHosts
(98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
この出力は、別のサービスがすでにポート80に割り当てられているため、Apacheを開始できないことを示しています。
Apacheが割り当てられているポートを変更するか、このポートに割り当てられている他のサービスがポート80にあるかどうかを確認できます。netstat
を実行します。 次の例に示すように、そのポートを使用している他のサービスを識別するコマンド:
[user@server ~]$ sudo netstat –plnt
出力は次の例のようになります。
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5272/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1581/master
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 5835/mysqld
tcp 0 0 :::80 :::* LISTEN 5272/sshd
tcp 0 0 ::1:25 :::* LISTEN 1581/master
この例では、出力はSecure Shell(SSH)がポート80でリッスンしていることを示していますが、そうではないはずです。 SSHの構成ファイルを変更して別のポートでリッスンし、Apacheを再起動することで、この状況を修正できます。
次のエラーも表示される場合があります:
httpd dead but subsys locked, but pid exists
このエラーは、Apacheが実行されていたが、クラッシュしたことを意味します。 Apacheを起動すると、実行中であることを示すロックファイルが作成されます。ロックファイルは、複数のインスタンスが実行されるのを防ぐのに役立ちます。 Apacheを停止すると、このロックファイルは削除されます。ただし、クラッシュしてもロックファイルは存在しますが、プロセスは存在しません。このエラーが表示された場合は、次のコマンドを実行してロックファイルを削除する必要があります。
# For RHEL/CentOS based distributions
[user@server ~]$ sudo rm /var/lock/subsys/httpd
# For Ubuntu/Debian based distributions
[user@server ~]$ sudo rm /var/lock/subsys/apache2
# For RHEL/CentOS 6
[user@server ~]$ sudo /etc/init.d/httpd restart
# For Ubuntu 14/Debian 8
[user@server ~]$ sudo /etc/init.d/apache2 restart
# For RHEL/CentOS 7+
[user@server ~]$ sudo systemctl restart httpd
# For Ubuntu 16+/Debian 9+
[user@server ~]$ sudo systemctl restart apache2
これらのコマンドを実行すると、未使用のロックファイルが削除され、Apacheが再起動したときに新しいロックファイルを作成できるようになります。
コメントや質問をするには、[フィードバック]タブを使用します。私たちと会話を始めることもできます。