PHP7
遂に正式版が出ました!
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
にアクセスして、

こんな感じのページが表示されれば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
にアクセスして、

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の環境を構築する1:
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