Webに来た

やる気が出たのでドメインを取ってVPSを借りてWebサーバーを立てました。やったことを書いておきます。

ドメイン

手始めにドメインの取得をしました。取ってしまえばもう後戻りできないです。

ドメインはGoogle Domainsを使って取得しました。

正直なところ、レジストラのどこをどう比較すればいいのかわかりません。が、なんとなくは選ばない方がいいレジストラがあるという噂は聞いていたので、それ以外のレジストラから適当に選びました。

VPS

AWSのLightsailを使うことにしました。

最初はさくらのVPSを使おうと思いましたが、手元のデビットカードがゴリヨウできなかったのでやめました。

AWSならEC2やらEBSやらを使えば1年間無料で程よい性能のマシンを使えるとも考えましたが、別にAWSと戦いたいわけではないのでLightsailを選択しました。料金体系もシンプルですし。

現在、最も性能の低いサーバーを使用しています。搭載メモリは512MBで、VSCodeでリモート接続しながらdocker-composeを叩くだけでサーバーが落ちます。既に2回はこれで落としました。

Webサーバー

とりあえずでnginxを使用しています。単純に他の選択肢を知らないからです。Apache HTTP Serverも聞いたことがありますが、聞いたことがあるだけで触ったことがないので今回は見送りました。

nginxはdockerコンテナ上で動かしているのですが、nginxのログの処理をするlogrotateはホスト側で叩いています。ホスト側で既にlogrotateを定期的に叩く設定はされていたので、コンテナ内のログが吐かれるディレクトリにマウントしているディレクトリに対して以下のような設定を書けば動きます。

/home/ubuntu/nginx/log/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 644 root root
    sharedscripts
    postrotate
        if docker ps --filter='status=running' --format='{{.Names}}' | grep 'ubuntu_nginx_1' -q; then
            docker kill -s 'USR1' ubuntu_nginx_1
        fi
    endscript
}
                    
使用しているnginxの設定

cronとlogrotateぐらいコンテナに入れてやってもいい気がしますが、面倒なのでこのようにしました。

ちなみに、Lightsailにもファイアウォールがあるので、サーバー内でのポート解放に加えてこのファイアウォールの設定もしていなければ外部から接続できません。私はこれに気づかず3時間溶かしました。

証明書

certbotを使って作成しました。

コマンドを叩いてほいほい質問に答えるだけで証明書が作れるなんて便利ですね。

このブログ

とくにSSGを導入しているわけでもなく、HTMLをちまちま手書きしています。

そのうち何らかの軽量マークアップ言語に乗り換えようと考えていますが、まずは手書きをしてHTMLの気持ちになることが大事なんだと思います。