前提・実現したいこと
Djangoで作成したWebアプリをAWS上でデプロイしようとしています。
gunicorn.serviceを起動するとModuleNotFoundErrorとなりサービスを開始できません。
AWS環境 "Amazon Linux 2"
NginxとGunicornを使用しています。
gunicorn --bind 0.0.0.0:8000 myproject.wsgi
は問題なく実行できます。
socketファイル(gunicorn.socket)とserviceファイル(gunicorn.service)を作成し
sudo systemctl start gunicorn.service
を実行するとエラーになります。
発生している問題・エラーメッセージ
sudo systemctl status gunicorn.serviceで確認すると次のようになります。
● gunicorn.service - gunicorn daemon Loaded: loaded (/etc/systemd/system/gunicorn.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since 土 2021-10-02 15:29:47 JST; 34min ago Process: 6776 ExecStart=/home/puser/myp/env/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/puser/myp/myproject/myproject.sock myproject.wsgi:application (code=exited, status=3) Main PID: 6776 (code=exited, status=3) 10月 02 15:29:47 ha-sample-web gunicorn[6776]: File "<frozen importlib._bootstrap>", line 1006, in _gcd_import 10月 02 15:29:47 ha-sample-web gunicorn[6776]: File "<frozen importlib._bootstrap>", line 983, in _find_and_load 10月 02 15:29:47 ha-sample-web gunicorn[6776]: File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked 10月 02 15:29:47 ha-sample-web gunicorn[6776]: ModuleNotFoundError: No module named 'myproject' 10月 02 15:29:47 ha-sample-web gunicorn[6776]: [2021-10-02 15:29:47 +0900] [6779] [INFO] Worker exiting (pid: 6779) 10月 02 15:29:47 ha-sample-web gunicorn[6776]: [2021-10-02 15:29:47 +0900] [6776] [INFO] Shutting down: Master 10月 02 15:29:47 ha-sample-web gunicorn[6776]: [2021-10-02 15:29:47 +0900] [6776] [INFO] Reason: Worker failed to boot. 10月 02 15:29:47 ha-sample-web systemd[1]: gunicorn.service: main process exited, code=exited, status=3/NOTIMPLEMENTED 10月 02 15:29:47 ha-sample-web systemd[1]: Unit gunicorn.service entered failed state. 10月 02 15:29:47 ha-sample-web systemd[1]: gunicorn.service failed.
/etc/systemd/system/gunicorn.socket
[Unit] Description = gunicorn socket [Socket] #ListenStream=/run/gunicorn.sock ListenStream=/home/puser/myp/myproject/myproject.sock [Install] WantedBy=sockets.target
/etc/systemd/system/gunicorn.service
[Unit] Description=gunicorn daemon Requires=gunicorn.socket After=network.target [Service] User=puser Group=pgroup WorkingDirectory=/home/puser/myp/myproject ExecStart=/home/puser/myp/env/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/puser/myp/myproject/myproject.sock myproject.wsgi:application [Install] WantedBy=multi-user.target
試したこと
socketファイルのListenStreamの設定を
ListenStream=/run/gunicorn.sock
として、
serviceファイルのExecStartの設定を
ExecStart=/home/puser/myp/env/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/gunicorn.sock myproject.wsgi:application
としてみても、エラーになりました。
補足情報(FW/ツールのバージョンなど)
Python==3.7.10
Django==3.2
gunicorn==20.1.0
nginx/1.20.1
Djangoのファイルはgit cloneで持ってきました。
DBのmigrateは終わっています。
python3 manage.py runserverも起動できます。
/home/puser/myp/myproject にmanage.pyがあります。
仮想環境は
/home/puser/myp/env/に作成しています。
sudo systemctl start gunicorn.socketは問題なく実行でき
sockファイルが作成されました。
なぜgunicorn.serviceを開始できないのでしょうか。
いろいろWebで検索もしましたが、原因が全く分かりません。
お力添えをお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/04 00:08 編集