Apache2 (httpd) không hoạt động sau khi cập nhật lên High Sierra


15

Tôi gặp sự cố khi Apache sẽ không bắt đầu sau khi cập nhật lên High Sierra 10.13.1. Không có bất cứ điều gì hiển thị trong nhật ký lỗi, nhưng khi tôi cố gắng apachectl startkhông có gì xảy ra. Nếu tôi chạy apachectl configtesttôi nhận được "Cú pháp OK

Tôi đã sử dụng các lệnh như sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plistvô ích. Apache sẽ không bắt đầu. Tôi có thể chạy sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.httpd.plistvà điều đó cũng không hoạt động.

Tôi đã xem danh sách các dịch vụ sản xuất bia và httpd hiển thị trong danh sách cùng với quy trình khác (mysql) nhưng trạng thái của httpd đang hiển thị "bắt đầu" màu vàng thay vì màu xanh lục.

Tôi đã thử nhiều thứ khác nhau, và điều tôi đang tìm kiếm là nếu tôi nhìn vào tệp system.log tôi tìm thấy com.apple.xpc.launchctl[1] (homebrew.mxcl.httpd24[11780]): Service exited with abnormal code:1

Nếu tôi chạy apachectl start, lệnh dường như hoạt động, nhưng khi tôi chạy lệnh dừng, tôi nhận được "httpd (không có tệp pid) không chạy.
Tôi cũng nhận được đầu ra của com .; Apple.xpc.launchd [1] ( org.apache.httpd): Vui lòng chuyển từ OnDemand sang KeepAlive.

Có điều gì đó với High Sierra đang ngăn Apache chạy khi nó chạy tốt ở Sierra không?


1
Bạn đang trộn Apache httpd của brew và Apache httpd của Apple (có trình tiện khởi chạy bắt đầu các nhị phân khác nhau)! Bạn lấy trạng thái httpd từ đâu (nghĩa là chỉ báo màu vàng so với màu xanh lá cây)? Bạn đã sử dụng hướng dẫn thiết lập ban đầu nào?
klanomath

Tôi không trộn lẫn chúng, tôi đã trải qua các bước sử dụng thử cả hai loại bia và bia của Apple, Khi tôi thực hiện một danh sách brew services list' I receive a yellow indicator, I checked with all of the available users and ran dịch vụ sản xuất bia và tất cả chúng đều hiển thị cùng một chỉ báo. Đối với hướng dẫn thiết lập, Ansible đã được sử dụng để thiết lập apache. Điều này đã được thực hiện trên 5 chiếc MacBook khác, chúng vẫn đang chạy Sierra. Một chiếc MacBook này đã gặp sự cố và Apple đã chạy chẩn đoán và đặt lại HĐH, đồng thời cập nhật HĐH lên High Sierra
Alcyeonnero

Với ý tôi là: bạn có ít nhất hai tệp nhị phân apachectl và httpd (và hai tệp cấu hình). Thông thường apachectl của brew được ưa thích (do nội dung mặc định của biến PATH, mặc dù của bạn có thể khác). Apachectl của AFAIR sẽ không khởi động httpd của Apple với tùy chọn bắt đầu mặc định (nghĩa là apachectl start). Tương tự với ... configtest!
klanomath

Với "Ansible đã được sử dụng để thiết lập apache", ý bạn là hướng dẫn này: Mac Development Ansible Playbook ? Tốt hơn là thêm một liên kết đến / hướng dẫn cách làm hoặc thiết lập. Các hướng dẫn thiết lập khác nhau cho các phiên bản macOS khác nhau đều chứa các cấu hình hơi khác nhau / tạo các env khác nhau.
klanomath

Tôi vừa cập nhật lên High Sierra vào cuối tuần này, và tôi đang gặp vấn đề chính xác như vậy. Tôi đã sử dụng httpdcông thức Homebrew và bây giờ apache không phản hồi. Khi tôi làm brew services list, tôi cũng nhận được startedhttpd màu vàng và khi tôi chạy sudo apachectl stop, nó cho tôi biết điều đóhttpd (pid 87?) not responding.
wonder95

Câu trả lời:


16

Theo ý kiến ​​của tôi, bạn đã loại bỏ các cơ chế khởi động / khởi động httpd khác nhau của mình bằng cách thực thi quá nhiều lệnh liên quan đến httpd.

Với apache-httpd của homebrew và homebrew được cài đặt và PATH mặc định, bạn có sáu cách để bắt đầu httpd.

Apache của Apple:

  • sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
  • sudo /usr/sbin/apachectl start

Apache của Homebrew:

  • sudo apachectl start
  • apachectl start
  • sudo brew services start httpd
  • brew services start httpd

Nếu bạn đã sao chép tệp homebrew.mxcl.httpd.plist theo cách thủ công sang ~ / Library / LaunchAgents / hoặc / Library / LaunchDaemons / bạn có thêm hai tùy chọn để bắt đầu bằng cách tải chúng bằng (sudo) launchctl load ....

Nếu bạn không sửa đổi các tệp cấu hình httpd hoặc các tập lệnh apachectl, thì chi nhánh Apple sẽ sử dụng tệp httpd.conf của Apple trong / var và DocumentRoot trong thư mục / Thư viện.

Nhánh homebrew sử dụng các thư mục con trong / usr / local /.

Một số phương thức khởi chạy sẽ không hoạt động nếu bạn đã gắn các cổng httpd vào các cổng thấp hơn 1024!

Nếu bạn sử dụng (sudo) brew services ...để bắt đầu httpd, bạn phải sử dụng (sudo) brew services listlệnh thích hợp để kiểm tra trạng thái:

Nếu bạn bắt đầu nó với quyền root thì hãy liệt kê nó với root private:

sudo brew services start httpd > sudo brew services list

hoặc với quyền riêng tư của người dùng:

brew services start httpd> brew services list.


Để giải quyết vấn đề của bạn, hãy tải xuống httpd của Apple:

  • sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
  • xóa mọi homebrew.mxcl.httpd.plist được cài đặt thủ công
  • dừng bất kỳ dịch vụ httpd homebrew nào với (sudo) brew services stop httpd
  • dừng bất kỳ httpd bắt đầu bởi apachectl:

    apachectl stop
    sudo apachectl stop
    sudo /usr/sbin/apachectl stop
    
  • Mở Activity Monitor và kiểm tra xem không có tiến trình httpd nào đang chạy.
  • Khởi động lại

Bây giờ - giả sử bạn muốn sử dụng httpd của homebrew trên các cổng đặc quyền - hãy nhập:

sudo brew services start httpd

Kiểm tra bắt đầu thành công với sudo brew services list.


Khi thử sửa lỗi bạn cung cấp, tôi nhận được đầu ra giống như tôi đã làm. apachectl stopcung cấp đầu ra httpd (no pid file) not runningvà khi tôi chạy sudo brew services httpd start sudo brew services list chỉ ra apache2 (httpd) startedcó màu vàng Khi tôi cố gắng truy cập bất kỳ trang web nào liên quan đến tôi không thể. Tôi tự hỏi nếu bản cập nhật lên 10.13 đã thay đổi một cái gì đó trong apache ngăn nó bắt đầu.
Alcyeonnero

14

Liên quan đến homebrew httpd, một vấn đề gần đây tôi gặp phải là một tệp httpd.pid còn sót lại cũ đang ngăn httpd bắt đầu. Triệu chứng apachectl startcho biết httpd đã chạy, nhưng không được.

Nguyên nhân là một tập tin cũ ở đây:

/usr/local/var/run/httpd/httpd.pid

Giải pháp là xóa tập tin pid này và sau đó httpd bắt đầu.


tuyệt quá! đây là vấn đề của tôi khi MBP của tôi quyết định rằng nó sẽ không tỉnh dậy và tôi phải xoay vòng nó.
frumbert

2
Giải pháp này cũng hoạt động trong MacOS Mojave. Brew nghĩ rằng Apache đang chạy nhưng không có httpdmàn hình hoạt động. Điều này đã sửa nó.
Vahid Amiri

Điều này đã cứu tôi rất nhiều rắc rối!
SEJU

Cái này cũng có tác dụng với tôi. Tôi không thể tải bất kỳ trang web nào và tiếp tục nhận ERR_CONNECTION_REFUSED. Khi tôi cố gắng liệt kê các dịch vụ đang chạy cùng với brew services listtôi, tôi nhận được trạng thái 'bắt đầu' màu vàng có nghĩa là có gì đó không đúng với trạng thái hoạt động của máy chủ. Việc xóa pid đã sửa lỗi này và bây giờ danh sách dịch vụ hiển thị trạng thái hoạt động là "bắt đầu" màu xanh lá cây thay vào đó. Cảm ơn vì điều này!
Mike Kormendy

Nếu máy của bạn đã khởi động lại cứng sau khi bị hoảng loạn hạt nhân / cắt điện / vv thì đây có thể là vấn đề của bạn. Cảm ơn!
Dom Stubbs

2

Tôi đã đối mặt như vậy sau khi tôi nâng cấp lên High Sierra sớm hôm nay. Tôi thấy rằng các tập tin apache sau đây đã được thay thế bằng các phiên bản hoàn toàn mới. May mắn thay cho tất cả các tệp này đã tồn tại một tệp FILE ~ trước đó trong cùng một thư mục. Tôi chỉ sao chép ~ phiên bản trước đó trở lại phiên bản gốc, khởi động lại apache và mọi thứ đều ổn.

Trong thư mục /etc/apache2:

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

Thí dụ:

cp /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf

Trong thư mục /etc/apache2/extra/có khoảng 10 tệp có ~ trước đó được thêm vào chúng, nếu tất cả các tệp này được thay đổi hoặc chỉ hai /etc/apache2/extra/
tệp

Tôi sẽ bắt đầu với các tập tin httpd.conf và httpd-vhosts.conf. Nếu bạn đã thiết lập SSL thì bạn cũng cần cập nhật httpd-ssl.conf. Phần còn lại phụ thuộc vào việc bạn đã thay đổi chúng sớm hơn. Tôi sẽ sử dụng một diff để xem các tập tin đã thay đổi hay chưa, ví dụ diff httpd.conf httpd.conf ~ trước đó trên tất cả các tập tin khác
Unmesh

Tôi đã bắt đầu với những tập tin đó, điều đó không thay đổi gì cả.
Alcyeonnero

1

Tôi đã từng gặp vấn đề tương tự

com.apple.xpc.launchctl[1] (homebrew.mxcl.httpd24[11780]): Service exited with abnormal code:1

Điều này có nghĩa là httpd thoát bất thường.

Sau đó tôi tự khởi động httpd để xem vấn đề là gì

> httpd
(13)Permission denied: AH00091: httpd: could not open error log file /usr/local/var/log/httpd/error_log.

Nhìn vào các quyền, nó khá rõ ràng

> ll /usr/local/var/log/httpd/
total 96
-rw-r--r--  1 root  admin    242 15 apr 12:38 access_log
-rw-r--r--  1 root  admin  42062 20 jun 11:01 error_log

Tôi nghĩ rằng tôi đã bắt đầu httpd với quyền root gây ra vấn đề này. Tôi đã xóa các tập tin và sau đó

brew services restart httpd

tất cả đều ổn


0

Tôi sẽ đề nghị ngược lại với những gì HomeBrew nói luôn chạy httpd bởi sudo. Ở đó nếu bạn làm ps -aef | grep httpd, bạn sẽ thấy nó được liệt kê là đang chạy. Làm mà không có sudo sẽ không tạo ra đầu ra ps, điều này có thể khiến httpd không hiển thị sai.

Ngoài ra tôi không chắc chắn nếu có các cấu hình khác nhau hoặc giống nhau được tải trong cả hai trường hợp. Tôi đã cài đặt PHP và tạo tệp test.php với phpinfo trong thư mục DocumentRoot. Nếu bạn bắt đầu apache với sudo, bạn có thể thấy phpinfo với localhost / test.php trong khi sử dụng dịch vụ brew, httpd sẽ báo lỗi nếu DocumentRoot nằm trong khu vực yêu cầu quyền truy cập root.

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.