ไดเรกทอรี PidFile ของ Apache จะถูกลบทุกครั้งที่บูต


11

ทุกครั้งที่รีบูตเซิร์ฟเวอร์ไดเร็กทอรี / run / httpd จะถูกลบออก / run เป็นระบบไฟล์ tmpfs ดังนั้นติดตั้งใน RAM

/ run / httpd ถูกสร้างขึ้นระหว่างการติดตั้งเท่านั้น เมื่อฉันเริ่มต้น httpd หลังจากรีบูตไดเรกทอรีจะไม่ถูกสร้างขึ้นใหม่

เซิร์ฟเวอร์ได้ติดตั้ง CentOS 7 และแพ็คเกจ Apache อย่างเป็นทางการ (v. 2.4.6-18)

หลังจาก Apache ติดตั้งและเริ่มต้นไดเรกทอรีดังต่อไปนี้:

# ls -alR /run/httpd/
/run/httpd/:
total 8
drwx--x---.  3 root   apache  120 Sep 30 08:39 .
drwxr-xr-x. 28 root   root   1020 Sep 30 08:37 ..
-rw-r--r--.  1 root   root      8 Sep 30 08:39 authdigest_shm.2953
drwx------.  2 apache apache   40 Jul 23 10:48 htcacheclean
-rw-r--r--.  1 root   root      5 Sep 30 08:39 httpd.pid
srwx------.  1 apache root      0 Sep 30 08:39 wsgi.2953.0.1.sock

/run/httpd/htcacheclean:
total 0
drwx------. 2 apache apache  40 Jul 23 10:48 .
drwx--x---. 3 root   apache 120 Sep 30 08:39 ..

แต่หลังจากรีบูต:

# ls -l /run/httpd
ls: cannot access /run/httpd: No such file or directory

และนี่คือบันทึกเมื่อพยายามรีสตาร์ท Apache:

/ var / log / httpd / error_log

[Tue Sep 30 09:30:32.310825 2014] [core:notice] [pid 3370] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0
[Tue Sep 30 09:30:32.312072 2014] [suexec:notice] [pid 3370] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Tue Sep 30 09:30:32.330380 2014] [auth_digest:notice] [pid 3370] AH01757: generating secret for digest authentication ...
[Tue Sep 30 09:30:32.330421 2014] [auth_digest:error] [pid 3370] (2)No such file or directory: AH01762: Failed to create shared memory segment on file /run/httpd/authdigest_shm.3370
[Tue Sep 30 09:30:32.330440 2014] [auth_digest:error] [pid 3370] (2)No such file or directory: AH01760: failed to initialize shm - all nonce-count checking, one-time nonces, and MD5-sess algorithm disabled
[Tue Sep 30 09:30:32.330445 2014] [:emerg] [pid 3370] AH00020: Configuration Failed, exiting
Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.

/ var / log / ข้อความ

Sep 30 08:56:09 brejetuba2 systemd: Starting The Apache HTTP Server...
Sep 30 08:56:09 brejetuba2 systemd: httpd.service: main process exited, code=exited, status=1/FAILURE
Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.
Sep 30 08:56:09 brejetuba2 systemd: Failed to start The Apache HTTP Server.
Sep 30 08:56:09 brejetuba2 systemd: Unit httpd.service entered failed state.

/var/log/audit/audit.log

Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.
type=SERVICE_START msg=audit(1412083740.602:469): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg=' comm="httpd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=failed'

เมื่อฉันสร้างไดเรกทอรีด้วยตนเอง Apache จะเริ่มต้น:

# mkdir /run/httpd
# systemctl restart httpd
# ls -lRa /run/httpd/
/run/httpd/:
total 8
drwxr-xr-x.  2 root   root  100 Sep 30 09:36 .
drwxr-xr-x. 28 root   root 1020 Sep 30 09:36 ..
-rw-r--r--.  1 root   root    8 Sep 30 09:36 authdigest_shm.3452
-rw-r--r--.  1 root   root    5 Sep 30 09:36 httpd.pid
srwx------.  1 apache root    0 Sep 30 09:36 wsgi.3452.0.1.sock

และหลังจากรีบูตเครื่องมันก็หายไปอีกครั้ง

มีความคิดเห็นเกี่ยวกับสาเหตุที่เกิดขึ้นนี้ไหม

คำตอบ:


8

ปัญหาคือเมื่อติดตั้ง Apache ไม่มีการสร้างกลุ่มapache

# systemctl status systemd-tmpfiles-setup.service
systemd-tmpfiles-setup.service - Create Volatile Files and Directories
  Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-setup.service; static)
  Active: failed (Result: exit-code) since Tue 2014-09-30 09:40:30 EDT; 3h 24min ago
Docs: man:tmpfiles.d(5)
      man:systemd-tmpfiles(8)
  Process: 724 ExecStart=/usr/bin/systemd-tmpfiles --create --remove --boot --exclude-prefix=/dev (code=exited, status=1/FAILURE)
Main PID: 724 (code=exited, status=1/FAILURE)

Sep 30 09:40:30 servername systemd-tmpfiles[724]: [/usr/lib/tmpfiles.d/httpd.conf:1] Unknown group 'apache'.
Sep 30 09:40:30 servername systemd-tmpfiles[724]: [/usr/lib/tmpfiles.d/httpd.conf:2] Unknown user 'apache'.
Sep 30 09:40:30 servername systemd[1]: systemd-tmpfiles-setup.service: main process exited, code=exited, status=1/FAILURE
Sep 30 09:40:30 servername systemd[1]: Failed to start Create Volatile Files and Directories.
Sep 30 09:40:30 servername systemd[1]: Unit systemd-tmpfiles-setup.service entered failed state.

นั่นเป็นเพราะฉันได้กำหนดค่าเซิร์ฟเวอร์ NIS ด้วยผู้ใช้Apache NIS เนื่องจากมีผู้ใช้apacheการติดตั้ง Apache จึงไม่สร้างกลุ่มapache แต่กลุ่มapacheก็มีอยู่ใน NIS! NIS กำลังยุ่งกับสิ่งต่าง ๆ

บรรทัดล่างคือ: ฉันต้องหยุด ypbind ติดตั้ง Apache แล้วรีสตาร์ท ypbind (หรือเพียงแค่สร้างกลุ่มapacheด้วยตนเองใน / etc / group)


2

ฉันมีวิธีแก้ไขปัญหาแบบเดียวกันกับ@datakidด้วยความแตกต่างที่หลังจากรีบูตเครื่องsystemd-tmpfiles-setup.serviceมันก็ตายอีกครั้ง

สำหรับวิธีการแก้ปัญหาของฉันคุณต้องรู้ก่อนว่าฉันติดตั้งไดเรกทอรี / var ของฉันบนดิสก์อื่น และมีปัญหาคือ /etc/fstabสำหรับฉัน/varดูเหมือนว่านี้:

/dev/xvdb1 /var ext4 defaults,noatime,_netdev,nofail 0 2

ดังนั้นปัญหาคือ _netdev เพราะสิ่งนี้อาจมีประโยชน์สำหรับ NFS ที่คุณต้องการเครือข่าย แต่ไม่ใช่สำหรับกรณีของฉันที่มี/varไดเรกทอรี

นี่คือคำอธิบายสำหรับ _netdev:

ระบบไฟล์ตั้งอยู่บนอุปกรณ์ที่ต้องมีการเข้าถึงเครือข่าย (ใช้เพื่อป้องกันไม่ให้ระบบพยายามเมานต์ระบบไฟล์เหล่านี้จนกว่าเครือข่ายจะเปิดใช้งานบนระบบ)

หลังจากฉันลบ _netdev ทุกอย่างก็ทำงานได้อีกครั้งหลังจากรีบูต


1

ฉันมีปัญหาเดียวกันนี้ แต่มีวิธีแก้ปัญหาที่แตกต่างกันเล็กน้อย

ใช้วิธีแก้ปัญหาของ@joaoolavoฉันลองsystemctl status systemd-tmpfiles-setup.service:

[root@server ~]# systemctl status systemd-tmpfiles-setup.service
● systemd-tmpfiles-setup.service - Create Volatile Files and Directories
   Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-setup.service; static; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:tmpfiles.d(5)
           man:systemd-tmpfiles(8)

โปรดทราบว่าใช้งานอยู่: ไม่ทำงาน (ไม่ทำงาน)

การรีสตาร์ท systemd-tmpfiles-setup สร้างไฟล์ที่ฉันต้องการใน / run /, และสถานะเปลี่ยนเป็น Active: active (exited), ถึงแม้ว่า, httpd (และในกรณีของฉัน, postgresql) ไม่ได้โหลด:

[root@server ~]# systemctl start systemd-tmpfiles-setup.service
[root@server ~]# systemctl status systemd-tmpfiles-setup.service
● systemd-tmpfiles-setup.service - Create Volatile Files and Directories
   Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-setup.service; static; vendor preset: disabled)
   Active: active (exited) since Fri 2016-03-18 13:35:36 AEDT; 8s ago
     Docs: man:tmpfiles.d(5)
           man:systemd-tmpfiles(8)
  Process: 2551 ExecStart=/usr/bin/systemd-tmpfiles --create --remove --boot --exclude-prefix=/dev (code=exited, status=0/SUCCESS)
 Main PID: 2551 (code=exited, status=0/SUCCESS)

Mar 18 13:35:36 server.org systemd[1]: Starting Create Volatile Files and Directories...
Mar 18 13:35:36 server.org systemd[1]: Started Create Volatile Files and Directories.

มันจะอยู่รอดได้ในการรีบูตหรือไม่?

ใช่. อันที่จริงตอนนี้การรีบูตขึ้นมาตามที่เราคาดหวัง - tmpfiles ทั้งหมดที่สร้างขึ้น httpd และ postgresql ก็เริ่มขึ้นเช่นกัน

ดูเหมือนว่าsystemd-tmpfiles-setup.serviceจะต้องอยู่ในสถานะใช้งานอยู่ (ออกแล้ว)แทนที่จะไม่ได้ใช้งาน (ตาย)เพื่อให้ทำงานได้อย่างเหมาะสมหลังจากบูต

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.