環境
- Ubuntu 16.10
- Nginxで動かしたい
- testuserというユーザで作業している
phpbrewのインストール
phpbrewのgithubページにインストール方法が書いてあります。
php-5.6.30のインストール
最初、phpbrew install 5.6.30 +all
をやろうとして延々エラーが出て、調べて必要なものをインストールしてを繰り返しており、時間がかかりました。ふと+defaultでいいかと思ってやったら、とりあえずインストールは問題なくできました。しかし、+defaultだけだと、fpmなどがなかったので、改めて下記でインストールしてみました。
$ sudo phpbrew -d install 5.6.30 +default +dbs +mb +fpm +debug +cgi +hash +json
問題なく完了しました。同じバージョンをインストールする際に、一度削除した方がいいのかなと思いましたが、消さずにインストールして大丈夫でした。php.iniも上書きされました。
デフォルトのバージョンを5.6.30にします。
$ phpbrew switch php-5.6.30
fpmの設定
初期状態だとfpm起動時にエラーがでました。下記を実施したら、スタートしました。
php-fpm.confの設定
$ sudo vim ~/.phpbrew/php/php-5.6.30/etc/php-fpm.conf
130行目付近
; pool name ('www' here)
[www-data]
149行目付近
user = www-data
group = www-data
164行目付近
listen = /home/testuser/.phpbrew/php/php-5.6.30/var/run/php-fpm.sock
177行目付近
;listen.owner = www-data (コメントアウトしたまま)
listen.group = www-data
listen.mode = 0660
パーミッションの調整
$ sudo chown -R www-data:www-data ~/.phpbrew/php/php-5.6.30/var/log
$ sudo chown -R www-data:www-data ~/.phpbrew/php/php-5.6.30/var/run
$ sudo chmod 770 ~/.phpbrew/php/php-5.6.30/var/log
$ sudo chmod 770 ~/.phpbrew/php/php-5.6.30/var/run
$ sudo gpasswd -a testuser www-data
php-fpmの実行
$ phpbrew fpm start
Starting php-fpm...
NOTICE: [pool www-data] 'user' directive is ignored when FPM is not running as root
NOTICE: [pool www-data] 'group' directive is ignored when FPM is not running as root
スタートしました。その他、phpbrew fpm stop
で停止。phpbrew fpm restart
で再起動です。
Nginxの設定
$ sudo vim /etc/nginx/sites-available/hoge
下記のような感じで、fastcgi_passに、php-fpm.comfで設定したパスを入れます。
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name hoge.com;
ssl_certificate /etc/letsencrypt/live/hoge.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/hoge.com/privkey.pem;
root /home/testuser/pj/html/;
index index.php;
location / {
try_files $uri $uri?$args $uri/ /index.php?$uri&$args /index.php?$args;
}
location ~ \.php(/|$) {
fastcgi_index index.php;
fastcgi_pass unix:/home/testuser/.phpbrew/php/php-5.6.30/var/run/php-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
error_page 500 501 502 503 504 /500.html;
}
site-enableにリンクさせます。
$ sudo ln -s /etc/nginx/sites-available/hoge /etc/nginx/sites-enabled
Nginxを再起動(起動)します。
$ sudo systmctl restart nginx
(参考)Variantsの種類
全部で下記があるようです。+表記に置換しました。
+all +apxs2 +bcmath +bz2 +calendar +cgi +cli +ctype +curl +dba +debug +dom
+dtrace +editline +embed +exif +fileinfo +filter +fpm +ftp +gcov +gd
+gettext +gmp +hash +iconv +icu +imap +inifile +inline +intl +ipc +ipv6
+json +kerberos +libgcc +mbregex +mbstring +mcrypt +mhash +mysql +opcache
+openssl +pcntl +pcre +pdo +pgsql +phar +phpdbg +posix +readline +session
+soap +sockets +sqlite +static +tidy +tokenizer +wddx +xml +xml_all +xmlrpc
+zip +zlib +zts