【作業日誌】AWS で稼働しているWordpressを自宅のオンプレサーバーに移行する(CloudflareTunnel利用)
個人で公開しているブログサイトの費用を削減するため、
AWSから自宅サーバーに移行したい。
AWS Lightsail のWordpressイメージで起動した環境から、
自宅のProxmoxサーバー上の仮想マシンで手動構築したサーバーに移行する。
自宅サーバーの公開方法は、
Cloudflare Tunnelを用いる。
Cloudflare Tunnel を用いることで下記の二つを実現する。
・SSL終端をCloudflare に任せる
・自宅のプライベートネットワーク内のサーバーを
ポート開放せずに外部公開する
Cloudflare Tunnel の選定理由は、
・無料であること
・移行するWordpressのドメインが
Cloudflareで取得したドメインであること
・上記2点を実現できるサービスであること
・単純に使ってみたかった
うまく行かなった手順
①下記のサイトを参考に、apach php mysql wordpress をインストールする
②下記のサイトを参考に、ファイルとDBの移行を実施する
③Cloudflare にログインし、
Zero Trust ⇒ Networks ⇒Tunnels の画面に入り、
画面の案内にしたがって、Cloudflare Tunnel を設定する
④接続確認
豪快にサイトが崩壊。
ブラウザの開発者ツールから確認すると、localhost を参照しようとしているリソースが多数。
元のサーバーに入っているNginxが新サーバーには入っていないことに気づく。
⑤切り戻し
DNSの設定を戻し、いったん切り戻し
Nginxの設定を行いローカルでまず正常にうごくことを確認する手順で再チャレンジする
Nginx は全く関係なかった、Apacheの設定に問題あり。
ゼロから作り直しを実施。
下記の設定で、正常にCloudFlareを経由した通信ができるようになった。
apach php mysql wordpress をインストールする
※SELinuxの設定、もしくは停止が必須
Wordpressが プラグインの検索など、cURL Error(7) などが発生し、正常に通信ができない。
CloudFlareとの通信のため、すべての通信をhttps化させる
オレオレ証明書で良いので、apache に設定を追加する
sudo yum install mod_ssl
sudo apt-get install apache2-ssl-cert
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
vi /etc/httpd/conf.d/ssl.conf
Listen 443 https
<VirtualHost *:443>
ServerName your_domain_or_IP
SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Wordpress環境の移行は、All-in-One WP Migration を利用。
旧環境でエクスポートして、新環境でインポートする。
Cloudflare tunnel をインストール
Cloudflare にログインし、
Zero Trust ⇒ Networks ⇒Tunnels の画面に入り、
画面の案内にしたがって、Cloudflare Tunnel を設定する
★ポイント
先ほど作成したオレオレ証明書のhttps にアクセスできるように設定する
①Service のtype は https を選択
②Additional application settings>TLS>No TLS Verify を "Enbaled" にする
SELinux有効時にサイトヘルスで問題が報告され、
Wordpressの更新ができない問題の対処法がわかった。
setsebool -P httpd_can_network_connect 1
setsebool httpd_can_connect_ftp 1
setsebool httpd_can_network_connect_db 1
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html(/.*)?'
restorecon -R -v /var/www/html/
参考文献