
macOS High Sierra에 Homebrew, phpbrew를 사용하여 Nginx + PHP를 설치하는 방법
자신의 패턴에 모두 맞는 기사가 없었기 때문에 정리했습니다.
주로 이 편을 참고로 하고 있습니다.
phpbrew에서 php를 설치할 때 막힌 것 Mac에 phpbrew를 설치하여 php 버전 관리
설치
포트: 8080 문서 루트:/usr/local/var/www
/usr/local/etc/nginx/nginx.conf
PHP의 대응은 아직이지만, 일단 Nginx가 움직이는지 확인합니다.
쉘
쉘
확인을위한 적절한 파일을
/usr/local/var/www/a.php
현재 상태에서
/usr/local/var/log/nginx/error.log
덧붙여서 아래와 같은 에러가 나와 있는 경우는
/usr/local/var/log/nginx/error.log
쉘
그러면
이제 PHP를 사용할 수 있지만 다시 시작하면 PHP를 사용할 수 없습니다. 자동 시작하도록합시다.
참고 : launchd에서 여러 버전의 PHP-FPM 자동 시작
~/Library/LaunchAgents/localhost.php.7.2.10.php-fpm.plist
재부팅하면
주로 이 편을 참고로 하고 있습니다.
설치
xcode 설치
AppStore에서 설치.
HomeBrew 설치
쉘$ /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/
로부터도 심볼릭 링크가 늘어난다.
쉘$ 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을 사용하여 설치.
쉘$ 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 에 의해 인스톨 된 것을 지정.
쉘$ phpbrew install 7.2.10 +default +mysql +fpm +openssl +curl +openssl=/usr/local/Cellar/openssl/1.0.2p
설치가 끝나면 bash용으로 설정합니다.
쉘$ echo "[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc" >> ~/.bashrc
$ source ~/.phpbrew/bashrc
PHP 버전을 전환합니다.
쉘# インストール前
$ 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 설치
쉘$ brew install nginx
기본적으로 다음과 같은 설정이 되어 있습니다.
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ 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
$ 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 install 7.2.10 +default +mysql +fpm +openssl +curl +openssl=/usr/local/Cellar/openssl/1.0.2p
$ echo "[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc" >> ~/.bashrc
$ source ~/.phpbrew/bashrc
# インストール前
$ 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 )
$ brew install nginx
/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가 움직이는지 확인합니다.
쉘
$ nginx
http://localhost:8080/
에 접속해, 「Welcome to nginx!」라고 하는 화면이 나오면 성공입니다.Nginx를 서비스로 자동 시작
쉘
# 一度止める
$ 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.conf
의 fastcgi_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 시작
쉘
$ 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
가 표시됩니다.