[英]systemctl restart httpd Failed to start The Apache HTTP Server httpd pid already running
I recently rebuilt my server on AWS, upgrading from Amazon Linux to Amazon Linux 2, which like Linux 1 appears to be a fork of CentOS, now CentOS 7. My vhost config remains the same as the previous build while all the other conf files are較新的默認文件。 (僅供參考,不確定它是否有任何影響)。
由於重建我不能再做systemctl restart httpd
。 我收到錯誤The Apache HTTP Server httpd pid (NNNN) already running
。
我做了很多谷歌搜索,發現很多人都有這個錯誤,但結果總是與他們所做的不同。 我想不出我所做的任何“不同”。
我了解到,我看到的“已經在運行”的 PID 是 root 擁有的,是“主進程”,而 apache 擁有的所有其他 PID 是“工作進程”。 https://serverfault.com/questions/355223/centos-httpd-running-as-both-root-and-apache-user
root 4461 1 0 07:18 ? 00:00:00 /usr/sbin/httpd -k restart
apache 4467 4461 0 07:18 ? 00:00:09 /usr/sbin/httpd -k restart
apache 4468 4461 0 07:18 ? 00:00:08 /usr/sbin/httpd -k restart
apache 4471 4461 0 07:18 ? 00:00:08 /usr/sbin/httpd -k restart
apache 4477 4461 0 07:18 ? 00:00:08 /usr/sbin/httpd -k restart
apache 4498 4461 0 07:18 ? 00:00:07 /usr/sbin/httpd -k restart
apache 5236 4461 0 07:19 ? 00:00:08 /usr/sbin/httpd -k restart
apache 5248 4461 0 07:19 ? 00:00:09 /usr/sbin/httpd -k restart
apache 5987 4461 0 07:20 ? 00:00:09 /usr/sbin/httpd -k restart
apache 5993 4461 0 07:20 ? 00:00:08 /usr/sbin/httpd -k restart
apache 5994 4461 0 07:20 ? 00:00:09 /usr/sbin/httpd -k restart
# systemctl restart httpd;systemctl status httpd;
Job for httpd.service failed. See "systemctl status httpd.service" and "journalctl -xe" for details.
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: failed (Result: protocol) since Thu 2021-12-23 19:56:05 UTC; 4ms ago
Docs: man:httpd.service(8)
Process: 31799 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=0/SUCCESS)
Main PID: 31799 (code=exited, status=0/SUCCESS)
Status: "Reading configuration..."
Dec 23 19:56:04 ip-10-5-11-55.ec2.internal systemd[1]: Starting The Apache HTTP Server...
Dec 23 19:56:05 ip-10-5-11-55.ec2.internal httpd[31799]: httpd (pid 4461) already running
Dec 23 19:56:05 ip-10-5-11-55.ec2.internal systemd[1]: Failed to start The Apache HTTP Server.
Dec 23 19:56:05 ip-10-5-11-55.ec2.internal systemd[1]: Unit httpd.service entered failed state.
Dec 23 19:56:05 ip-10-5-11-55.ec2.internal systemd[1]: httpd.service failed.
Apache 錯誤日志中沒有異常:
[Thu Dec 23 07:18:58.777745 2021] [suexec:notice] [pid 4460] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Thu Dec 23 07:18:58.802753 2021] [lbmethod_heartbeat:notice] [pid 4461] AH02282: No slotmem from mod_heartmonitor
[Thu Dec 23 07:18:58.802850 2021] [http2:warn] [pid 4461] AH10034: The mpm module (prefork.c) is not supported by mod_http2. The mpm determines how things are processed in your server. HTTP/2 has more
[Thu Dec 23 07:18:58.847386 2021] [mpm_prefork:notice] [pid 4461] AH00163: Apache/2.4.51 () PHP/7.4.21 configured -- resuming normal operations
[Thu Dec 23 07:18:58.847414 2021] [core:notice] [pid 4461] AH00094: Command line: '/usr/sbin/httpd'
如果我殺死這個“主”PID,那么我可以重新啟動沒問題。
# kill 4461
# systemctl restart httpd;systemctl status httpd;
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2021-12-23 20:01:31 UTC; 6ms ago
Docs: man:httpd.service(8)
Main PID: 3091 (httpd)
Status: "Configuration loaded."
CGroup: /system.slice/httpd.service
└─3091 /usr/sbin/httpd -DFOREGROUND
Dec 23 20:01:31 ip-10-5-11-55.ec2.internal systemd[1]: Starting The Apache HTTP Server...
Dec 23 20:01:31 ip-10-5-11-55.ec2.internal systemd[1]: Started The Apache HTTP Server.
# ps -Af | grep httpd
root 3145 1 1 20:01 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 3147 3145 0 20:01 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 3153 3145 0 20:01 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 3171 3145 0 20:01 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 3177 3145 0 20:01 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 3183 3145 0 20:01 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
大多數人的建議是“殺死進程”, https://serverfault.com/questions/825216/apache-failes-to-start-already-running-but-not-maching-pid-file但我需要這個才能工作無人看管。 我還能看什么?
盡管我進行了很多搜索,但沒有找到針對其他 Linux 風格的答案。 當我注意到 httpd 最初以“apachectl”開頭並且我試圖使用“systemctl”重新啟動並認為這可能是問題時,我得到了答案。 當我搜索這個時,我找到了很多答案。 這似乎是最簡潔的: https://unix.stackexchange.com/questions/240528/apache-and-systemd
在其他人中,您會看到我遇到的相同問題,即一旦您開始使用 apachectl,您必須堅持使用它,因為 systemd 無法知道您對 apachectl 做了什么,因為它使用了不同的配置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.