wordpress の引っ越し作業で画面真っ白の対処
mysql データを MariaDB へインポートできたので
次にvirtualhost の設定
1 | vim /etc/httpd/conf .d /wp .developapp.net.conf |
というように
ドメイン名.conf
というファイルを作成
内容は
1 2 3 4 5 6 | <VirtualHost *:80> ServerName wp.developapp.net DocumentRoot /var/www/html/wp .developapp.net ErrorLog logs /wp .developapp.net-error_log CustomLog logs /wp .developapp.net-access_log combined env =!no_log < /VirtualHost > |
保存したら
1 | systemctl restart httpd |
で apache を再起動
しかし
お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。
と表示される
エラーで検索し
CentOS7 PHP7.1.2 お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。
を参考に
1 | php -m | grep mysql |
を実行しても何もでないので
1 2 3 | yum install yum-utils yum-config-manager -- enable remi-php71 yum install php-mysqlnd |
で必要なパッケージをインストール後
1 | php -m | grep mysql |
を実行し
1 2 3 | mysqli mysqlnd pdo_mysql |
がでたのを確認したら
1 | systemctl restart httpd |
で apache を再起動したけどかわらず
おそらく wordpress のバージョンが古すぎることが原因
とりあえず
1 | wget http: //ja .wordpress.org /latest-ja .zip |
で最新のwordpress をダウンロード
1 2 3 4 5 6 | mv wordpress /var/www/html/wp .developapp.net chown -R apache:apache /var/www/html/wp .developapp.net/ cd /var/www/html/wp .developapp.net/ cp wp-config-sample.php wp-config.php vim wp-config.php systemctl restart httpd |
今度は
データベース接続確立エラーになった
ログインユーザに問題があるとおもい
wordpress ユーザで mysql でログインしようとしてもできないので
サーバー移動による hostname があやしいと思い
root で mysql にログインして調べたら
1 | select host, user from mysql. user ; |
を実行すると
host が % になっている
念の為
1 | show variables like 'hostname' ; |
で hostname もみてみたら
やはり違っている
このあたりから調べることに
Warning: mysqli_real_connect(): (HY000/1045): Access denied for user ‘snowpool’@’localhost’ (using password: YES) in /var/www/html/wp.developapp.net/wp-includes/wp-db.php on line 1531
つまり ユーザに問題がありそう
で調べ
1 | SELECT user ,host FROM mysql. user ; |
でユーザ一覧をみたら
ユーザは存在しているけど
root 以外は
1 | SHOW GRANTS FOR '' @ 'hostname' ; |
で権限を確認しても
1 | ERROR 1141 (42000): There is no such grant defined for user 'snowpool' on host 'hostname' |
となるし
ログインしようとしても
1 | ERROR 1045 (28000): Access denied for user 'snowpool' @ 'localhost' (using password : YES) |
となってしまう
Hostを指定しないで作ったuser1はHostが「%」になっているので
とあるので
https://teratail.com/questions/45324
や
に権限について載っているのをみると
どうやら、host の指定をしていないのが原因っぽい
とりあえず権限の確認
1 | show grants; |
で現在のユーザの権限が確認できる
root ユーザに関してはログインしてコマンド実行することでみれたけど
wordpress のユーザはログインすることができかったため
DBの破損の確認をしたいので
テーブルが壊れているかと思ったので、mysqlcheckで修復したときのメモ
を参考に
1 | mysqlcheck -c -u root -p --all-databases |
を行ったところ
すべてOKで破損はなし
1 | SELECT user ,host FROM mysql. user ; |
でユーザ一覧をだしてみたけど
host が % になっているのでたぶんこれが原因っぽい
一度、移行前のサーバーへ ssh ログインし
1 | show grants for 'snowpool' @ '%' ; |
では権限確認できるのに対し
インポート先の MariaDBで
1 | show grants for 'snowpool' @ '%' ; |
だと
1 | ERROR 1141 (42000): There is no such grant defined for user 'snowpool' on host '%' |
となる
MySQL] MySQL5でHostに’%’があるとリモート接続できない?
によれば
host に % にするのは mysql のワイルドカードで
どこからの接続でも許可するというもの
今使っているDBが MariaDB
最初は権限やセキュリティの仕様が違うのかとおもったけど
マシンのホスト名やOSが違うため
をみてみたら
別サーバーで、レプリケーションが行われているmysqlからダンプして
フルバックアップファイルを利用して、slaveを設定しなおす場合に、
mysqlの接続アカウント情報も書き変わってしまう。
そのため、元々masterに設定されていた接続アカウントと
ダンプファイルのアカウント情報が違う場合には、アカウント情報を再設定してあげる必要がある。
とのこと
ということで再度アカウントを別のもので作成して実験
1 | grant all privileges on wp_my_wordpress* to snowpool@localhost identified by "password" ; |
これで wp-config.php の設定を変更したけど画面が真っ白
念の為
1 | mysqldump -u root -p wp_my_wordpress > wordpress.sql |
でバックアップを作成しておく
なお復旧させるときには
1 | create database wordpress; |
で新規作成
1 | mysql -u root -p wordpress < wordpress.sql |
でインポートすれば復旧可能
1 | mysqlcheck -c wordpress -u root -p |
で破損をチェックしOKを確認するのも忘れずに
なお、画面が真っ白になった原因は
最新のwordpress にした場合、該当するテーマがないため
wp-config.php での設定をせず
ドメインにアクセスし、ブラウザからインストールし
ダッシュボードへログインしてテーマ設定をすれば
wordpress の表示がされるようになります