Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 5 years have passed since last update.

AWS(EC2)にDjango2.0のアプリをデプロイ(nginx+gunicorn)

Posted at

AWS-EC2インスタンスにDjango2.0のアプリケーション(今回は静的webページ)をデプロイします。
使用するツールはnginxとgunicornです。

aws - nginx - gunicorn - django
のような位置関係になるはず。

#1. Djangoではないページの公開
Djangoを使わない場合は、
AWSにEC2インスタンスを作成して、nginxを使い、webページを公開する【前編】
AWSにEC2インスタンスを作成して、nginxを使い、webページを公開する【後編】
こちらを参考にしてください。 

AWSへの接続は、ターミナルで

ssh -i ローカルに置いてあるpemのpath/hoge.pem ec2-user@00.00.00.00(パブリックIP)

また、ブラウザでAWSコンソールにログインし、
確認用のため、8000番ポートを解放しておく。
EC2インスタンスのセキュリティグループにある、インバウンド/編集/ルールの設定
などで追加できる。
8000番ポートのタイプはカスタムTCP、ソースは0.0.0.0/0。

#2.nginxのインストール

nginxを入れる
yum install nginx
nginx起動
nginx
```:nginx自動起動設定
chkconfig --add nginx
chkconfig nginx on
設定の確認
chkconfig | grep nginx
nginx           0:off   1:off   2:on    3:on    4:on    5:on    6:off

ブラウザで、http://(パブリックDNS)でnginxが起動しているか確認する。

#3.Djangoプロジェクトのアップロード
新しくローカルのターミナルを起動し、
ローカルターミナルから AWSへファイルのアップロードを行う。
Djangoプロジェクトはzipにしておくこと。

ローカルターミナル
scp -i hoge.pem -r ローカルにあるアップロードしたいファイル/hoge.zip ec2-user@パブリックDNS/home/ec2-user/hogepj

すると、hogepjの下にhoge.zipがアップロードされる。
解答する場合は、最初のAWSターミナルから、アンジップする。

AWSターミナル
unzip hoge.zip

#4.Python3の環境構築(pyenv)
EC2サーバにPython3環境構築を参考にする。

gitが入っていない場合は sudo yum install git -y で先にインストールしておく。
以下一行ずつ$の後からインストール

AWSターミナル
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
$ sudo yum install gcc zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel openssl openssl-devel -y
$ pyenv install 3.6.2

これでpython3が入るはず。
ただし、接続を切ると2に戻ってしまうので、デフォルトの設定を3にしてしまう。

AWSターミナル
$ pyenv global 3.6.2
$ pyenv rehash

確認するコマンドは $ python --versionです。

###Djangoもインストール

pip install django

#5.gunicornのインストール

pip install gunicorn

manage.pyのあるところで、

gunicorn your_project.wsgi --bind=0.0.0.0:8000

もちろん、your_projectのところは、自分のプロジェクトの名前に変更しておく。この場合はhoge.wsgi。

setting.pyの設定も書き換える。
sudo vim xx/hoge/setting.pyなどでターミナル上で書き換えることができる。詳しくはvimで検索。

/hoge/setting.py
# 中略
ALLOWED_HOSTS = ['(パブリックIP)']
# 以下略

'00.00.00.00'のようになるはずである。

ブラウザでhttp://(パブリックDNS):8000を確認する

#6.あとはこちらのページが参考になる
https://qiita.com/kur/items/fb75354ee53671c79614#nginx%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%81%AE%E5%A4%89%E6%9B%B4

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?