(WordPressのための)サーバーのPHPとMySQLのバージョンアップ

投稿者: | 2019/05/28

この記事ではレンタルサーバーを借りて自分でPHPやMySQLをアップグレードできる人向けのものです。
レンタルサーバーによってはバージョンアップしてくれるプランを選んでいる場合もあるので調べてみて下さい。

少し前から気付いていましたがWordPressのバージョンを更新できなくなってました。どうやら古いPHPやMySQLのサポート終了が終了し始めていたようです。

2019年4月からWordPressのphpバージョンは5.6以上が必要になるよ!

バージョンアップが面倒でしばらく放置していましたがプラグインも動かなくなってきたので重い腰を上げることにしました。
そして予想通り大変でした。あらかじめ手順をメモしてやりましたがその通り動かなければ当然調べまくる羽目になって。。
動くところまで行きつけたのでログを残しておきます。

この記事は以下のような流れで書きます。

  • 推奨環境の確認
  • 自分の環境のバージョンの確認
  • WordPressをできるだけ最新にしておく
  • バックアップ
  • PHPのアップグレード
  • MySQLのアップグレード

推奨環境の確認

WordPress要件
どうやら以下のバージョンが良いらしい。

  • PHP バージョン 7.3 以上。
  • MySQL バージョン 5.6 以上、または MariaDB バージョン 10.1 以上。
  • HTTPS 対応

自分の環境のバージョンの確認


>php --version
PHP 5.3.3 (cli) (built: Aug  6 2014 05:54:27) 

>mysql --version
mysql  Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1

古!(これは何か起こる確率が上がった・・)

WordPressをできるだけ最新にしておく

  • 更新できるものを更新
  • 動作確認
  • PHP Compatibility Checker

更新できるものはしておいて動作確認しておきましょう。もともとおかしくなってしまうのか、バージョンアップによっておかしくなるのか、問題の切り分けができます。あと「PHP Compatibility Checker」というプラグインも入れておいてチェックしておきましょう。

バックアップ

WordPressとMySQLのバックアップを取っておきます。
最悪これを元にして元に戻します。

# WordPressのバックアップ
tar -zcvf 20190526_wordpress.tar.gz /var/www/html/wordpress
(解凍する場合:tar -zxvf 20190526_wordpress.tar.gz)

# MySQLバックアップ
>mysqldump -u root -p -A > /tmp/20190526_mysql_dump.sql
(リストアする場合:mysql -u root -p < /tmp/20190526_mysql_dump.sql)

php.iniやmy.cnfもバックアップを取っておきましょう。
特殊な設定がある場合は設定し直す必要があります。

PHPのアップグレード

参考:CentOS7のPHPを5.6/7.0/7.1/7.2/7.3系にバージョンアップする

すんなりいけば簡単ですがかなりはまりました・・

現在入っているものを確認(うまくいかなかった場合これを元に入れなおします。)

>yum list installed | grep php
php.x86_64                         5.3.3-27.el6_5.1                  @updates   
php-cli.x86_64                     5.3.3-27.el6_5.1                  @updates   
php-common.x86_64                  5.3.3-27.el6_5.1                  @updates   
php-gd.x86_64                      5.3.3-27.el6_5.1                  @updates   
php-mbstring.x86_64                5.3.3-27.el6_5.1                  @updates   
php-mysql.x86_64                   5.3.3-27.el6_5.1                  @updates   
php-pdo.x86_64                     5.3.3-27.el6_5.1                  @updates   
php53-mcrypt.x86_64                5.3.3-1.el5                       @epel      
phpMyAdmin.noarch                  2.11.11.3-2.el5                   @epel     

準備:リポジトリの追加

>yum install epel-release
>rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

念のため欲しいバージョンが存在するかチェック

>yum search --disablerepo=* --enablerepo=remi,remi-php73 php73

ここから先は現在動いているものに影響を与えるので注意してください!

PHP関連を削除

>yum remove php-*

念のため消し残しがないか確認

>yum list installed | grep php

・インストール

>yum install --disablerepo=* --enablerepo=epel,remi,remi-php73 php73 php73-php

しかし私の環境では失敗してしまいました・・

いろいろ調べた結果以下のようにすればインストールできました。

>sudo yum whatprovides libtcl8.5.so
>sudo yum -y install tcl
>yum provides /usr/sbin/semanage
>sudo yum -y install policycoreutils-python
>yum install --disablerepo=* --enablerepo=epel,remi,remi-php73 php73 php73-php

※最初php73-phpを入れずにいたのですがApacheを再起動したらPHPが動かなくなっていました。
どうやらlibphp7.soが入らず動かなかったようです。
いろいろ調べた結果、php73-phpもインストールすることでlibphp7.soも作成され正常に動くようになりました。
参考:CentOS7にPHP7.2.xをインストールする

この時点ではまだ動かず。。
どうやらPHP73をインストールしただけでは動かずパスが通っていなかったようです。
/etc/profileに追加

export PATH=/opt/remi/php73/root/usr/bin:/opt/remi/php73/root/usr/sbin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/opt/remi/php73/root/usr/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export MANPATH=/opt/remi/php73/root/usr/share/man:${MANPATH}

参考:PHP7.0をLinux素人がインストールする

もしかするとこの時点で再ログインが必要になるかもしれないです。

ちゃんとPHPが適用されたか確認

>php --version
PHP 7.3.5 (cli) (built: May  1 2019 07:59:34) ( NTS )

他のやつもインストール

>yum install --disablerepo=* --enablerepo=epel,remi,remi-php73 php73-php-gd php73-php-mbstring php73-php-mysql php73-php-pdo php73-php-mcrypt

Apacheを再起動します。

service httpd restart

これでPHPのアップグレードができました。
これでWordPressが動くはずです。確かめてください。

MySQLのアップグレード

参考:MySQL5.1から5.7にバージョンアップさせるための手順

現在入っているものを確認

>yum list installed | grep mysql
mysql.x86_64                       5.1.73-3.el6_5                    @updates   
mysql-devel.x86_64                 5.1.73-3.el6_5                    @updates   
mysql-libs.x86_64                  5.1.73-3.el6_5                    @updates   
mysql-server.x86_64                5.1.73-3.el6_5                    @updates   

リポジトリの追加

>yum install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm

でも失敗。。なんとかして入れる。

>wget http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
>rpm -Uvh mysql-community-release-el6-5.noarch.rpm

yum-config-managerを使えるようにする

>yum -y install yum-utils

今入っているものを削除

>yum remove mysql*

インストール

>service mysqld stop
>yum-config-manager --disable mysql55-community
>yum-config-manager --enable mysql57-community-dmr

>yum install mysql mysql-devel mysql-server mysql-utilities
>service mysqld start

が失敗。

まあ前のmysqlのディレクトリがそのまま残っているのだからそれもそうかということで

mv mysql mysql_backup

として0からmysqlを設定し直してバックアップを適用することにしました。

service mysqld start
sudo cat /var/log/mysqld.log | grep password
mysql_secure_installation 

rootのパスワードポリシーが厳しくて辛い・・。
参考:CentOS 7 に MySQL 5.7 を yum インストールして初期設定までやってみた
MySQLの初期設定など参考になります。ありがとうございます!

これでとりあえずmysqldを起動できた。。

MySQLリストア

>mysql -u root -p < /tmp/20190526_mysql_dump.sql

しばし待つ。

これでWordPressにアクセスしてみたら「データベース接続確立エラー」。
パスワードを設定し直さないとだめなのかな、と思ってパスワードを再設定してみると

mysql>SET PASSWORD FOR wp_user@"localhost"=password('xxxxxxxxxxxxxxx');
ERROR 1805 (HY000): Column count of mysql.user is wrong. Expected 45, found 39. The table is probably corrupted

なるほど、テーブルの構造が変わったのね。まあそうだよねってことでちょっと調べると以下で良いらしい。

>mysql_upgrade -u root -p

なんか通ったらしいのでもう一度WordPressにアクセス。

動いた。。
これで一通りインストール完了です。

おまけ

Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again

こんなエラーも出たんだけど以下を参考に
参考:CentOS6.xでEPELリポジトリ入れたときのエラー対処

sudo sed -i "s/mirrorlist=https/mirrorlist=http/" /etc/yum.repos.d/epel.repo

とすることで動きました。


コメントを残す

メールアドレスが公開されることはありません。