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