macOS Mojave에서 Apache를 시작하려고 하면 Permission denied: AH00099: could not create/usr/local/var/run/httpd/httpd.pid가 되었을 때의 대응 방법
이벤트 : Apache를 시작하려고하면 시작하지 않고 로그를 보면 뭔가 나왔다.
# 起動した?
$ apachectl start
# 起動していない
$ apachectl stop
httpd (pid 16705?) not running
# 設定間違い?
$ httpd -t
Syntax OK
# logファイルどこだっけ?
$ cat /usr/local/etc/httpd/httpd.conf | grep ErrorLog
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
ErrorLog "/usr/local/var/log/httpd/error_log"
$ cat /usr/local/var/log/httpd/error_log
[Wed Dec 19 23:53:59.892903 2018] [core:warn] [pid 73462] AH00098: pid file /usr/local/var/run/httpd/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Wed Dec 19 23:53:59.893658 2018] [core:error] [pid 73462] (13)Permission denied: AH00099: could not create /usr/local/var/run/httpd/httpd.pid
[Wed Dec 19 23:53:59.893697 2018] [core:error] [pid 73462] AH00100: httpd: could not log pid to file /usr/local/var/run/httpd/httpd.pid
원인 : 마지막 시작시 httpd.pid가 남아 있지만 덮어 쓸 권한이 없기 때문에
httpd.pid는 무엇입니까?
PID는 waitpid (), kill () 또는 sigsend ()와 같은 시스템 호출의 인수이며 특정 프로세스에 대해 어떤 처리를 요청할 때 프로세스를 식별하는 데 사용됩니다.
그러나 한 프로세스에서 특정 다른 프로세스의 PID를 얻는 방법은 없으므로 프로세스는 필요에 따라 프로세스 ID를 작성한 파일을 준비합니다. 예를 들어, syslogd라면 「/var/run/syslogd.pid」, httpd라면 「/var/run/httpd.pid」, 등의 상태이다. 이 경로 이름은 환경에 따라 다르며 운영 체제에 따라 다른 위치에 배치 될 수 있습니다.
프로세스 ID - 통신 용어의 기초 지식
$ ls -l /usr/local/var/run/httpd
total 8
-rw-r--r-- 1 root admin 6 12 10 23:53 httpd.pid
# 起動した?
$ apachectl start
# 起動していない
$ apachectl stop
httpd (pid 16705?) not running
# 設定間違い?
$ httpd -t
Syntax OK
# logファイルどこだっけ?
$ cat /usr/local/etc/httpd/httpd.conf | grep ErrorLog
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
ErrorLog "/usr/local/var/log/httpd/error_log"
$ cat /usr/local/var/log/httpd/error_log
[Wed Dec 19 23:53:59.892903 2018] [core:warn] [pid 73462] AH00098: pid file /usr/local/var/run/httpd/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Wed Dec 19 23:53:59.893658 2018] [core:error] [pid 73462] (13)Permission denied: AH00099: could not create /usr/local/var/run/httpd/httpd.pid
[Wed Dec 19 23:53:59.893697 2018] [core:error] [pid 73462] AH00100: httpd: could not log pid to file /usr/local/var/run/httpd/httpd.pid
httpd.pid는 무엇입니까?
PID는 waitpid (), kill () 또는 sigsend ()와 같은 시스템 호출의 인수이며 특정 프로세스에 대해 어떤 처리를 요청할 때 프로세스를 식별하는 데 사용됩니다.
그러나 한 프로세스에서 특정 다른 프로세스의 PID를 얻는 방법은 없으므로 프로세스는 필요에 따라 프로세스 ID를 작성한 파일을 준비합니다. 예를 들어, syslogd라면 「/var/run/syslogd.pid」, httpd라면 「/var/run/httpd.pid」, 등의 상태이다. 이 경로 이름은 환경에 따라 다르며 운영 체제에 따라 다른 위치에 배치 될 수 있습니다.
프로세스 ID - 통신 용어의 기초 지식
$ ls -l /usr/local/var/run/httpd
total 8
-rw-r--r-- 1 root admin 6 12 10 23:53 httpd.pid
대응 : httpd.pid 삭제
이번에는 삭제합니다. 모습을 보고 자주 발생하는 것 같으면
httpd.pid
가 있는 디렉토리의 권한 변경을 검토합니다.$ sudo rm /usr/local/var/run/httpd/httpd.pid
Password:
$ ls -l /usr/local/var/run/httpd
$ apachectl start
$ apachectl stop
$ cat /usr/local/var/log/httpd/error_log | grep Dec\ 20
[Thu Dec 20 21:11:09.377340 2018] [mpm_prefork:notice] [pid 74369] AH00163: Apache/2.4.37 (Unix) configured -- resuming normal operations
[Thu Dec 20 21:11:09.377765 2018] [core:notice] [pid 74369] AH00094: Command line: '/usr/local/opt/httpd/bin/httpd'
[Thu Dec 20 21:11:26.251257 2018] [mpm_prefork:notice] [pid 74369] AH00169: caught SIGTERM, shutting down
error_log에 위와 같은 출력이 있어도 단순한 정보이기 때문에 신경 쓰지 않아 보인다.
Reference
이 문제에 관하여(macOS Mojave에서 Apache를 시작하려고 하면 Permission denied: AH00099: could not create/usr/local/var/run/httpd/httpd.pid가 되었을 때의 대응 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ponsuke0531/items/1aa1f9d14393dd8a3b34텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)