Score:2

systemctl รีสตาร์ท httpd ไม่สามารถเริ่ม Apache HTTP Server httpd pid ที่กำลังทำงานอยู่

ธง cn

ยกโทษให้ข้ามโพสต์จาก Stack Overflow แต่ฉันรู้ว่านี่น่าจะเป็นตำแหน่งที่ดีกว่าที่จะถาม

ฉันเพิ่งสร้างเซิร์ฟเวอร์ใหม่บน AWS โดยอัปเกรดจาก Amazon Linux เป็น Amazon Linux 2 ซึ่งเหมือนกับ Linux 1 ที่ดูเหมือนจะเป็นทางแยกของ CentOS ตอนนี้เป็น CentOS 7 การกำหนดค่า vhost ของฉันยังคงเหมือนกับรุ่นก่อนหน้า ในขณะที่ไฟล์ conf อื่นๆ ทั้งหมด ไฟล์เริ่มต้นที่ใหม่กว่า (เพียง FYI ไม่แน่ใจว่ามีผลกระทบใด ๆ )

ตั้งแต่สร้างใหม่ฉันไม่สามารถทำได้อีกต่อไป systemctl รีสตาร์ท httpd. ฉันได้รับข้อผิดพลาด Apache HTTP Server httpd pid (NNNN) กำลังทำงานอยู่.

ฉันได้ทำ จำนวนมาก จาก googling และพบว่ามีคนจำนวนน้อยที่มีข้อผิดพลาดนี้ แต่ก็มักจะกลายเป็นบางสิ่งบางอย่าง แตกต่าง ที่พวกเขาได้ทำ ฉันไม่สามารถนึกถึงอะไร "แตกต่าง" ที่ฉันทำ

ฉันได้เรียนรู้ว่า PID ที่ฉันเห็นว่า "ทำงานอยู่แล้ว" ซึ่งเป็นของรูทนั้นเป็น "กระบวนการหลัก" และ PID อื่นๆ ทั้งหมดที่เป็นของ apache คือ "กระบวนการของผู้ปฏิบัติงาน" CentOS httpd ทำงานเป็นทั้งผู้ใช้ root และ apache

รูท 4461 1 0 07:18 ? 00:00:00 /usr/sbin/httpd -k รีสตาร์ท
อาปาเช่ 4467 4461 0 07:18 ? 00:00:09 /usr/sbin/httpd -k รีสตาร์ท
อาปาเช่ 4468 4461 0 07:18 ? 00:00:08 /usr/sbin/httpd -k รีสตาร์ท
อาปาเช่ 4471 4461 0 07:18 ? 00:00:08 /usr/sbin/httpd -k รีสตาร์ท
อาปาเช่ 4477 4461 0 07:18 ? 00:00:08 /usr/sbin/httpd -k รีสตาร์ท
อาปาเช่ 4498 4461 0 07:18 ? 00:00:07 /usr/sbin/httpd -k รีสตาร์ท
อาปาเช่ 5236 4461 0 07:19 ? 00:00:08 /usr/sbin/httpd -k รีสตาร์ท
อาปาเช่ 5248 4461 0 07:19 ? 00:00:09 /usr/sbin/httpd -k รีสตาร์ท
อาปาเช่ 5987 4461 0 07:20 ? 00:00:09 /usr/sbin/httpd -k รีสตาร์ท
อาปาเช่ 5993 4461 0 07:20 ? 00:00:08 /usr/sbin/httpd -k รีสตาร์ท
อาปาเช่ 5994 4461 0 07:20 ? 00:00:09 /usr/sbin/httpd -k รีสตาร์ท
# systemctl รีสตาร์ท httpd; systemctl สถานะ httpd;
งานสำหรับ httpd.service ล้มเหลว ดู "สถานะ systemctl httpd.service" และ "journalctl -xe" สำหรับรายละเอียด
â httpd.service - เซิร์ฟเวอร์ Apache HTTP
   โหลดแล้ว: โหลดแล้ว (/usr/lib/systemd/system/httpd.service; ปิดใช้งาน; ค่าที่ตั้งไว้ล่วงหน้าของผู้ขาย: ปิดใช้งาน)
   ใช้งานอยู่: ล้มเหลว (ผลลัพธ์: โปรโตคอล) ตั้งแต่พฤ. 2021-12-23 19:56:05 UTC; 4ms ที่แล้ว
     เอกสาร: man:httpd.service(8)
  กระบวนการ: 31799 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=0/SUCCESS)
 PID หลัก: 31799 (รหัส=ออก สถานะ=0/สำเร็จ)
   สถานะ: "กำลังอ่านการกำหนดค่า..."

23 ธันวาคม 19:56:04 ip-10-5-11-55.ec2.internal systemd[1]: การเริ่มต้นเซิร์ฟเวอร์ Apache HTTP...
23 ธันวาคม 19:56:05 ip-10-5-11-55.ec2.internal httpd[31799]: httpd (pid 4461) กำลังทำงานอยู่
23 ธันวาคม 19:56:05 ip-10-5-11-55.ec2.internal systemd[1]: ไม่สามารถเริ่มเซิร์ฟเวอร์ Apache HTTP
23 ธันวาคม 19:56:05 ip-10-5-11-55.ec2.internal systemd[1]: หน่วย httpd.service เข้าสู่สถานะล้มเหลว
23 ธันวาคม 19:56:05 ip-10-5-11-55.ec2.internal systemd[1]: httpd.service ล้มเหลว

ไม่มีอะไรผิดปกติในบันทึกข้อผิดพลาดของ Apache:

[พฤ. 23 ธ.ค. 07:18:58.777745 2021] [suexec:notice] [pid 4460] AH01232: เปิดใช้งานกลไก suEXEC (wrapper: /usr/sbin/suexec)
[พฤ. 23 ธ.ค. 07:18:58.802753 2021] [lbmethod_heartbeat:notice] [pid 4461] AH02282: ไม่มี slotmem จาก mod_heartmonitor
[พฤ. 23 ธ.ค. 07:18:58.802850 2021] [http2:warn] [pid 4461] AH10034: mod_http2 ไม่รองรับโมดูล mpm (prefork.c) mpm กำหนดวิธีการประมวลผลในเซิร์ฟเวอร์ของคุณ HTTP/2 มีมากกว่านั้น
[พฤ. 23 ธ.ค. 07:18:58.847386 2021] [mpm_prefork:notice] [pid 4461] AH00163: Apache/2.4.51 () กำหนดค่า PHP/7.4.21 -- กลับมาดำเนินการตามปกติ
[พฤ. 23 ธ.ค. 07:18:58.847414 2021] [core:notice] [pid 4461] AH00094: บรรทัดคำสั่ง: '/usr/sbin/httpd'

ถ้าฉันฆ่า PID "หลัก" นี้ ฉันก็สามารถรีสตาร์ทได้โดยไม่มีปัญหา

# ฆ่า 4461
# systemctl รีสตาร์ท httpd; systemctl สถานะ httpd;
â httpd.service - เซิร์ฟเวอร์ Apache HTTP
   โหลดแล้ว: โหลดแล้ว (/usr/lib/systemd/system/httpd.service; ปิดใช้งาน; ค่าที่ตั้งไว้ล่วงหน้าของผู้ขาย: ปิดใช้งาน)
   ใช้งานอยู่: ใช้งานอยู่ (ทำงาน) ตั้งแต่พฤ. 2021-12-23 20:01:31 UTC; 6ms ที่แล้ว
     เอกสาร: man:httpd.service(8)
 PID หลัก: 3091 (httpd)
   สถานะ: "โหลดการกำหนดค่าแล้ว"
   CGroup: /system.slice/httpd.service
           ââ3091 /usr/sbin/httpd -DFOREGROUND

23 ธันวาคม 20:01:31 น. ip-10-5-11-55.ec2.internal systemd[1]: การเริ่มต้นเซิร์ฟเวอร์ Apache HTTP...
23 ธันวาคม 20:01:31 ip-10-5-11-55.ec2.internal systemd[1]: เริ่มเซิร์ฟเวอร์ Apache HTTP
# ps -Af | เกรป httpd
รูท 3145 1 1 20:01 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
อาปาเช่ 3147 3145 0 20:01 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
อาปาเช่ 3153 3145 0 20:01 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
อาปาเช่ 3171 3145 0 20:01 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
อาปาเช่ 3177 3145 0 20:01 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
อาปาเช่ 3183 3145 0 20:01 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND

คำแนะนำของคนส่วนใหญ่คือ "แค่ฆ่ากระบวนการ" Apache ล้มเหลวในการเริ่มทำงาน แต่ไม่ได้ทำการแมชชีนไฟล์ pid? แต่ฉันต้องการสิ่งนี้เพื่อทำงานโดยไม่ต้องมีคนดูแล ฉันจะดูอะไรได้อีก

digijay avatar
mx flag
_"โมดูล mpm (prefork.c) ไม่รองรับโดย mod_http2":_ แก้ไขสิ่งนี้ก่อนโดยเปลี่ยนเป็น `mpm_worker` หรือ `mpm_event`
cn flag
@digijay ใช่ ฉันรู้ แต่มีปัญหากับ HTTP2 และ AWS load balancing ดังนั้นฉันจึงไม่กังวลเกี่ยวกับเรื่องนี้และข้อความเตือนนี้มีอยู่ในเซิร์ฟเวอร์เก่า ดังนั้นจึงเกี่ยวข้องกับปัญหาปัจจุบัน
cn flag
ฉันหมายถึง "ไม่" เกี่ยวข้อง
Score:0
ธง cn

แม้ว่าฉันจะค้นหามาก แต่ก็ไม่พบคำตอบสำหรับ Linux รุ่นอื่นฉันได้คำตอบเมื่อสังเกตว่าเดิมที httpd เริ่มต้นด้วย "apachectl" และฉันพยายามรีสตาร์ทโดยใช้ "systemctl" และคิดว่านี่อาจเป็นปัญหา เมื่อฉันค้นหาสิ่งนี้ฉันพบคำตอบมากมาย สิ่งนี้ดูเหมือนจะรัดกุมที่สุด: https://unix.stackexchange.com/questions/240528/apache-and-systemd

ในที่อื่น ๆ คุณเห็นปัญหาเดียวกันกับที่ฉันพบซึ่งเมื่อคุณเริ่มต้นด้วย apachectl คุณต้องยึดติดกับมันเพราะ systemd ไม่สามารถรู้ได้ว่าคุณทำอะไรกับ apachectl เนื่องจากใช้การกำหนดค่าอื่น

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา