サイト引っ越し、そして、再引っ越し(Part1)

サイト引っ越しの目的

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…