AWS Cloud9でDjangoアプリを作成する
この記事の続きです。
https://tech-joho.info/aws-cloud9でpython開発する準備
Djangoアプリを作成して、最初の画面を表示します。
Cloud9でPython3を使う
実は、Cloud9で作った環境では、ディフォルトのPythonはバージョン2です。
これでは、Djangoアプリを作成できないので、まず、Python3を使いやすいように環境を整えます。(実は下の方法でDjangoを起動するのには必要ない)
画面左上の”AWS Cloud9″をクリックし、メニューの”Preferences”をクリックしましょう。
開いた設定タブの左側のメニューの”Python Support”を選択し、Python versionをPython3に変更します。
参考
Cloud9でPython3のDjango環境を5分でつくる
https://qiita.com/rmiyamoto/items/4143c6081fb664208e06
Djangoのインストール
Python3のpipでDjangoをインストールしましょう。
コンソールで下記コマンドを実行しましょう。
$ sudo pip-3.6 install django
Djangoプロジェクトの作成
Djangoプロジェクトを作成します。
コンソールで下記コマンドを実行しましょう。MyTestAppはプロジェクト名です。他の名前でも大丈夫です。
$ django-admin startproject MyTestApp
コマンドを実行すると、プロジェクト名と同じ名前のディレクトリが作成されます。
コンソールで下記コマンドを実行し、プロジェクトフォルダに移動しましょう。
$ cd MyTestApp
Djangoアプリサーバの起動
アプリサーバを起動し、画面を確認してみましょう。
コンソールで下記コマンドを実行しましょう。
$ python3 manage.py runserver 0.0.0.0:8000
コンソールにこんな内容が表示されれば起動は成功です。
ただし、アプリサーバは起動していますが、まだAWSのファイアーウォールとdjangoのホスト制限のせいで外部からアクセスできません。
これからその設定をしていきます。
セキュリティグループを設定してポートを開ける
まず、AWSのEC2の設定画面に移動しましょう。
画面左上の”AWS Cloud9″をクリックし、メニューの”Go To Your Dashborad”をクリックしましょう。
別タブで、Cloud9のダッシュボードが開きます。
ダッシュボード左上の「サービス」をクリックし、表示されたメニューの”EC2″をクリックします。
EC2のダッシュボードが表示されるので、「実行中のインスタンス」をクリックします。
EC2インスタンスの一覧が表示され、1つしかない場合、選択状態になっています。
画面下部にはその詳細が表示されていますが、そのうち「パブリック DNS (IPv4)」の欄に表示されているのが、URLの中央部(ホスト)になります。
この前に”http://”を、後に”:8000″をつけてアクセスしてください。
次に、セキュリティグループの欄をクリックします。
セキュリティグループの設定が表示されるので、インバウンドタブを開き、 「編集」をクリックします。
インバウンドルールを設定するダイアログが表示されるので、「ルールの追加」をクリックし、TCPカスタムを選択し、ポートの欄に8000を入力します。最後に、追加をクリックします。これで、ファイアーウォールの設定画変更され、8000番ポートのアクセスが許可されます。
上記の、「パブリック DNS (IPv4)」の欄に表示されている内容に、前に”http://”を、後に”:8000″をつけてアクセスしてください。
この時点で、Djangoのアプリにアクセスすることができます。
ただし、ホスト制限に引っかかり、下記のようなエラーが表示されます。
DjangoのALLOWED_HOSTSを設定する
まず、開きっぱなしのCloud9のIDEで、MyTestAppディレクトリにあるmanage.pyを開きます。
その中ほどまでスクロールし、ALLOWED_HOSTSというリストに、先程の「パブリック DNS (IPv4)」の欄に表示されている内容を追加します。
もう一度、:8000で終わるURLにアクセスして下さい。
下のように、Djangoの初期画面が表示されれば成功です。
まだ、EC2やSecurityGroupとの連携がないせいで、結構めんどくさいですね。(2017年12月3日時点)
しかし、そのうち解消されるような気もします。