web-dev-qa-db-ja.com

CentOS 7で「Apacheを正常に再起動する」方法

私のシステムはCentOS 7.4、Apache 2.4です
ベース Apacheマニュアルapachectl -k gracefulはApacheを適切に再起動する方法ですが、以下のように通知されました。

[root@localhost root]# apachectl -k graceful
Passing arguments to httpd using apachectl is no longer supported.
You can only start/stop/restart httpd using this script.
If you want to pass extra arguments to httpd, edit the
/etc/sysconfig/httpd config file.

どうしたの?
方法 Graceful Restart Apache centos 7で?

7
kittygirl

新しいバージョンのように見えるapachectlのこのページを参照してください: https://httpd.Apache.org/docs/2.4/programs/apachectl.html

「-k」引数を渡す必要はありません。 apachectl graceful(-kなし)は、Centos7ボックスとCentos6ボックスでの正常なリロード/再起動に問題なく機能します。

どうやら彼女の質問で引用されているマニュアルページOPはまだ更新されていないようです。これはまだ存在しており、コマンドは「-k」引数で示されています(apachectl -k graceful、apachectl -k restartなど)。そのページには説明がありません。ただし、-k引数が実際に行っていることについて。

しかし、新しいページには、apachectl gracefulに関する次の注記があります。

これは、apachectl -k gracefulと同等です。

私のCentos6ボックスでは、service httpd gracefulコマンドを使用していました。 Centos7では動作しなくなりました。 Centos 7で同等の処理を行うには、apachectl gracefulを使用する必要があります。また、apachectl gracefulはCentos 6でも問題なく機能します。

4
Jay Schauer

ほとんどのsystemdベースのディストリビューションは、パッチを適用したapachectlスクリプト[1]を使用して、コマンドをsystemctlに委任します。パッチを当てたapachectlコマンドは、引数がhttpdに渡される「パススルー」操作モードをサポートしていません。 apachectlのマニュアルページには、パッチされていないアップストリームのapachectlコマンドが反映されているため、矛盾が生じます。

サービスの開始と停止にはsystemctl [2]抽象化を使用することをお勧めします。

したがって、Centos 7でApache HTTP Serverを正常に再起動するには、systemdを使用して他のLinuxディストリビューションを使用します。

Sudo systemctl reload httpd.service

内部的には、これはhttpd -k gracefulを呼び出します。これは次のコマンドで確認できます。

$ systemctl cat httpd.service | grep -F ExecReload
ExecReload=/usr/sbin/httpd $OPTIONS -k graceful

Apache HTTPサーバーを停止するには:

Sudo systemctl stop httpd.service

これは、裏でSIGWINCHシグナルをhttpdプロセスに送信します。

これは次のコマンドで確認できます。

$ systemctl cat httpd.service \
  | grep -E --before-context=1 'ExecStop|KillSignal'
# Send SIGWINCH for graceful stop
KillSignal=SIGWINCH

systemd.service [3]マニュアルには、ExecStopオプションが指定されていないこの状況では、「KillSignalで指定されたシグナルを送信することでプロセスが終了する」と記載されています。

なぜSIGWINCHhttps://bz.Apache.org/bugzilla/show_bug.cgi?id=50669 に従って、ApacheはSIGWINCH信号を「正常なシャットダウン」トリガーとして使用します。

サービスオプションを調べるのに役立つと思われる別のコマンドは、次のようにshowコマンドと-p, --propertyオプションを組み合わせたものです。

$ systemctl show httpd.service -p ExecStart -p ExecReload -p ExecStop -p KillSignal

[1] https://git.centos.org/blob/rpms!httpd.git/c7/SOURCES!httpd-2.4.3-apctl-systemd.patch
[2] https://www.freedesktop.org/software/systemd/man/systemctl.html
[3] https://www.freedesktop.org/software/systemd/man/systemd.service.html

1
Robin A. Meade

Systemdを使用する他のLinuxディストリビューションと同様に、systemctlを使用してhttpdを管理できます。特に:

systemctl reload httpd

gracefulとまったく同じように、httpdに構成ファイルをリロードさせ、新しい構成でワーカーを再起動させます。

1
Michael Hampton