LoginSignup
6

More than 5 years have passed since last update.

突然Macのapacheが起動しなくなった

Posted at

突然Mac の apache が起動しなくなった

Mac にデフォルトで入っている apache が突然起動しなくなったのでその原因と解決方法

apache を start するが起動しない

いつものようにでapahceを起動

$ sudo apachectl start

プロセスとポートを確認するが、httpdが動いていないし 80番ポートもリスンされていない

$ ps aux | grep httpd
xxxx  1270   0.0  0.0  2434840    780 s000  R+    4:17PM   0:00.00 grep httpd
$ netstat -ant | grep LISTEN
tcp4       0      0  127.0.0.1.17603        *.*                    LISTEN     
tcp4       0      0  127.0.0.1.17600        *.*                    LISTEN     
tcp4       0      0  *.17500                *.*                    LISTEN     
tcp6       0      0  *.17500                *.*                    LISTEN     
tcp4       0      0  *.88                   *.*                    LISTEN     
tcp6       0      0  *.88                   *.*                    LISTEN     
tcp4       0      0  127.0.0.1.49153        *.*                    LISTEN     
tcp4       0      0  127.0.0.1.49152        *.*                    LISTEN     
tcp4       0      0  *.445                  *.*                    LISTEN     
tcp6       0      0  *.445                  *.*                    LISTEN     
tcp4       0      0  *.548                  *.*                    LISTEN 

エラーを確認

/var/log/apache2/error_log を確認するが、該当の時刻のログが何も出ていない

/var/log/system.log を確認すると以下のログが出ていたので、どうやら起動に失敗しているらしいことを確認できた

/var/log/system.logの一部
sudo[975]: xxxx : TTY=ttys001 ; PWD=/Users/xxxx ; USER=root ; COMMAND=/usr/sbin/apachectl start
com.apple.xpc.launchd[1] (org.apache.httpd): This service is defined to be constantly running and is inherently inefficient.
com.apple.xpc.launchd[1] (org.apache.httpd[978]): Service could not initialize: 15F34: xpcproxy + 12684 [1462][F7717708-ACF7-307D-B04E-998DFC36598F]: 0x2

原因を追っていく

/usr/sbin/apachectl の中をみると launchctl で起動しているらしいことがわかった

/usr/sbin/apachectlの一部
LAUNCHCTL="/bin/launchctl"
LAUNCHD_JOB="/System/Library/LaunchDaemons/org.apache.httpd.plist"

org.apache.httpd.plist の内容をみて、実際に実行されているコマンドを確認する

/System/Library/LaunchDaemons/org.apache.httpd.plistの一部
        <key>ProgramArguments</key>
        <array>
                <string>/usr/sbin/httpd-wrapper</string>
                <string>-D</string>
                <string>FOREGROUND</string>
        </array>

コマンドを直接実行してみる

$ /usr/sbin/httpd-wrapper -D FOREGROUND

すると以下のエラーがでた

-bash: /usr/sbin/httpd-wrapper: /usr/bin/ruby: bad interpreter: No such file or directory

なぜ rudy が関係しているのかわからないが、何らかのファイルが見つからずに起動に失敗しているだろうと予想する

/usr/sbin/httpd-wrapper の中を見ると、どうやらこれは ruby スクリプトらしいことがわかった

/usr/sbin/httpd-wrapperの先頭行
#!/usr/bin/ruby

念のため /usr/bin/ruby を確認してみるとなんとファイルがない

$ ls -l /usr/bin/ruby
ls: /usr/bin/ruby: No such file or directory

エラーの原因

ruby スクリプトを起動する際に /usr/bin/ruby が指定されいているが実行ファイルがないため起動に失敗しているようだった

そういえば最近 mac のデフォルトで入っている ruby を消して、homebrew で入れ直していたことを思い出す
その際に ruby コマンドのパスは /usr/local/bin/ruby に場所が変わっていた

$ which ruby
/usr/local/bin/ruby

/usr/bin/ruby をシンボリックリンクにして ruby へのパスが通るように修正

$ sudo ln -s /usr/bin/ruby /usr/local/bin/ruby

すると apache が正常に起動するように戻った

教訓

ruby、python などは OS のスクリプトで利用されていることが多いので、デフォルトのものはなるべく変更しない

開発をする際には rubyenv などの仮想環境を使うのがいい

ていうか mac の環境まじでわかりにくい

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
6