私のシステムは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で?
新しいバージョンのように見える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でも問題なく機能します。
ほとんどの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
で指定されたシグナルを送信することでプロセスが終了する」と記載されています。
なぜSIGWINCH
? https://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
Systemdを使用する他のLinuxディストリビューションと同様に、systemctl
を使用してhttpdを管理できます。特に:
systemctl reload httpd
graceful
とまったく同じように、httpdに構成ファイルをリロードさせ、新しい構成でワーカーを再起動させます。