wordpressでサイト運営をしています。
運営を初めて数年、使用しているサーバのPHPバージョンが古くなってしまいました。 wordpressのサポート対象から外れてしまったので、ここらでバージョンアップさせることにします。
1. 現状の確認
wordpressの管理画面から、ツール -> サイトヘルス と進むと、いろいろな情報を確認できます。
Site Info
Plugin Version : 4.4.2
WP Version : 5.3.2
MySQL Version : 5.5.64
PHP Version : 7.4.1
WP URL: https://boomin.yokohama
Server Name : boomin.yokohama
上記はこのサイトの更新後のものです。 2020/2/11現在で最新の状態となっていますが、PHPは7.1、MySQLは5.1(だったかな・・・?忘れてしまった)を使っていました。
2. 事前の設定バックアップ
バックアップ、これ大事ですね。
万が一のために、必ず実施するようにしましょう。
phpそのものの設定ファイルと、php-fpmの設定ファイルです。
cp /etc/php.ini /etc/php.ini.old
cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.old
php-fpmは、nginx+php-fpmという構成にしているので使用していますが、Apacheでphpのモジュール版を使っていたりすると、不要な場合もあるかもしれません。
3.
3.1 リポジトリの追加
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
3.2 既存のphpの削除
phpと名の付くものをすべて削除します。
yum remove php-*
3.3 phpのインストール
phpの7.4をインストールします。
それに合わせて、wordpressで必要となるモジュールもインストールします。
yum install --disablerepo=* --enablerepo=epel,remi,remi-safe,remi-php74 php php-mbstring php-pear php-fpm php-mcrypt php-mysql
念のため、インストールされたphpのバージョンを確認します。
# php -v
PHP 7.4.2 (cli) (built: Jan 21 2020 11:35:20) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
4. 設定の修正
このサイトを参考にして、設定ファイルを修正していきます。
vi /etc/php-fpm.d/www.conf
修正箇所だけ抜粋します。
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock;listen.owner = nobody
;listen.group = nobody
;listen.mode = 0660
listen.owner = nginx
listen.group = nginx
listen.mode = 0660;user = apahe
user = nginx
;group = apahe
group = nginx
5. mysqlのバージョンアップ
mysqlといっても、本サイトではMariaDBを使用しているので、MariaDBの話になります。
dbのバックアップは、しっかりとっておきましょう。
取得方法はなんでもいいですが、自分はBackWPupというwordpressプラグインを使用しているので、これで取得してしましました。
バックアップが取得出来たら、以下のようにしてバージョンアップ出来ます。 ぶっちゃけ、公式に書いてあります。
5.1 yumレポジトリの設定
既にインストール時に、実施していたら対応不要です。
/etc/yum.repos.d/mariadb.repo などのyumのリポジトリ設定ファイルがなければ、以下を実施しましょう。
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
5.2 バージョンアップ
yumで簡単に出来ます。 インストール後、
- サービスを起動させること
- OS起動時にサービスが起動するように設定すること
を忘れないようしましょう。自分はこれを忘れて、ちょっとパニックになりました。。。。
yum install mariadb mariadb-server
systemctl start mariadb
systemctl enable mariadb
5.3 db migration
バージョンアップが終わったら、以下のコマンドでDBマイグレーションを実施します。
mysql_upgrade -u root -p
(rootパスワードを入力)
これをしないと、以下のようなwarningが表示されることがあります。
警告: クエリー SHOW FUNCTION STATUS のデータベースエラー: Column count of mysql.proc is wrong. Expected 21, found 20. Created with MariaDB 50556, now running 100412. Please use mysql_upgrade to fix this error
6. php適用
まずは、nginxとphp-fpmを再起動します。
systemctl restart nginx
systemctl restart php-fpm
OS起動時に、php-fpmも起動するようにします。
systemctl enable php-fpm
7. 作業終了
以上で、全作業が終了です。 自分はmysqlのサービスを起動し忘れたため、phpバージョンアップ後にDB接続が出来ないというエラーが発生し、焦って調査をしましたが、、、それ以外に引っかかる点はありませんでした。
パフォーマンス、セキュリティ的な観点からも、なるべく新しいバージョンを使うようにしましょう。