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

More than 3 years have passed since last update.


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

こんな感じのページが表示されれば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


index.php

<?php phpinfo(); ?>



表示

http://xxx.xxx.xxx.xxx/index.php

にアクセスして、

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