High Sierra로 업데이트 한 후 Apache2 (Httpd)가 작동하지 않음


15

High Sierra 10.13.1로 업데이트 한 후 Apache가 시작되지 않는 문제가 있습니다. 오류 로그에 아무것도 표시되지 않지만 아무 일도하려고 apachectl start하지 않습니다. 내가 실행하면 apachectl configtest"구문 OK

나는 sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist쓸데없는 명령을 사용했습니다 . Apache가 시작되지 않습니다. 나는 달릴 수 sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.httpd.plist있고 그 중 하나도 작동하지 않습니다.

나는 brew services 목록을 보았고 httpd는 다른 프로세스 (mysql)와 함께 목록에 나타나지만 httpd의 상태는 녹색 대신 노란색으로 시작되었습니다.

나는 많은 다른 것들을 시도했지만, 내가 찾은 것은 system.log 파일을 보면 내가 찾은 것입니다. com.apple.xpc.launchctl[1] (homebrew.mxcl.httpd24[11780]): Service exited with abnormal code:1

apachectl start를 실행하면 명령이 작동하는 것처럼 보이지만 stop 명령을 실행하면 "httpd (pid 파일 없음)가 실행되지 않습니다.
또한 com.; apple.xpc.launchd [1] ( org.apache.httpd) : OnDemand에서 KeepAlive로 전환하십시오.

Sierra에서 Apache가 제대로 실행될 때 Apache가 실행되지 못하게하는 High Sierra가 있습니까?


1
brew의 Apache httpd와 Apple의 Apache httpd (시작 데몬이 다른 바이너리를 시작 함)를 혼합하고 있습니다! httpd 상태는 어디에서 얻습니까 (예 : 노란색 대 녹색 표시기)? 어떤 초기 설정 안내서를 사용하셨습니까?
klanomath

나는 그것들을 섞지 않고, 양조와 애플의 아파치를 모두 사용하는 단계를 brew services list' I receive a yellow indicator, I checked with all of the available users and ran 거쳤 습니다. 양조 서비스 목록을 수행 할 때 모두 동일한 지표를 보여줍니다. 설정 가이드는 Ansible을 사용하여 아파치를 설정했습니다. 이 작업은 5 대의 다른 MacBook에서 수행되었으며 여전히 Sierra를 실행하고 있습니다. 이 맥북에 문제가 있었고 애플은 진단을 실행하고 OS를 재설정하면서 OS를 High Sierra로 업데이트하는 동안
Alcyeonnero

믹싱으로 의미 : 적어도 두 개의 apachectl 및 httpd 바이너리가 설치되어 있습니다 (및 두 개의 구성 파일). 일반적으로 brew의 apachectl이 선호됩니다 (PATH 변수의 기본 내용 때문에 귀하의 내용이 다를 수 있습니다). AFAIR brew의 apachectl은 기본 시작 옵션 (예 :)으로 Apple의 httpd를 시작하지 않습니다 apachectl start. 동일합니다 ... configtest!
klanomath

"Asible은 아파치를 설정하는 데 사용되었습니다"라는 의미로이 가이드를 의미합니다. Mac Development Ansible Playbook ? 방법 / 설정 안내서에 대한 링크를 추가하는 것이 좋습니다. 다양한 macOS 버전에 대한 다양한 설정 안내서는 모두 약간 다른 구성을 포함하고 / 다른 환경을 만듭니다.
klanomath

이번 주말에 High Sierra로 방금 업데이트했는데 같은 문제가 발생했습니다. Homebrew httpd수식을 사용하고 있는데 아파치가 응답하지 않습니다. 내가 할 때 brew services list, 나는 또한 얻을 started노란색으로 아파치를 들어, 내가 실행할 때 sudo apachectl stop, 그것은 나에게 말한다httpd (pid 87?) not responding.
wonder95

답변:


16

제 생각에는 너무 많은 httpd 관련 명령을 실행하여 다양한 httpd 시작 데몬 / 시작 메커니즘을 강화했습니다.

homebrew 및 homebrew의 apache-httpd 및 기본 PATH를 사용하면 httpd를 시작하는 6 가지 방법이 있습니다.

애플의 아파치 :

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

사제 아파치 :

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

homebrew.mxcl.httpd.plist 파일 을 ~ / Library / LaunchAgents / 또는 / Library / LaunchDaemons /에 수동으로 복사 한 경우 파일 을로드하여 시작하는 두 가지 옵션이 더 있습니다 (sudo) launchctl load ....

httpd 구성 파일이나 apachectl 스크립트를 크게 수정하지 않은 경우 Apple 지점은 / var의 Apple httpd.conf 파일과 / Library 폴더의 DocumentRoot를 사용합니다.

homebrew 브랜치는 / usr / local /의 하위 폴더를 사용합니다.

httpd 포트를 1024보다 낮은 포트에 바인딩 한 경우 일부 시작 방법이 작동하지 않습니다!

당신이 사용하는 경우 (sudo) brew services ...아파치를 시작하는 당신은 적절한 사용해야 (sudo) brew services list상태를 확인하는 명령을 :

루트로 시작한 경우 루트 권한으로 나열하십시오.

sudo brew services start httpd > sudo brew services list

또는 사용자 권한이있는 경우 :

brew services start httpd> brew services list.


문제를 해결하려면 Apple의 httpd를 언로드하십시오.

  • sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
  • 수동으로 설치된 homebrew.mxcl.httpd.plist를 제거하십시오.
  • 와 함께 모든 homebrew httpd 서비스를 중지 (sudo) brew services stop httpd
  • apachectl로 시작한 httpd를 중지하십시오.

    apachectl stop
    sudo apachectl stop
    sudo /usr/sbin/apachectl stop
    
  • 활동 모니터를 열고 httpd 프로세스가 실행되고 있지 않은지 확인하십시오.
  • 재부팅

이제 권한있는 포트에서 homebrew의 httpd를 사용하려는 경우 다음을 입력하십시오.

sudo brew services start httpd

로 시작을 확인하십시오 sudo brew services list.


제공 한 수정 사항을 시도 할 때와 동일한 결과가 표시됩니다. apachectl stop출력을 제공하고 httpd (no pid file) not running실행하면 sudo brew services httpd start sudo brew services list apache2 (httpd) started가 노란색으로 나타납니다 . 웹 페이지에 액세스하려고하면 할 수 없습니다. 10.13으로의 업데이트가 아파치에서 시작을 방해하는 것을 변경했는지 궁금합니다.
Alcyeonnero

14

homebrew httpd와 관련하여 최근에 발생한 한 가지 문제는 httpd가 시작되지 못하게하는 오래된 httpd.pid 파일이었습니다. apachectl starthttpd가 이미 실행되고 있지만 증상이 아니라고합니다.

원인은 여기에 오래된 파일이었습니다.

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

해결책은이 pid 파일을 삭제 한 다음 httpd가 시작되었습니다.


큰! 이것은 MBP가 절전 모드에서 해제되지 않기로 결정하고 전원을 껐다 켜야 할 때 문제입니다.
frumbert

2
이 솔루션은 MacOS Mojave에서도 작동했습니다. Brew는 Apache가 실행되고 있다고 생각했지만 httpd활동 모니터 에는 없습니다 . 이것은 그것을 고쳤다.
Vahid Amiri

이로 인해 많은 문제가 발생했습니다!
SEJU

이것은 나를 위해 일했다. 웹 사이트를로드 할 수 없어서 ERR_CONNECTION_REFUSED를 계속 받았습니다. 실행중인 서비스를 나열하려고 할 때 brew services list노란색 '시작됨'상태가되어 서버의 활성 상태에 문제가 있음을 의미했습니다. pid를 제거하면이 문제가 해결되었으며 이제 서비스 목록에 현재 상태가 녹색 '시작됨'으로 표시됩니다. 감사합니다!
Mike Kormendy 2012 년

커널 패닉 / 전원 차단 등으로 인해 컴퓨터가 하드 재부팅 된 경우 이는 문제 일 수 있습니다. 감사!
Dom Stubbs

2

오늘 일찍 High Sierra로 업그레이드 한 후에도 같은 상황에 직면했습니다. 다음 아파치 파일이 새 버전으로 바뀌 었다는 것을 알았습니다. 다행스럽게도이 파일들은 모두 같은 폴더에 FILE ~ 이전 파일이있었습니다. 방금 ~ 이전 버전을 원래 버전으로 복사하고 아파치를 다시 시작했는데 모든 것이 정상이었습니다.

폴더에서 /etc/apache2:

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

예:

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

폴더 /etc/apache2/extra/에는 ~ 이전 파일이 추가 된 약 10 개의 파일이 있습니다.이 파일을 모두 변경하거나 /etc/apache2/extra/폴더 에서 언급 한 파일 2 개
Alcyeonnero

httpd.conf 및 httpd-vhosts.conf 파일로 시작합니다. SSL을 설정 한 경우 httpd-ssl.conf도 업데이트해야합니다. 나머지는 이전에 변경했는지 여부에 따라 다릅니다. diff를 사용하여 파일이 변경되었는지 확인합니다. 예를 들어 diff httpd.conf httpd.conf ~ 이전의 다른 모든 파일에서
Unmesh

나는 그 파일을 시작했지만 아무것도 변경하지 않았습니다.
Alcyeonnero

1

나는 같은 문제가 있었다

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

이는 httpd가 비정상적으로 종료되었음을 의미합니다.

그런 다음 httpd를 수동으로 시작하여 문제가 무엇인지 확인했습니다.

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

권한을 보면 꽤 분명했습니다.

> 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

나는이 문제를 일으킨 루트로 httpd를 시작했다고 생각합니다. 파일을 제거한 후

brew services restart httpd

모두 괜찮 았습니다.


1

나는 최근에 이것을 만났다. 원인은 homebrew가 사용자 액세스 가능 폴더에 apache2 / httpd를 설치하고 사용자로 실행하는 것입니다 (brew services start httpd 명령을 실행하여).

일반 사용자로 실행하지 않으면 httpd가 권한있는 포트 (1024 이하)를 수신 할 수 없습니다.

따라서 httpd.conf가 80 및 443을 수신하도록 구성되어 있어도 httpd는 해당 포트를 통해 요청을 수신 할 수 없습니다.

특 성은 sudo apachectl start 명령을 실행하여 httpd를 시작할 때입니다. 이 명령은 httpd를 루트 사용자로 시작합니다. 루트 사용자는 포트 80 및 443을 청취 할 수 있습니다. httpd는 _www 사용자로 다시 실행되는 권한을 삭제합니다.

따라서 짧은 대답은 포트 80에서 homebrew httpd를 실행하는 것이고 443은 sudo apachectl start를 사용하여 시작하는 것입니다. sudo brew services start httpd로 시작할 수도 있습니다. Brew는 루트에 대한 특정 폴더를 요구한다고 말하는데, sudo apachectl start에는 파일 권한 및 / 또는 소유자 변경이 필요하지 않으므로 괜찮다고 생각합니다.


0

반대로 HomeBrew가 항상 sudo에 의해 httpd를 실행한다고 말합니다. ps -aef | grep httpd를 수행하면 실행 중으로 표시됩니다. sudo없이 수행하면 ps 출력이 생성되지 않아 httpd가 실행되고 있지 않다는 잘못된 인상을 줄 수 있습니다.

또한 두 경우에 서로 다르거 나 동일한 구성이로드되었는지 확실하지 않습니다. PHP를 설치하고 DocumentRoot 디렉토리에 phpinfo로 test.php 파일을 만들었습니다. sudo로 아파치를 시작하면 brew 서비스를 사용하는 동안 localhost / test.php와 함께 phpinfo를 볼 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.