Centos7 nginx のphpアップグレード(5.6系=>7.3系)

centos7

nginx + php-fpm-5.6 + php-5.6で動いていた環境をnginx + php-fpm-7.3 + php-7.3にした時のメモです。 5.6を上書きせずに、7.3を別系統としてインストールして切り替える方法です。 この通りにやれば全てうまくいくという訳ではないので、参考としてご覧ください。

remiのリポジトリが追加されていない場合はリポジトリを追加します。

# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

次に7.3系のphpパッケージとphp-fpmをインストールします。パッケージについては例なので各自の環境に合わせて追加・削除してください。

# yum install \
php73-php.x86_64 \
php73-php-fpm.x86_64 \
php73-php-pdo-dblib.x86_64 \
php73-php-pecl-zip.x86_64 \
php73-php-pecl-mysql.x86_64 \
php73-php-pecl-memcache.x86_64 \
php73-php-pecl-memcached.x86_64 \
php73-php-pecl-mcrypt.x86_64 \
php73-php-pecl-jsond.x86_64 \
php73-php-pecl-imagick.x86_64 \
php73-php-pecl-imagick-devel.x86_64 \
php73-php-gd.x86_64 \
php73-php-mbstring.x86_64 \
php73-php-mysqlnd.x86_64 \
php73-php-pecl-uuid.x86_64 \
php73-php-pear.noarch \
php73-php-common.x86_64 \
php73-php-cli.x86_64 \
php73-php-intl.x86_64 \
php73-php-pdo.x86_64

この時点でまずコマンドラインが動くかを確認します。

# which php73                                                                                                                                   
/bin/php73
# /bin/php73 -v

インストール後、phpの設定ファイルを変更します。設定値については必要に応じて各種変更します。

# vi /etc/opt/remi/php73/php.ini
...
date.timezone = Asia/Tokyo
...

次にphp-fpmの設定ファイルを変更します。以下はサンプル。5.6系とソケット名が同一にならないように注意!(listen = /run/php73-fpm.sock)

# vi /etc/opt/remi/php73/php-fpm.conf

...
[www]
user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx
listen = /run/php73-fpm.sock
listen.backlog = 65535
;listen.mode = 0660
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
slowlog = /var/log/php-fpm/www-slow.log
php_admin_value[error_log] = /var/opt/remi/php73/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
; Set session path to a directory owned by process user
php_value[session.save_handler] = files
php_value[session.save_path]    = /var/opt/remi/php73/lib/php/session
php_value[soap.wsdl_cache_dir]  = /var/opt/remi/php73/lib/php/wsdlcache
;php_value[opcache.file_cache]  = /var/opt/remi/php73/lib/php/opcache

php-fpmを起動してみます。5.6系とは別のプロセスが立ち上がります。

・起動
# service php73-php-fpm start
・停止
# service php73-php-fpm stop

nginxの設定を変更し、5.6系から7.3系のphp-fpmを使うように変更します。先ほどのphp-fpm.confで設定したソケット名と名称が合うようにしないとエラーになります。

・まずバックアップ(大事)
# cd /etc/nginx/
# cp nginx.conf nginx.conf.rev1

・設定を変更
# vi nginx.conf
    upstream phpfpm {
        #server unix:/run/php-fpm.sock fail_timeout=0;
        server unix:/var/run/php73-fpm.sock fail_timeout=0;
    }

設定確認後にnginxを再起動。うまく動かなかった場合は上のnginx.confの記述を元に戻して再起動すればOK。

# nginx -t
# service nginx restart

正常稼働を確認できたら自動起動の設定をします。まずは現在の設定値を確認。

# systemctl list-unit-files | grep php
php56-php-fpm.service                         enabled
php73-php-fpm.service                         disabled

自動起動設定を入れ替えます。

# systemctl enable php73-php-fpm.service
# systemctl disable php56-php-fpm.service

設定値を確認します。

# systemctl list-unit-files | grep php
php56-php-fpm.service                         disabled
php73-php-fpm.service                         enabled

すんなりいけばなんてことはないですが、うまく動かない場合はnginx.confとphp-fpm.confのソケットの名称が合っているかなどをチェックしましょう。

コメント

タイトルとURLをコピーしました