こんばんわ。ねんどです。お久しぶりです。
最近会社の同僚と話しているときにwebarenaというPaaSを使っているという話を聞いて、7年間使っていたさくらのVPSというサービスよりだいぶ値段が安いということがわかり、かつ今作成しているサービスのデプロイやcentosのバージョンもとっくにEoLが過ぎていたという状態だったので、思い切って移行してみました。
めちゃ適当に書いたイメージはこんな感じ。考えていた要件はもりもりですが、こんな感じ。
- httpdが前段として受けて、静的コンテンツや各種サービスへプロキシする
- サービスのコンテナ化(httpd, wordpress, mariadb, …)
- ansibleで構成管理をきちんとする
- sslに対応する
どれも仕事で触ってはいるのでハードルは高くないと思ってましたが、一人作業ではなかなか時間がかかってしまいました。
値段の話とか
さくらのVPSはサービスに満足はしていたんですが、今の基準だと結構高くてメモリ512GBで月額590円。たいしてwebarenaは1GBで449円、2GBで814円といったところ。ちょうど料金改定で値上げする後の値段で、今まではもっと安かったようです。
またドメインの管理料も最近値上がっていて、さくらのドメインは.netの維持に年額2700円。対してgoogleドメインだと12ドルということで、円安の影響もありますが半値くらいになるようです。このくらい違うと移行しないとなぁとなりますね。
webarenaはさくらのVPSとそこまでサービスの質は変わらないと思います。若干UIがさくらより良く便利な感じはあるくらいですかね。初期状態でコンソールが取れなかったりと変な部分もあるので大きな差があるようには感じませんでした。
ansibleで構成管理
正直個人サーバにansibleはやりすぎかなと思ったんですが、結論としてはやってよかったと思っています。たしかに時間は結構かかりまして(1ヶ月位?)、ただ半分は学習コストでした。他に比べて忘れやすい作業であるし、今後のデプロイが確実に楽になると思います。普段触らないからこそ自動化の意味も大きいと感じます。
レシピの規模感はこんな感じ。
かなり数は多くなりましたが、やってることはコピペも多いのでそれほどの量ではありません。今回dockerのランタイムからansibleで入れていて、VMを破壊してもすぐに構築できるような状態までもってこれています。
OSバージョン
なんとcentos6.7からcentos stream9に移行してます。時がめちゃとんでいる…!
正直いろいろ苦しいかなと思ったのですが、想像以上に何事もなく動いております。centos6から7はsystemdやfirewalldなど大きめの変更がありましたが、そこに比べるとこれといった変更を感じませんでした。まぁ、会社の本番環境でやる作業ではないのでエイヤな感じです。多分調べたら色々違いはあると思います…。
mariadb container
今回mariadbはホスト上に普通に建てようと思っていたのですが、dockerネットワークの都合もありコンテナ上で動かしてみております。永続化とコンテナの相性は悪いと思っていたのですが、細かいことを除けばそこまで避ける必要はないのかもしれません。雑にディレクトリを/var/lib/mysqlにマウントして動かしてみてます。overlayfsのオーバヘッドなどをシビアに見る場合や、メモリなどの管理上の問題があるかもしれません。
各コンテナ間の通信はdocker上のbridgeで行えるので、とてもいい感じです。ただ今回ローカルネットワーク上にポートをもはや公開していないので、DBの中身を見るときはmariadb containerにdocker execしてからクライアントを叩く必要があってそれが微妙に不便だったりはします。
wordpress
phpのバージョンが古く、かつEoLのcentosで八方塞がりとなっていたwordpressのバージョンを上げたかったのが今回のリプレースの一因でもありました。ランタイムバージョンの影響を大きく受けるコンポーネントなのでこちらは特にコンテナ化したかったです。
データの移行もかなり問題視していて悩んだのですが、結論としてはmysqldumpを吐かせて飲ませた後、wp-contentだけ移してあげれば動きました。一応DB上の値も少し書き換えております。
MariaDB [wordpress]> select * from wp_options limit 2;
+-----------+-------------+----------------------------+----------+
| option_id | option_name | option_value | autoload |
+-----------+-------------+----------------------------+----------+
| 1 | siteurl | http://xxx.xxx.xxx.xxx/blog | yes |
| 2 | home | http://xxx.xxx.xxx.xxx/blog | yes |
+-----------+-------------+----------------------------+----------+
2 rows in set (0.001 sec)
上記の値は公開URLと揃っている必要がありそうです。DBの書き換えが正しい手順かはわかりませんが、一応これで動きました。最新バージョンになって警告もなくなりすっきりしております!
ただ一つだけ、コンテナのバージョンに対してwordpressのバージョンを管理画面から上げると一致性が保たれないという問題があります・・。あまり気にしないで、phpのバージョンを上げたいときだけコンテナバージョンを上げれば良いのかなぁと思っているところです。
あと、そもそも今どきwordpressを自前構築するよりもうどこかのブログサービスに乗ればいいのでは・・と思いましたがなんとなく自前構築を続けております!笑
意外と移行は簡単!
やることを整理して淡々とこなしていけば、なんとかできるものだと思いました!今ドメインの移管手続き中なので、それが完了したらSSLの設定も入れてみようかなと思ってます。httpdの設定やそれぞれレシピの書き方など苦労した部分もありましたが、その辺はなんとか調べつつやればなんとかなりそうです。今だとChatGPTに聞くのもありですね。
サイト構築がかなり楽になったので、これから作り物の資材を更に上げていったりできればなと夢が広がりますね!それではまた。