衝動的にLightsailとDjangoでWebサイトを作る その1
導入的なあれ
ウマ娘。
それはリセマラによるダウンロード数水増しがないにも関わらず、サービス開始からわずか3か月足らずで700万DLを達成している化け物級スマホゲーム。
(※ゲームウマ娘はプレイヤー自身がユーザーデータを削除できるため、いちいちアプリをアンインストールすることなくリセマラができる。)
ゲームだけでなくアニメ版も化け物級で、聞くところによるとアニメ本編のブルーレイディスクの売り上げが11万枚を突破しているらしい。地上波で既に放送済みで、各種動画配信サービスでも視聴できるのに。なんと2000年代で最も売れたアニメ円盤になったとか。冗談じゃねぇ…。
はい。ウマ娘にドハマりして配信開始日より毎日遊んでいる&アニメの円盤1巻も購入しましたnyanpyouです。お久しぶりです。
あまりにコンテンツにハマりすぎてウマ娘に関するお役立ちサイトを作ってしまいました。衝動。衝動に勝る熱無し。
ゲームウマ娘に登場する全レースの情報(レース名とかいつ開催とか距離は何mとか勝つとファンが何人増えるだとか)を確認することができるデータベースです。
(アイディアが思いつかなかったため現状のコンテンツはこれ1つのみ。何かいい案が思いついたら増やす予定。)
今回はこいつを作成する際に新しく覚えたこと、詰まったことなどをいつものごとく備忘録代わりに書き連ねていこうと思います。
前回の記事で気合を入れすぎた結果、エネルギーを使い果たし更新が3か月ぶりになってしまったため、今回はさらっと書く所存。
構成
何分サーバーに触れること自体初めてだったので右も左もわからない。ありがたいことに相談に乗ってくれるエンジニアの方がいたので色々聞いた結果、次の構成になった。
- レンタルサーバー:AWS Lightsail
- OS:Ubuntu 20.04.2
- データベース:MySQL 8.0.25
- サーバーソフト:Apache 2.4.41
- 言語:Python 3.8.5
- フレームワーク:Django 3.2.2
- ドメイン取得:AWS Route 53
基本から攻めるのが板ということで、王道のLAMP構成。本当に王道ならPはPHPらしいが、せっかくPythonを普段使いしているので選択。
Lightsailが月500円くらい、Route 53の.netドメインが月割りすると100円くらいなので、費用は合わせて月額600円ほど。お手軽料金。
遭遇した諸々
AWSアカウントの管理
正直パッと見ただけでは何がどうなってるのかよくわからない。先人がアカウント設定の虎の巻を作ってくれていたので、ありがたく参考にさせて貰って設定した。
重要な点は、普段のログインにおいては権限を抑えたIAMユーザーを使用すること、知らない間に課金されまくる事態を防ぐため請求情報のアラームを設定しておくこと、の2点。
Ubuntuまともに動かない問題
まず最初にLightsailでUbuntuを立ち上げ、SSHで接続できるようにするところから始めたのだが、ここでいきなり引っかかる。
具体的にはやたらとapt upgradeに時間がかかるし、aptで導入したMySQLに至ってはまともに起動しない。
LightsailにはCPUクレジットというものが存在し、これを使い切ると動作が激重になるそうだが、これも一瞬で使い切ってしまう。
出だしからそれなりに困った。しかしCentOSの話ではあるものの、同じくLightsailでMySQLが起動しない問題についての記述を発見。
メモリが少なすぎるのでswapファイルを作成するべし、と回答があったので
を参考にスワップ領域を設定したところ、目に見えて動作が高速化しMySQLも起動するようになった。
スワップ領域とは、メモリが足りなくなった時に使用する、ストレージ上の領域のことを指すらしい。つまり1GB設定しておけば、実質メモリが1GB増えているのと同じのようだ。
今回は最安プラン(メモリ512MB、1コアプロセッサ
、20GB SSD)を契約したのだが、まともに動かすためにはスワップ領域の設定がマストだったらしい。
続く
今回は一気に書いてしまわず、細かく分けて公開していくスタイルにしてみる。
(全部書いてから出そうとすると、場合によっては1週間くらいかかるため)