macOS Mojave에서 Apache를 시작하려고 하면 Permission denied: AH00099: could not create/usr/local/var/run/httpd/httpd.pid가 되었을 때의 대응 방법

4487 단어 아파치MacApache2.4

이벤트 : 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
  • 오류 메시지 및 해결 방법 이것 - think-t의 맑은 비
  • pid 파일이 남아 버리는 경우의 기동시의 거동 - Qiita
  • PID 파일 저장 위치에 루트 권한 필요 - Qiita

  • 대응 : 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에 위와 같은 출력이 있어도 단순한 정보이기 때문에 신경 쓰지 않아 보인다.

    좋은 웹페이지 즐겨찾기