トップ
業務紹介
お知らせ
ブログ
個人情報保護方針

お問い合わせ

AWSにwordpressサイト引っ越しで困ったので備忘録

AWSにwordpressサイト引っ越しで困ったので備忘録

web技術
2022/05/17

AWSにwordpressサイト引っ越しで困ったので備忘録

wordpressサイトをテストサーバから本番サーバに引っ越す作業は何百かしてきましたが、AWS…こんなにきついとは!!
サーバの設定が不完全なので、AWSでサーバ構築した担当者にお願いしたら『鍵ファイルあげるから自分でしなさい』と…これ、私の仕事じゃない…(´Д`;)

30分で終わる作業(FTP転送の時間が大半)なのに、1日かかったのでメモとして残します。

1:.htaccessが反映されない!!

本番サーバに引っ越ししても、しばらく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認証が動作するようになったのを確認!

2:phpMyadminで、ロリポップのphpMyAdminからエスクポートしたデータがインポートできない。

あとはDBにインポートすればほとんどOK!!…と思っていたら、インポートすると無反応。正確にはphpMyAdminのメインウィンドウ部分が真っ白。
困った…おそらく権限なのかな…と思って、EC2の管理画面みたり、SSHでmysqlにコマンドラインでログインして権限付与してみたり。
sqlをコマンドで操作するのは鼻血が出ます(よく出る)

しかしそれでもダメ。

結論として、『zipファイルじゃダメ』ってのがありました。そんなまさか!!(鼻血)
zipでエクスポートしたのはそのままインポートできなくて、解凍して.sqlファイルにしてあげるとインポートできたのでした。ええ〜!?

3:フロントがリダイレクトループで表示できない!!
4:ログイン画面が崩れる!!

結論として

ネットの情報を探して、ようやく解決しました。
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はこの辺が癖が強い!!

5:mb_strstrが未定義になってる…!?

フロントのあるページを見たら、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が表示されたのでした。

以上、覚えてられないので備忘録というか血誓痕生というわけでした。とほほー。