Subaru365 Lab_

技術備忘録。都内のIT勉強会に出没します。

EC2のPHP5.6をPHP7にアップデートした

f:id:Subaru365:20151211013236p:plain

さて、PHP7が正式リリースされてはや1週間。

皆様活用されているでしょうか?

 今回のアップデートの特徴はとにかく処理速度が大幅に向上したということで、言わずもがな早速テストで使っているEC2サーバをPHP5.6からPHP7.0にアップデートしてみました! ちなみにWebサーバはNginxです。

 

まずは、現状把握といきましょう

# yum list installed | grep php

f:id:Subaru365:20151211013549p:plain

なんということでしょう! amznリポジトリとremiリポジトリの両方から同じパッケージがゴロゴロ抽出されました。今まですごく適当にしていたことがバレる。。(汗)

 

ただし、一応正常に動いていた状態なのでこれから作業する前にAMIのバックアップを取ります。あとはphp.ini, php-fpmのwww.confなどをカスタマイズされてた方は、別途コピーをとって避難させておきます。

 

それではいきましょう!こんなひどいパッケージは全部リセットだ! 変なエラーとかも見たくないので、《全消去》!!

# yum remove php56 php56-cli php56-common //...etc

 もう一度

# yum list installed | grep php 

 して、何も出なければOKです!

 

では、これからPHP7入れますよ!っと

といっても簡単で、まずはremiリポジトリを追加します。(既に登録済みの人はスキップ)

# wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm

一応最新に保ちましょう

yum --enablerepo=remi update remi-release

 

それでは、まずざっと何があるのか見てみます。

yum --enablerepo=remi list | grep php70

結構色々出ましたか?あとは好きなものを選んで入れていくだけですね!

# yum --enablerepo=remi install php70 php70-php-fpm php70-php-pdo php70-php-mysqlnd php70-php-mbstring php70-php-opcache php70-php-json //...etc

といった感じです!意外と僕の場合は素直に入りました。何かエラー吐いた場合は、慎重に1つづつ入れて行きましょう。

 

ただ、1つだけ 上記に書いていない、"php70-php-pecl-memcached"を入れたかったのですが、ここでコンフリクトが発生しました。

 

エラー文読むと、どうやら2つのサポートパッケージ同士でコンフリクトしてるみたいだったので、片方だけ先に入れてしまってから上記のphp-memcachedを入れるとすんなり入りました。

 

ちゃんと入ったか確認。

$ yum list installed | grep php

f:id:Subaru365:20151211215850p:plain

おぉ~! そして、

$ php -v 

としてみると、、、

出ない!!

 

remiを使って入れたので、少しインストール先のディレクトリが変わっています。

 まず、php -v を表示させましょう。

ln -s /usr/bin/php70 /usr/bin/php

これでパスの通っている /usr/bin にphpのリンクを作って完成。

f:id:Subaru365:20151211215810p:plain

でました??

 

あとは、php.ini や php-fpm.conf などは、/etc/opt/remi/php70/ に入ってます。

 Nginxの方は、php-fpm.d/www.conf のuser, groupをapatchに変更しときましょう。そして自動起動設定と不具合が起きたら、まずphp-fpmとNginxを再起動。これでいけるはずです(笑)

一応Nginxのphp-fpmの設定部分も載せておきますね。

 

@etc/nginx/conf.d/hoge.conf

...

location ~ \.php$ {
root /var/www/gocci-mobile/public;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/gocci-mobile/public$fastcgi_script_name;
include fastcgi_params;
}

...

 

ちなみに、中国のこちらのサイトがすごく参考になりました。ありがとうございます!

将你的PHP程序升级到PHP7.0 - 为程序员服务

 

それでは! PHPerの方もそうでない方も、是非試してみてください!

 

広告を非表示にする