さくらVPSにPHP7 feat. Nginx&MySQLな環境をつくる

# PHP7
遂に正式版が出ました！ :clap: 
http://php.net/archive/2015.php#id2015-12-03-1

ちょうどロリポップ+Heroku体制に限界を感じ始めて、最近さくらVPSを契約したので、PHP7なWebアプリケーションの開発環境をつくってみました。

# 前提条件
OSはCentOS6.7（さくらVPSの標準OS）です。
公開鍵認証への変更、ファイアーウォールの設定など↓のページの内容は既にやっています。
https://help.sakura.ad.jp/app/answers/detail/a_id/2429

# 下準備編

## パッケージのアップデート及びインストール

```
# yum -y update
# yum -y install yum-plugin-priorities
# yum -y groupinstall "Base" "Development tools" "Japanese Support"
```

## リポジトリの追加

```
yum -y install epel-release
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
yum -y install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
```
# MySQL編

5.6系をインストールします。

## インストール関連

### リポジトリ追加

````
# yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
```

### インストール

```
# yum -y install mysql-community-server
```

### バージョン確認

```
# mysqld --version
mysqld  Ver 5.6.27 for Linux on x86_64 (MySQL Community Server (GPL))
```
5.6系だよ的な表示があればOK！！

### 起動

```
# service mysqld start
```

## 設定関連

### セキュリティ設定

```
# mysql_secure_installation
```
対話形式で色々と訊いてきますが、よく分からない人はrootのパスワードを変更して、全て"Yes"で答えるのがセキュリティ的によいです。

### 設定ファイル編集

文字コードをUTF8で統一します。

```
# vi /etc/my.cnf
```
**事前にバックアップとるのを忘れずに！**

```my.cnf
# clientセクションを追加
[client]
default-character-set=utf8

[mysqld]
（省略）
character-set-server=utf8 #mysqldセクションの末尾に追加
```
要はdefault-character-setとcharacter-set-serverを追加する。

### 再起動

```
# service mysqld start
```

```
# mysql -u root -p
```

で新しく設定したパスワードでログイン出来ればOK！

# Nginx前編

1.8系をインストールします。

## インストール関連

### リポジトリ追加

```
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
```
### インストール

```
# yum install -y nginx
```

### バージョン確認

```
# nginx -v
nginx version: nginx/1.8.0
```

1.8系だよ的な表示があればOK。

### 起動

```
# service nginx start
```

### 表示

http://xxx.xxx.xxx.xxx/index.html
にアクセスして、

![nginx.png](https://qiita-image-store.s3.amazonaws.com/0/48990/f37f58d7-c207-a63a-0558-4e2e2c6cd666.png)

こんな感じのページが表示されればOK！

Nginxはいったんここまで。

# PHP7編

いよいよPHP7のインストールです！

## インストール関連

もし、PHP5系が既に入っている場合は事前に削除してください。

### インストール

```
# yum --enablerepo=remi-php70 -y install php php-mbstring php-pear php-fpm php-pdo php-intl php-mysqln php-mcrypt
```

（2015/12/05 追記）
CakePHP3をインストールした際にMySQLドライバー周りでエラー（Database driver Cake\Database\Driver\Mysql cannot be used due to a missing PHP extension or unmet dependency）が出たので、`php-mysqln`を追加しました。

### バージョン確認

```
# php -v
PHP 7.0.0 (cli) (built: Dec  3 2015 18:05:30) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies
```
めでたく7がインストールされました。意外にあっさり。

## 設定関連

### 設定ファイル編集

```
# vi /etc/php-fpm.d/www.conf
```
**事前にバックアップとるのを忘れずに！**

```www.conf
; ユーザー変更
;user = apache
user = nginx

; グループ変更
;group = apache
group = nginx
```
ユーザーとグループをapacheからnginxに変更するだけ。

### 起動

```
# service php-fpm start
```

サービス化やphp.iniの設定は各自でオナシャス！~~（飽きてきた）~~

# Nginx後編

NginxとPHP-FPMを連携させます。

## 設定関連

```
# vi /etc/nginx/conf.d/default.conf
```

**事前にバックアップとるのを忘れずに！**

```default.conf
 # index部にindex.phpを追加してください。
 location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm index.php;
 }

 # serverセクションの末尾に追加してください。
 location ~ \.php$ {
        root   /usr/share/nginx/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
 }
```

### 再起動

```
# service nginx restart
```

# phpinfo表示編

やっとここまできた！

## phpファイル作成

```
vi /usr/share/nginx/html/index.php
```

```php:index.php
<?php phpinfo(); ?>
```
## 表示

http://xxx.xxx.xxx.xxx/index.php
にアクセスして、

![php7.png](https://qiita-image-store.s3.amazonaws.com/0/48990/0ecbb24a-04d4-51e2-965e-be6554c24d74.png)

PHP Version 7.0.0が表示されていればめでたしめでたし。

**phpinfoの情報はすぐ消してください！**

# おわりに
最近個人の開発では主にRubyやElixirを勉強してましたが、パフォーマンスも向上したらしいのでちょっとPHPerに戻るか！

# 参考サイト
PHP 7.0.0 RC7がリリースされたので、さくらのVPSで環境構築してみた。：
http://www.starlod.net/sakura-vps.html
CentOS 6 / RHEL 6 に MySQL 5.6 を yum インストールする手順：
http://weblabo.oscasierra.net/installing-mysql-rhel6-with-yum/
CentOSにnginx, php-fpm, mysqlの環境を構築する１：
http://qiita.com/puttyo_bubu/items/5bf554ef2790f6435c32
nginxとphp-fpmの設定：
http://qiita.com/MiyaseTakurou/items/923c28f7ac60b2ce761a
nginx + php-fpm で設定したが index.php にアクセスするとNOT FOUND(404)になってしまう：
http://blog.livedoor.jp/saba_nano/archives/28213171.html