昨晩に引き続いてやった。コードを書き終えて本番にデプロイするまえに燃え尽きた…。などということがないように、先に実際に動作させるインスタンス上に環境構築して動作確認した。

前回まで


お約束の前回まで

作りかけているやつ


lv-fox

ドメイン設定


Route 53にAレコードを作成して、Let’s Encryptで証明書取得した。Let’s Encryptで証明書取得する際に「寄付してくれませんか」と表示された。Let’s Enctyptには死ぬほどお世話になっているので$100 Donation + Security Key NFC by Yubico (Gift)を購入した。 (Yubikey使ってみたかったというのもある)

dockerで構築


Docker Hubにpushしたイメージを引っ張ってきて動くところまで確認した。この時に既存のCahsperがなぜかlv-foxのDBに接続しに行こうとしてエラーになるなどというトラブルが発生してしまったため、cahsperlv-foxのdockerのネットワークを明示的に指定するように変更した。これで解決した。

nginx


いつも通り。

許可ドメインの設定


この後、起動してようやくいけるか??と思ったところ、下記のようにPlayFrameworkのエラーが返ってきてしまった。開発環境では全く問題なかったのに本番だとこういうのが起こったりするので本当にソフトウェア開発めんどくさいという気持ちになる。

(プロダクションモードでビルドしてるハズなのにこのエラー画面は正しいのか…???という疑惑もある)

Allowed hosts filter

ドキュメントに従って修正した。本番のみ発生してしまうということで、GitHubにPushしてDockerイメージ再作成して、本番で再度確認というめんどくさい手順をとらざるをえず、心が折れる覚悟をしていたものの一回でなんとかなったので良かった。

これで構築したsearch.yoshinorin.netにアクセスすると下記のようなJSONが返ってくるようになった。

1
{"status":"operational"}

POSTできるかテスト


構築した search.yoshinorin.netに対して記事の一覧をPOSTして登録できるかどうか試した。

結果、初回で614/741件(少し前の時の記事一覧)の取り込みに成功した。ダメだった127件は504が返ってきていた。続けてもう一回放り込んだら上手く取り込めた。JavaScriptのforEachでぶん回してPOSTしただけなので、流石にそんなにスペックの高くないインスタンスでは捌ききれなかったっぽい。

DBにポートフォワードで接続


MySQL WorkBenchからポートフォワードで接続できることを確認した。

残り


さて、残り下記あたりはやる予定。

  • ログが出ない
  • POSTのIPを絞る

まず、予想外のところで詰まっているのがログが出ない問題。こんなところで詰まるとは思っていなかったけど、出力されない…。PlayFrameworkのLogger使おうとしてるけど出力されないので困っている。後はPOSTのAPIはIPを絞ろうと思っている。後者に関しては絶対必要なものでもないのでやらないかもしれないけど。

感想


さて、これで後はコードさえ書き終えればDockerイメージを差し替えてサーバサイド 終わりである。後はフロントとフロントが仕上がったら本番でCORS問題ないかとか確認しないといけない。めんどくさ。ゲームして寝る。おやすみ。