サイト引っ越しの目的
Lighthouseを知って調査してみると、そういえばこのご時世にHTTPS対応されていない。
また、体感としてページの読み込みが遅い。
サイト構成も、イマイチに感じられてきた。
ということで、引っ越しをすることにしました。
さくらのレンタルサーバは使っているので、それでも良いと思いましたが、新しいことにも挑戦しようということで、引っ越し先を検討したところ、こちらのサイトが面白かったので、これに従いました。
GCPの無料枠でdev.toなみの爆速WordPress環境を構築する
引っ越し手順でのトラブル色々
上記サイトの手順は、非常に良くできているので、基本的には、そのまま従えば大丈夫なのですが、私の環境の問題等で、若干はまったところがありました。
freenom
大した話ではないですが、最初登録した際にエラーになりました。
そういう場合は、Service > My Domainsから確認できる。
プロキシサーバーコンテナを起動(nginx-proxy)
今回の方法では、Docker-composeで、いくつかのDockerコンテナを起動して、それらを連携して動作させます。
大きな手順としては、Dockerインストール、Docker-composeインストール、Dockerネットワーク作成、プロキシサーバーコンテナを起動(nginx-proxy)、と進めていくのですが、最初のコンテナであるnginx-proxyの起動でエラーとなりました。
Creating nginx-proxy … error
・・・
ERROR: for nginx-proxy Cannot start service nginx-proxy: b’driver failed programming external connectivity on endp
oint nginx-proxy (・・・): Error starting userland proxy:
listen tcp 0.0.0.0:80: bind: address already in use’
という感じです。よく読めば、ポート80番がバッティングしているとわかります。
元々、勉強用に色々立ち上げていたGCE環境のため発生した問題で、綺麗な環境であればこれは発生しないと思われます。
これに対して、最初は、/home/wordpress/nginx-proxy/docker-compose.yml を編集して、80:80 → 8088:8088 と変更しました。
これにより、起動するようにはなりました。ただ、その後結局他のエラーが発生し、そもそも新しいサイトを8088で公開するのもありえないので、
sudo service apache2 stop
sudo update-rc.d -f apache2 remove
とやると、sudo lsof -i:80 が消え、80:80の記述で正常に起動するようになりました。
Cloudflare
手順としては、Dockerを起動する前に、Cloudflareにドメインを登録し、すなわち、Cloudflare経由でリクエストを受ける形にします。
その際、CloudflareのCrypto > SSL の設定を、Fullにしておくことになっています。
これがやったつもりでできておらず、サービスが起動しても「このページは動作していません」が表示されるという状態になっていました。
仕組みが分かっていれば、もう少し早く気付いたかもしれません。すなわち、サービスはHTTPSでのみ受ける形で起動するので、Cloudflareからサービスへの通信もHTTPSで送ってくるFullの設定しないといけないということです。
DB接続
次は、DB接続に失敗します。先ほどのHTTPポートと同じく、既存のmysqlが起動しているためです。しかもここでサービスを停止しようとしたら、rootでの接続ができず、しばし悩みました。結論としては、今更
sudo passwd root
をしました、という・・・で、
sudo service mysql stop
で停止するわけですが、今回のDockerで立ち上げるmariadbも/var/lib/mysqlにインストールしにきます。
結局インストール先もバッティングする、ということで既存のmysqlは削除します。
sudo apt-get remove –purge mysql-server* mysql-common
sudo apt-get autoremove –purge
sudo rm -r /etc/mysql
sudo rm -r /var/lib/mysql
しかし、それでもダメです。
cd /home/wordpress/mariadb
docker-compose ps
Name Command State Ports
————————————————————-
db-data /bin/sh Up
mariadb docker-entrypoint.sh mysql … Restarting
ずっとずっとRestartingです。
ここで、環境疑惑。Dockerインストール前の手順として、swap領域の設定を行うのですが、再度確認。
free -m
swap領域が0になっているので、再度設定します(やり忘れてはいなかったと思うのですが・・・)。
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo sed -i ‘$ a /swapfile swap swap defaults 0 0’ /etc/fstab
それでも再起動後は一回エラー
Can’t open and lock privilege tables: Table ‘mysql.servers’ doesn’t existƒ
が出たのですが、もう一度起動したら大丈夫でした(?)。
ということで、一旦はwordpressも無事立ち上がりました。
しかし、この後も、一波乱・・・というか大波乱!
長くなったので、To be continued…