Direktori PidFile Apache dihapus setiap boot


11

Setiap kali server di-reboot, direktori / run / httpd dihapus. / run adalah sistem file tmpfs, oleh karena itu, dipasang di RAM.

/ run / httpd dibuat hanya selama instalasi. Ketika saya memulai httpd setelah reboot, direktori tidak dibuat ulang.

Server telah menginstal CentOS 7 dan paket Apache repositori oficial (v. 2.4.6-18).

Setelah Apache menginstal dan memulai, direktori adalah sebagai berikut:

# 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 ..

Tetapi setelah reboot:

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

Dan inilah log ketika mencoba me-restart 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 / message

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'

Ketika saya membuat direktori secara manual, Apache memulai:

# 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

Dan setelah reboot, itu hilang lagi.

Adakah pemikiran mengapa ini terjadi?

Jawaban:


8

Masalahnya adalah, ketika menginstal Apache, apache grup tidak dibuat.

# 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.

Itu karena saya sudah mengkonfigurasi server NIS, dengan pengguna apache NIS . Karena memiliki pengguna apache , instalasi Apache tidak membuat grup apache . Tetapi grup apache juga ada di NIS! Nah, NIS mengacaukan semuanya.

Intinya adalah: Saya harus menghentikan ypbind, menginstal Apache dan kemudian me-restart ypbind (atau hanya membuat secara manual grup apache di / etc / group).


2

Saya punya solusi yang sama untuk masalah saya sebagai @dakakid dengan perbedaan bahwa setelah reboot systemd-tmpfiles-setup.serviceitu sudah mati lagi.

Untuk solusi saya, Anda pertama-tama perlu tahu bahwa saya memasang direktori / var saya pada disk yang berbeda. Dan ada masalah. Saya /etc/fstabuntuk yang /vartampak seperti ini:

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

Jadi masalahnya adalah _netdev. Karena ini mungkin berguna untuk NFS, di mana Anda memerlukan jaringan tetapi tidak untuk kasus saya dengan /vardirektori

Inilah penjelasan untuk _netdev:

Filesystem berada pada perangkat yang memerlukan akses jaringan (digunakan untuk mencegah sistem dari mencoba me-mount sistem file ini sampai jaringan telah diaktifkan pada sistem).

Setelah saya menghapus _netdev semuanya bekerja kembali, juga setelah reboot


1

Saya memiliki masalah yang sama tetapi dengan solusi yang sedikit berbeda.

Menggunakan solusi @joaoolavo , saya mencoba 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)

Perhatikan bahwa Aktif: tidak aktif (mati).

Restart systemd-tmpfiles-setup membuat file yang saya butuhkan di / run /, dan statusnya berubah menjadi Active: active (exited), walaupun, jelasnya, httpd (dan dalam kasus saya, postgresql) tidak dimuat:

[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.

Apakah ini bisa selamat dari reboot?

Ya itu. Bahkan, reboot sekarang muncul seperti yang kita harapkan - semua tmpfile dibuat, httpd dan postgresql juga dimulai.

Tampaknya systemd-tmpfiles-setup.serviceperlu dalam keadaan aktif aktif (keluar) daripada tidak aktif (mati) untuk bekerja dengan baik setelah boot.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.