PHP7触ってみた - GUI -

# PHP7触ってみた - GUI編 -

[前回](http://qiita.com/yu_eguchi/items/2405d81086d77eff3329)は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
```

![スクリーンショット 2015-12-12 22.09.14.png](https://qiita-image-store.s3.amazonaws.com/0/78857/f003c09b-2ffe-bfd5-8f1c-3936ad1ad2bd.png)

上記の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
```

![スクリーンショット 2015-12-12 22.25.02.png](https://qiita-image-store.s3.amazonaws.com/0/78857/e2034a47-4dbf-d36f-2856-56098d894735.png)

上記の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
```

![スクリーンショット 2015-12-12 22.30.16.png](https://qiita-image-store.s3.amazonaws.com/0/78857/10214bb6-351a-98af-69fc-cf93a1072740.png)

こうします。
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
```

です。

## 動作確認

ほいっ!!

![スクリーンショット 2015-12-12 21.37.47.png](https://qiita-image-store.s3.amazonaws.com/0/78857/8494d61f-fe7e-ff0b-820f-1f12a235c36b.png)