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

  • 26
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

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