わからないこと
ローカルで開発していたアプリケーションをAWS EC2にデプロイした際に
Gunicornがうまく動きません。
前提条件
開発しているアプリケーションの言語は、
React + Django REST frameworkです。
ローカルではDockerを使っており、
サーバーは、Djangoのrunserverを使っています。
このアプリケーションをAWS EC2にデプロイするにあたって、
NginxでReactを動かして、GunicornでAPIを動かす想定です。
現状どうなっているか
nginx.confの設定をして、画面を表示することはできたため、
次にGunicornの起動をしようとしました。
pip install gunicorn cd [manage.pyのあるディレクトリ] gunicorn --bind 127.0.0.1:8000 [プロジェクト名].wsgi
上記コマンドを実行して、
下記の通り、Gunicornのプロセスの起動自体はできました。
sh-4.2$ ps ax|grep gunicorn 12392 ? S 0:00 /home/ssm-user/[プロジェクト名]-venv/bin/python3 /home/ssm-user/[プロジェクト名]-venv/bin/gunicorn --bind 127.0.0.1:8000 [プロジェクト名].wsgi -D 12395 ? S 0:00 /home/ssm-user/[プロジェクト名]-venv/bin/python3 /home/ssm-user/[プロジェクト名]-venv/bin/gunicorn --bind 127.0.0.1:8000 [プロジェクト名].wsgi -D 12469 pts/0 S+ 0:00 grep gunicorn
しかし、ローカル環境では、runserverすれば接続できていたページに接続できませんでした。
Gunicornのsocketファイルやserviceファイル等も試してみたのですが、
うまくいきませんでした。
どうしたいか
Django REST frameworkで作成したAPIを、Gunicornで起動するための
設定方法を教えていただけますと嬉しいです。
作成した設定ファイル
- ↓プロジェクト構成
[プロジェクト名] │ ├ Dockerfile ├ README.md ├ db.sqlite3 ├ docker-compose.yml ├ package-lock.json ├ requirements.txt │ ├ backend │ ├ __init__.py │ ├ api │ ├ manage.py │ └ [プロジェクト名] │ └ front ├ README.md ├ package-lock.json ├ package.json ├ public ├ src └ yarn.lock
- ↓ /etc/systemd/system/[プロジェクト名].socket
[Unit] Description=gunicorn socket [Socket] ListenStream=/home/ssm-user/[プロジェクト名]/backend/[プロジェクト名].sock [Install] WantedBy=sockets.target
- ↓ /etc/systemd/system/[プロジェクト名].service
[Unit] Description=gunicorn daemon Requires=[プロジェクト名].socket After=network.target [Service] User=ssm-user Group=ssm-user WorkingDirectory=/home/ssm-user/[プロジェクト名]/backend ExecStart=/home/ssm-user/[venv名]/bin/gunicorn –workers 3 –bind /home/ssm-user/[プロジェクト名]/backend/[プロジェクト名].sock [プロジェクト名].wsgi:application [Install] WantedBy=multi-user.target
- ↓nginx.conf_一部抜粋
server { listen 80; server_name [EC2のIP]; location / { proxy_pass http://localhost:3000; } # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。