wordpressサイトをテストサーバから本番サーバに引っ越す作業は何百かしてきましたが、AWS…こんなにきついとは!!
サーバの設定が不完全なので、AWSでサーバ構築した担当者にお願いしたら『鍵ファイルあげるから自分でしなさい』と…これ、私の仕事じゃない…(´Д`;)
30分で終わる作業(FTP転送の時間が大半)なのに、1日かかったのでメモとして残します。
本番サーバに引っ越ししても、しばらくbasic認証をかけようということになり、じゃあhtpasswdと一緒にhtaccessも修正を…と思いましたが、ここから問題。
まずfilezillaでFTP接続しても.htaccessがない!?アップロードしても消えてしまう…ということで、まずはfilezillaのメニューバーから『サーバ>強制的に隠しファイルを表示』をオンにして、.htaccessが表示されるようになりました。なんでAWSだけ…。
しかし、basic認証が動作しません…。
調べたところ、Apacheの設定で.htaccessが反映されてないとの情報を得ました。じゃあ…http.confいじらなきゃ…だめ?(汗
というわけでAWSにSSHでログインすることに。SSHなんてさしぶりで鼻水が出そうです…(よく出る)
ssh -i “xxxxxxxxxxx.pem” ec2-user@xxxxxxxxxxxxxxxxxx.compute.amazonaws.com
Macのターミナルアプリからこれでログイン。
sudo vi /etc/httpd/conf/http.conf
懐かしいviでhttp.confを編集です。もちろんバックアップを取った上で(3つとった)
# AllowOverride controls what directives may be placed in .htaccess files.
AllowOverride ALL
この部分を NoneからALLに変更、保存。
そしてApacheの再起動。
sudo service httpd restart
とりあえずbasic認証が動作するようになったのを確認!
あとはDBにインポートすればほとんどOK!!…と思っていたら、インポートすると無反応。正確にはphpMyAdminのメインウィンドウ部分が真っ白。
困った…おそらく権限なのかな…と思って、EC2の管理画面みたり、SSHでmysqlにコマンドラインでログインして権限付与してみたり。
sqlをコマンドで操作するのは鼻血が出ます(よく出る)
しかしそれでもダメ。
結論として、『zipファイルじゃダメ』ってのがありました。そんなまさか!!(鼻血)
zipでエクスポートしたのはそのままインポートできなくて、解凍して.sqlファイルにしてあげるとインポートできたのでした。ええ〜!?
結論として
ネットの情報を探して、ようやく解決しました。
Zuntan02のはてなブログ様の情報で解決しました。ありがとうございます。
wp-config.phpの最初の方に、
if (isset($_SERVER[‘HTTP_X_FORWARDED_PROTO’]) && $_SERVER[‘HTTP_X_FORWARDED_PROTO’] == ‘https’)
$_SERVER[‘HTTPS’] = ‘on’;
これを書くことで、リダイレクトループが解決しました。
フロントページをまず確認しようとしたら、リダイレクトがループして表示できず。
そしてなぜかログイン画面が崩れてしまってました…。なぜか!?cssが適用されてないから。
ん?管理画面のCSSは特にいじってないけど…と思ったら、httpsのサイトなのに、httpでcssを取ろうとしてました。なぜ!?
AWSはこの辺が癖が強い!!
フロントのあるページを見たら、wordpressのエラーが。え!?だって中身はテストサイトからいじってないのに…。
wp-config.phpのDEBUGモードをtrueにして確認すると…『mb_strstrがnot defined』と。
……mb_strstrがインストールされてない…とは!?
ということで、またAWSにSSHで潜って、
php -m
でmbstringモジュールが入っていることを確認。入ってるのになんで使えないの!?
/etc/php.iniを確認。『mbstring』で検索して該当部分を有効に……なってる!?
つまり、phpをインストール、初期設定をしたあと、サーバ担当者がphpの再起動をしてなかったのが原因でした…。
ってことで
sudo systemctl restart php-fpm.service
でphpを再起動。無事にmb_strstrが表示されたのでした。
以上、覚えてられないので備忘録というか血誓痕生というわけでした。とほほー。