7触ってみた - GUI -


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

です。

動作確認

ほいっ!!