PHP7触ってみた - GUI編 -
前回はPHP7をCentOS7に入れて、CUIから動作確認しました。
今回はnginx経由でGUIからPHPを確認します。
事前準備
cd ~/vagrant/centos70/
vagrant up
vagrant ssh
php -v
PHP 7.0.2-dev (cli) (built: Dec 11 2015 20:27:52) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies
nginxの導入
yumリポジトリに存在しないので、追加登録します。
vi /etc/yum.repos.d/nginx.repo
中身は以下
[nginx]
name=nginx repo
#baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=0
enabled=0
これで準備OK
yum --enablerepo=nginx install nginx
完了。
php-fpmの導入
- php-fpmって??
PHPとWEBサーバ(今回はnginx)をつなぐのに必要になるプロトコル
php7をyumした際に,デフォルトのphp-fpm設定ファイルがinstallされているので、
これをnginx用に書き換える必要があります。
sudo cp -p /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
このconfを書き換えます。defaultはoriginalとしてバックアップとなります。
vi /usr/local/php7/etc/php-fpm.conf
上記の17行目と81行目がデフォルトはコメントアウトされているので、外します。
結果としてこうなる
$ diff -u php-fpm.conf php-fpm.conf.default
--- php-fpm.conf 2015-12-12 20:53:39.684996478 +0900
+++ php-fpm.conf.default 2015-12-12 05:30:36.000000000 +0900
@@ -14,7 +14,7 @@
; Pid file
; Note: the default prefix is /usr/local/php7/var
; Default Value: none
-pid = run/php-fpm.pid
+;pid = run/php-fpm.pid
; Error log file
; If it's set to "syslog", log is sent to syslogd instead of being written
@@ -78,7 +78,7 @@
; Send FPM to background. Set to 'no' to keep FPM in foreground for debugging.
; Default Value: yes
-daemonize = yes
+;daemonize = yes
; Set open file descriptor rlimit for the master process.
; Default Value: system defined value
次。
sudo cp -p /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf
vi /usr/local/php7/etc/php-fpm.d/www.conf
上記の23と24行目を
user = nginx
group = nginx
とすることで、nnginxに対応する。
次に、php-fpmの起動スクリプトを組みます。
vi /etc/init.d/php-fpm
中身は以下。
#! /bin/sh
### BEGIN INIT INFO
# Provides: php--fpm
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts php-fpm
# Description: starts the PHP FastCGI Process Manager daemon
### END INIT INFO
php_fpm_BIN=/usr/local/php7/sbin/php-fpm
php_fpm_CONF=/usr/local/php7/etc/php-fpm.conf
php_fpm_PID=/usr/local/php7/var/run/php-fpm.pid
php_opts="--fpm-config $php_fpm_CONF"
wait_for_pid () {
try=0
while test $try -lt 35 ; do
case "$1" in
'created')
if [ -f "$2" ] ; then
try=''
break
fi
;;
'removed')
if [ ! -f "$2" ] ; then
try=''
break
fi
;;
esac
echo -n .
try=`expr $try + 1`
sleep 1
done
}
case "$1" in
start)
echo -n "Starting php-fpm "
$php_fpm_BIN $php_opts
if [ "$?" != 0 ] ; then
echo " failed"
exit 1
fi
wait_for_pid created $php_fpm_PID
if [ -n "$try" ] ; then
echo " failed"
exit 1
else
echo " done"
fi
;;
stop)
echo -n "Gracefully shutting down php-fpm "
if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill -QUIT `cat $php_fpm_PID`
wait_for_pid removed $php_fpm_PID
if [ -n "$try" ] ; then
echo " failed. Use force-exit"
exit 1
else
echo " done"
echo " done"
fi
;;
force-quit)
echo -n "Terminating php-fpm "
if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill -TERM `cat $php_fpm_PID`
wait_for_pid removed $php_fpm_PID
if [ -n "$try" ] ; then
echo " failed"
exit 1
else
echo " done"
fi
;;
restart)
$0 stop
$0 start
;;
reload)
echo -n "Reload service php-fpm "
if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill -USR2 `cat $php_fpm_PID`
echo " done"
;;
*)
echo "Usage: $0 {start|stop|force-quit|restart|reload}"
exit 1
;;
esac
これで今後、php-fpmを起動するときは
sudo /etc/init.d/php-fpm start
で起動します。
chkconfigに登録しておいても良いですね。
nginxの設定
nginxにも、phpが呼ばれるように設定する必要があります。
sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.org
sudo vi /etc/nginx/conf.d/default.conf
こうします。
diff見ると
[vagrant@localhost conf.d]$ diff -u default.conf.org default.conf
--- default.conf.org 2015-12-12 13:23:44.451490369 +0900
+++ default.conf 2015-12-12 21:21:54.127622046 +0900
@@ -1,4 +1,5 @@
server {
+ root /usr/share/nginx/html;
listen 80;
server_name localhost;
@@ -27,13 +28,13 @@
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
- #location ~ \.php$ {
- # root html;
- # fastcgi_pass 127.0.0.1:9000;
- # fastcgi_index index.php;
- # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
- # include fastcgi_params;
- #}
+ location ~ \.php$ {
+ #root html;
+ fastcgi_pass 127.0.0.1:9000;
+ fastcgi_index index.php;
+ fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
+ include fastcgi_params;
+ }
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
こんな感じ。
nginxの起動
sudo nginx -t
sudo systemctl start nginx
最初のコマンドはconfファイルの構文チェックです。
apacheでいう
apachectl configtest
です。
動作確認
ほいっ!!