LoginSignup
20
22

More than 5 years have passed since last update.

HomebrewでApacheとPHP-FPMをインストールする

Last updated at Posted at 2015-01-26

Macで新しめのPHPを使うには、XAMPPやphpenvなどいくつかの方法があるが、Homebrewでもインストールできる。

(参考)MacにあたらしめなPHPを簡単便利に入れる方法たくさん - uzullaがブログ

以前はjosegonzalez/phpなどの外部リポジトリを使う必要があったが、現在はPHP関連のbrewがHomebrew/homebrew-phpとしてまとめて整備された。なのでHomebrewでインストールするのはXAMPPの次くらいに簡単になっている。

  • 何も考えずApache+PHP+MySQLを簡単に動かしたい人、既存の環境と分離したい人はXAMPPを、
  • 複数バージョンを使い分けたい上級者であればphpenvを、
  • 最新のPHPを使いたいけどphpenvはしんどすぎるという人はHomebrewを、

となるだろうか。

今回はPHP(とApacheも)をHomebrewでインストールし、mod_phpではなくPHP-FPMでPHPを動かしてみる。

準備

Homebrew ApacheHomebrew PHPに従いインストールしていく。

まず必要なリポジトリをbrew tapで追加する。

  • homebrew/dupes:Macに既に入っているソフトの最新版/バグ修正版を提供する
  • homebrew/versions:古いバージョンのソフトを提供する
brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/homebrew-php
brew tap homebrew/apache

各ソフトのインストールオプションはbrew options パッケージ名で確認できる。

brew options php56

Apache(2.4)をインストールする

HomebrewのApacheはsudoなしで起動できるように、デフォルトでは8080番ポートを使うように設定されている。
--with-privileged-portsを指定すると80番ポートを使うようにできる。

また、MPMもデフォルトではPreforkとなっているが、今回はPHP-FPMを使うのでPrefork MPMにしなくてもよい。
--with-mpm-eventでApache2.4から標準のEvent MPMを使うようにする。

Mac起動時に自動起動するにはインストール後のメッセージに従い、LaunchDaemons/LaunchAgentsに登録する。

  • --with-privileged-ports:8080番ポートではなく80番ポートを使う
  • --with-mpm-event:Event MPMを使う
  • インストール後のメッセージに従い、自動起動させるようにする
brew install httpd24 --with-privileged-ports --with-mpm-event

# `--with-privileged-ports`を指定した場合
sudo cp -v /usr/local/Cellar/httpd24/2.4.10/homebrew.mxcl.httpd24.plist /Library/LaunchDaemons
sudo chown -v root:wheel /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
sudo chmod -v 644 /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist

# `--with-privileged-ports`を指定しなかった場合
ln -sfv /usr/local/opt/httpd24/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.httpd24.plist

PHP(5.6)をインストールする

--with-fpmでPHP-FPMを使うようにして、PHPをインストールする。結構時間がかかる。

  • --with-fpm:PHP-FPMを有効化する
  • Apacheと同様、自動起動させる
brew install php56 --with-fpm

ln -sfv /usr/local/opt/php56/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.php56.plist

起動・停止

自動起動する設定にしていれば、既にApacheがlocalhostで起動している。アクセスして「It works!」と表示されればOK。

起動・停止は以下のように行う。長いのでaliasとかしておくといいかも

# Apache(80番ポートを使うためsudoが必要)
sudo launchctl unload /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist

# PHP-FPM
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.php56.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.php56.plist

パス設定

ApacheやPHPはMacに標準添付されているので、そのままだとそちらが優先されてしまう。

which apachectl

を実行して/usr/local/bin/apachectlとなっていなければ、/usr/local以下が優先されるようにPATHの設定をしておく。

echo 'export PATH="/usr/local/bin:/usr/local/sbin:$PATH"' >> ~/.bash_profile
exec $SHELL -l

PHP-FPMの設定

ApacheをPHP-FPMと連携させるには、mod_proxy_fcgiを使うのが現在では一般的のようだ。

/usr/local/etc/apache2/2.4/httpd.confを編集する。

httpd.conf
# 125行目付近:コメントを外し、必要なモジュールを有効化
LoadModule proxy_module libexec/mod_proxy.so
LoadModule proxy_fcgi_module libexec/mod_proxy_fcgi.so

あとは最低限、

httpd.conf
DirectoryIndex index.php index.html

<FilesMatch \.php$>
    SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

と設定すれば動く。

お好みのバーチャルホスト設定をするならそこに書けばいいし、デフォルト設定でよければhttpd.confの最後にこのように書く。

httpd.conf
<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "/usr/local/var/www/htdocs"

    DirectoryIndex index.php index.html

    <FilesMatch \.php$>
        SetHandler "proxy:fcgi://127.0.0.1:9000"
    </FilesMatch>
</VirtualHost>

ファイル名が.phpで終わる場合、127.0.0.1:9000で起動するFastCGI(=PHP-FPM)に処理を任せる、となる。

ProxyPassMatchを使う方法もあるが、様々な問題があるので推奨されていない(ApacheでPHP-FPMを動かすなら、ProxyPassMatchではなくSetHandlerを使うのがいいらしい - Qiita

設定したら、

apachectl configtest

で設定ファイルをチェックし、Syntax OKと出れば問題なし。

(なんかメッセージが出るがこれは無視してよい。気持ち悪ければ、ServerName localhostとhttpd.confの上の方に書いてきちんとServerNameを設定しておく)

終わったらApacheを再起動する

sudo launchctl unload /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist && sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist

設定確認

/usr/local/var/www/htdocs/index.phpを作成し、

index.php
<?php
phpinfo();

と書いて、localhostにアクセスし、phpinfoの画面が表示されれば無事設定完了となる。

あとはきちんとバーチャルホストを作ったり、MySQLをインストールするなりしていく。

20
22
0

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
  3. You can use dark theme
What you can do with signing up
20
22