LoginSignup
3
3

More than 5 years have passed since last update.

macOS High Sierra に Homebrew、phpbrew を使って Nginx + PHP をインストールするメモ

Posted at

自分のパターンに全て合致する記事がなかったのでまとめました。

主にこのへんを参考にしています。

インストール

xcode をインストール

AppStore からインストール。

HomeBrew をインストール

shell
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

これにより /usr/local/bin が作成され、その中に実行ファイル brew が作成される。

依存ライブラリのインストール

PHPBrew で必要になるライブラリをインストール。/usr/local/bin/ に色々インストールされる。
brew link によって /usr/local/Cellar/ からもシンボリックリンクが張られる。

shell
$ brew install bzip2 curl intltool icu4c libxml2 mcrypt openssl readline zlib
$ brew link bzip2 --force
$ brew link curl --force
$ brew link icu4c --force
$ brew link libxml2 --force
$ brew link mcrypt --force
$ brew link zlib --force

以前のやり方では openssl も link していましたが、現在はエラーになるので行いません。

PHPBrew をインストール

HomeBrew を使ってインストールする方法は使わず、 curl を使ってインストール。

shell
$ curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew

# 実行属性を付けて、 /usr/local/bin/ に移動
$ chmod +x phpbrew
$ mv phpbrew /usr/local/bin/phpbrew

# phpbrew を初期化
$ phpbrew init

phpbrew init によって /Users/{ユーザー}/.phpbrew/ が作成される。

PHPBrew を使って PHP をインストール

ここでは 7.2.10 をインストールしている。
+defaults によってよく使うオプションをインストールし、さらに Nginx で使うために mysql、php-fpm などのオプションも指定。

openssl の場所は HomeBrew によってインストールされたものを指定。

shell
$ phpbrew install 7.2.10 +default +mysql +fpm +openssl +curl +openssl=/usr/local/Cellar/openssl/1.0.2p 

インストールが終わったら bash 用の設定をします。

shell
$ echo "[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc" >> ~/.bashrc
$ source ~/.phpbrew/bashrc

PHP のバージョンを切り替えます。

shell
# インストール前
$ which php
/usr/bin/php
$ php -v
PHP 7.1.16 (cli) (built: Apr  1 2018 14:10:37) ( NTS )

# PHPBrew でインストールしたものに切り替える
$ phpbrew use php-7.2.10
$ phpbrew switch php-7.2.10

# 切り替わったかを確認
$ which php
/Users/{ユーザー}/.phpbrew/php/php-7.2.10/bin/php
$ php -v
PHP 7.2.10 (cli) (built: Sep 14 2018 03:40:44) ( NTS )

Nginx をインストール

shell
$ brew install nginx

デフォルトでは下記のような設定になっています。

  • ポート: 8080
  • ドキュメントルート: /usr/local/var/www

/usr/local/etc/nginx/nginx.conf を編集します。
fastcgi_pass に phpbrew のものを設定するのがキモです。

/usr/local/etc/nginx/nginx.conf
server {
    listen       8080;
    server_name  localhost;

    location / {
        root   /usr/local/var/www;
        index  index.html index.htm;
    }
    〜中略〜
    location ~ \.php$ {
        root           /usr/local/var/www;
        fastcgi_pass   unix:/Users/{ユーザー}/.phpbrew/php/php-7.2.10/var/run/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    〜中略〜

Nginx の動作確認

PHP の対応はまだですが、ひとまず Nginx が動くか確認します。

shell
$ nginx

http://localhost:8080/ にアクセスし、「Welcome to nginx!」という画面が出れば成功です。

Nginx をサービスとして自動起動させる

shell
# 一度止める
$ nginx -s stop

# サービス登録
$ brew services start nginx

PHP-FPM で PHP を使えるようにする

確認用の適当なファイルを /usr/local/var/www/a.php として作成します。

/usr/local/var/www/a.php
<?php phpinfo(); ?>

現在の状態で http://localhost:8080/a.php にアクセスしても「An error occurred.」というエラーが表示されるだけです。エラーログを確認してみましょう。

/usr/local/var/log/nginx/error.log
2018/09/14 04:18:56 [crit] 97484#0: *5 connect() to unix:/Users/dada/.phpbrew/php/php-7.2.10/var/run/php-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET /a.php HTTP/1.1", upstream: "fastcgi://unix:/Users/{ユーザー}/.phpbrew/php/php-7.2.10/var/run/php-fpm.sock:", host: "localhost:8080"

ちなみに下記のようなエラーが出ている場合は nginx.conffastcgi_pass が間違えている可能性が大きいです。

/usr/local/var/log/nginx/error.log
2018/09/14 00:54:04 [error] 48285#0: *37 kevent() reported that connect() failed (61: Connection refused) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET /a.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost:8080"

PHP-FPM の起動

shell
$ phpbrew fpm start

これにより /Users/{ユーザー}/.phpbrew/php/php-7.2.10/var/run/php-fpm.sock が作成されます。

http://localhost:8080/a.php にアクセスして、PHP の情報が表示されれば成功です。

PHP-FPM の自動起動

PHP が使えるようになりましたが、再起動すると PHP は使えなくなります。自動起動するようにしましょう。

~/Library/LaunchAgents/localhost.php.7.2.10.php-fpm.plist を作成します。

参考:launchdで複数バージョンのPHP-FPMを自動起動する

~/Library/LaunchAgents/localhost.php.7.2.10.php-fpm.plist
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>localhost.php.7.2.10.php-fpm</string>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <false/>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/{ユーザー}/.phpbrew/php/php-7.2.10/sbin/php-fpm</string>
        <string>--nodaemonize</string>
    </array>
  </dict>
</plist>

再起動すると http://localhost:8080/a.php が見えるようになります。

3
3
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
3
3