はじめに
この記事は JSL (日本システム技研) Advent Calendar 2021 - Qiita 20日目の記事です。
毎年恒例、一人アニバーサリー記念です。
現場を離れているせいで、いよいよネタが無くなってきました。
たまたま案件で使用したAmazon Lightsailを使う機会があったので、特徴や使ってみた感想を書きます。
Amazon Lightsail とは
AWSが提供するVPSです。月額定額3.5$(*1)から始められるのが特徴でEC2と同様の使用感で扱えます。
インスタンス立ち上げ時も以下のように用途に応じて、プランを提案してくれるので非常に便利です。
*1 厳密いうと、通信料は上限あり、超過分は課金されます。
-
メリット
- 月額固定料金でEC2を実行できる
- Bitnamiのアプリケーションテンプレートを使用できる
- ブラウザからSSH接続が可能
-
デメリット
- 月額固定のためインスタンスを停止しても課金されてしまう
- 他アカウントからの移行ができない?
- Autoscalingが出来ない。大規模なアプリケーション開発には向いていない(ただし手動では増やせる)
今回のゴール
- Lightsailについて調べてみる
- Lightsail上でBitnamiのDjangoテンプレートを使用してみる
インスタンスを立ち上げてみる
ひとまずOSのみ(Amazon Linux2)を選択して、その他は、特になにも設定しなくても、以下のような感じでブラウザよりSSH接続可能です。いわゆるAmazon Linux2のAMIイメージのインスタンスが起動します。
レンタルサーバーだとパーミッションの制限がありスクラッチ開発で使いづらいですが、Lightsail
は月額固定でAmazon EC2が使用できるため小規模開発やランニングコストが気になる時に使用すると良いと思いした。
Djangoテンプレートをでインスタンスを立ち上げてみる
次にDjangoテンプレートを使用してインスタンスを起動してみます。
5$/月以上のプランでないと使用できないようです。
また、デフォルトではユーザーがec2-user
ではなく、bitnami
になったり、OSはDebian
が起動するようです。
10.11
Djangoテンプレートの各種バージョン
テンプレートによってインストールされたライブラリを確認してみます
$ python --version
Python 3.8.12
pipを確認すると、MySQL、PostgreSQL、Sqliteへの接続ライブラリがインストールされている模様。
$ pip freeze
asgiref==3.4.1
backports.entry-points-selectable==1.1.1
distlib==0.3.3
Django==3.2.9
filelock==3.3.2
mysqlclient==1.4.6
platformdirs==2.4.0
psycopg2==2.9.2
pytz==2021.3
six==1.16.0
sqlparse==0.4.2
virtualenv==20.10.0
- WebサーバーはApache・・
- DBもMySQL、PostgreSQL、Sqlite
$ httpd -v
Server version: Apache/2.4.51 (Unix)
Server built: Oct 7 2021 18:37:56
$ mysql --version
mysql Ver 15.1 Distrib 10.6.5-MariaDB, for Linux (x86_64) using readline 5.1
$ psql --version
psql (PostgreSQL) 11.14
$ sqlite3 -version
3.27.2 2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt
1
テンプレートを見た感覚ですが、同一インスタンス内にアプリケーション/DBサーバーを同居させる前提のようです。
DjangoをWebサーバー上で起動してみる
Bitnamiの公式チュートリアル通りに立ち上げてみました。
Apache + mod_wsgi
へのデプロイ例でした。
もう少しモダンなnginx + gunicorn
のような構成の方が人気でそうな気がするのだけど・・(とはいえこの構成自体もだいぶ枯れているような)。
感想
- LightSailは、月額固定でEC2を立ち上げられると考えれば、個人利用や小規模開発には使えると思いました。
- bitnamiのDjangoテンプレートをを使用した場合、プロジェクトをEC2上で作成しないとメリットが無いように思いました。gitを使用することを考慮すると、ローカル環境でDjangoプロジェクトを作成してデプロイした方が開発しやすく感じました。
- bitnamiの公式チュートリアルをもう少しモダンなものに変えると初学者にオススメしやすいと思いました。