tra-loi-cau-hoi-phat-trien-web.com

OSX làm thế nào để hiển thị trạng thái Apache trong thiết bị đầu cuối?

Tôi nhận thấy rằng trên máy chủ linux của tôi khi tôi gõ apachectl, nó cung cấp cho tôi những phản hồi nhỏ nhưng hữu ích như restarting và sau đó [ok] hoặc là [fail] ở cuối dòng. Không nhiều, nhưng ít nhất tôi biết những gì đang xảy ra, và tôi có thể kiểm tra nhật ký.

Trên OS X của tôi, tôi không nhận được gì. chỉ dòng tiếp theo ngay lập tức:

sh-3.2# /usr/sbin/apachectl stop   
sh-3.2# /usr/sbin/apachectl start
sh-3.2# 

Làm cách nào tôi có thể kích hoạt các tính năng 'gỡ lỗi' đó?

11
mgPePe

Làm thế nào về kịch bản trình bao bọc apachectl bạn dán một cái gì đó như thế này vào cuối.

tail -5 /var/log/httpd/error_log

bạn sẽ thấy một cái gì đó như thế này trong một khởi động bình thường

  • [Thứ Sáu 22 tháng 4 23:39:20 2011] [thông báo] Digest: tạo bí mật cho
    [.__.] Xác thực tiêu hóa ...
  • [Thứ Sáu 22 tháng 4 23:39:20 2011] [thông báo] Digest: xong
  • [Thứ Sáu ngày 22 tháng 4 23:39:20 2011] [cảnh báo] tệp pid
    [.__.]/mlk/Apache/pid/httpd.pid bị ghi đè - Tắt máy trong quá trình chạy Apache trước đó?
  • [Thứ Sáu ngày 22 tháng 4 23:39:20 2011] [thông báo] Apache/2.0.63 (Unix) DAV/2 được định cấu hình - tiếp tục các hoạt động bình thường

Nếu không, bất kỳ lỗi nào ít nhất một phần sẽ được hiển thị ở đây. Các cụm từ chính được hilight ở trên.

Bổ sung:/usr/sbin/apachectl được sở hữu bởi root, bạn phải là người dùng đặc quyền để làm điều này. Sudo vi/usr/sbin/apachectl

di chuyển đến cuối tập tin và chèn đoạn này vào giữa dòng "esac" và "exit $ ERROR". I E.

esac
sleep 2; tail -5 /var/log/httpd/error_log
exit $ERROR

Lưu ý điều này sẽ in ra một vài dòng cuối cùng bất kể bạn thực hiện hành động nào với tập lệnh, dừng bắt đầu, khởi động lại. bạn có thể chỉ muốn đặt nó trong phần bắt đầu của tuyên bố trường hợp.

5
Michael Henry

Tôi có cùng một vấn đề trên máy Mac của tôi. Khi tôi cố gắng khởi động Apache và không có gì xảy ra, tôi lập tức chạy lệnh này. Trong trường hợp của tôi, vấn đề dường như luôn nằm ở các tệp cấu hình Apache.

apachectl configtest
30
Randy Findley

apachectl trên Mac là trình bao bọc xung quanh một số lệnh launchctl (chỉ cần nhìn vào tệp). Thật không may, launchctl không thoát với mã lỗi khi có lỗi xảy ra khi bắt đầu httpd, vì vậy tập lệnh không có cách nào dễ dàng để hiển thị bất cứ thứ gì, ngay cả khi nó cố gắng.

Một kiểm tra cơ bản mà bạn có thể tự thực hiện là kiểm tra sự tồn tại của các quy trình Apache sau apachectl start chỉ huy.

ps aux | grep httpd
8
Sven

Trên macOS với lệnh netstat hiển thị tất cả kết nối mạng. Bạn chỉ có thể lọc các kết nối 'nghe' và xem các máy chủ http (s).

Bạn có thể tạo một tệp bash với mã này:

status="$(netstat -at | grep LISTEN | grep *.http)"
count="$(echo "${status}" | grep -Ev "^$" | wc -l)"

if [ ${count} -eq 0 ] ; then
    echo " Apache server is not running"
fi   

echo "${status}" | 
while IFS= read -r line
do
    echo " ${line}"
done

Kết quả khi máy chủ bị dừng Sudo apachectl -k stop sẽ là:

Apache server is not running

Kết quả khi máy chủ đang chạy Sudo apachectl -k stop sẽ là:

tcp46      0      0  *.https                *.*                    LISTEN     
tcp46      0      0  *.http                 *.*                    LISTEN     

Trong ví dụ này tôi có hai máy chủ đang chạy, một với https và một với http.

0
equiman