Nhầm lẫn về DFOREGROUND với Apache


15

Vì vậy, tôi mới cài đặt Apache trên máy chủ CentOS 7 mới, sử dụng Yum. Tôi đã cài đặt Apache nhiều lần trước đây, nhưng tôi chưa bao giờ thấy điều này: Khi tôi chạy ps aux bây giờ, nó luôn hiển thị

/ usr / sbin / httpd-GIỚI THIỆU

Google nói với tôi điều đó có nghĩa là quá trình sẽ chạy ở phía trước và không tách ra khỏi vỏ, nhưng tôi không thực sự hiểu điều đó có nghĩa là gì - nếu tôi đóng vỏ của mình, Apache sẽ chết?

Tôi chỉ muốn có được hành vi Apache bình thường và có httpd chạy như mọi khi, chạy theo nền, tôi có cần phải tắt DFOREGROUND không? (Tôi không thể tìm ra cách để btw)


Và bạn đã bắt đầu Apache như thế nào?
Michael Hampton

Nó xảy ra nếu tôi thực hiện 'dịch vụ apache bắt đầu' hoặc khi máy chủ khởi động và nó tải tập lệnh init.d / httpd.
Cocorico

Kịch bản "init.d / httpd" là gì? Bạn không nên có bất kỳ kịch bản như vậy.
Michael Hampton

Michael: Tôi đã sao chép một cái từ máy chủ cũ của mình vì tôi không thể tìm ra cách khác để bắt đầu khởi động. Thay vào đó tôi nên làm gì?
Cocorico

systemctl enable httpd. Xem tài liệu
Michael Hampton

Câu trả lời:


20

Các -DFOREGROUNDtùy chọn không thực sự có nghĩa là Apache sẽ không ngã ba, nhưng điều đó không có nghĩa là nó được gắn vào vỏ của bạn!

Dịch vụ được bắt đầu bởi systemd khi bạn chạy systemctl start httpd(hoặc theo kiểu cũ, service httpd start). Đó là systemd mà Apache được đính kèm và systemd đang quản lý tiến trình như một trong những đứa con của nó. Điều này được thực hiện để systemd có thể dễ dàng biết được liệu Apache có bị sập hay không mà không phải thăm dò tệp pid hoặc thực hiện các hành vi hack khó chịu khác. Điều này cũng có nghĩa là systemd có khả năng tự động khởi động lại Apache nếu nó gặp sự cố.

Chạy systemctl status httpdđể xem trạng thái của nó. Một ví dụ trông như:

# systemctl status httpd
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active: active (running) since Sat 2014-07-12 01:53:50 UTC; 1 weeks 3 days ago
  Process: 21400 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS)
 Main PID: 390 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─  390 /usr/sbin/httpd -DFOREGROUND
           ├─15379 /usr/sbin/httpd -DFOREGROUND
           ├─15858 /usr/sbin/httpd -DFOREGROUND
           ├─16809 /usr/sbin/httpd -DFOREGROUND
           ├─16944 /usr/sbin/httpd -DFOREGROUND
           ├─17079 /usr/sbin/httpd -DFOREGROUND
           ├─17351 /usr/sbin/httpd -DFOREGROUND
           ├─17487 /usr/sbin/httpd -DFOREGROUND
           ├─17772 /usr/sbin/httpd -DFOREGROUND
           ├─17908 /usr/sbin/httpd -DFOREGROUND
           └─18043 /usr/sbin/httpd -DFOREGROUND

Jul 12 01:53:50 hozen httpd[390]: AH02559: The SSLCertificateChai...d
Jul 12 01:53:50 hozen httpd[390]: AH00558: httpd: Could not relia...e
Jul 12 01:53:50 hozen systemd[1]: Started The Apache HTTP Server.
Jul 13 03:30:02 hozen systemd[1]: Reloading The Apache HTTP Server.
Jul 13 03:30:02 hozen httpd[9332]: AH02559: The SSLCertificateCha...d
Jul 13 03:30:02 hozen systemd[1]: Reloaded The Apache HTTP Server.
Jul 21 03:19:02 hozen systemd[1]: Reloading The Apache HTTP Server.
Jul 21 03:19:02 hozen httpd[21400]: AH02559: The SSLCertificateCh...d
Jul 21 03:19:02 hozen systemd[1]: Reloaded The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.

2
Cảm ơn, điều đó rất có ý nghĩa. Vì vậy, chỉ để chắc chắn rằng tôi hiểu, mặc dù vậy, chạy tốt với DFOREGROUND và nó thực sự tốt, không tệ, phải không?
Cocorico

3
Vâng, nó ổn
Michael Hampton

1
@MichaelHampton Có cách nào để biết chính xác một trong những quy trình này đang chạy không?
carla
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.