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のソケットの名称が合っているかなどをチェックしましょう。
コメント