テストサーバーにアプリケーションをデプロイ中にエラーが発生しましたか?

テストサーバーにアプリケーションをデプロイ中にエラーが発生しましたか?

CentOS 7テストサーバーにdjangoアプリケーションをデプロイするのに問題があります。 Minicondaは、最初にサーバーのルート構成ファイルを介してインストールされた後、アプリケーションのコピーが実行され、condaコマンドによって生成された環境が1002:1002グループにアプリケーションとして追加されます。

その後、Gunicornとアプリケーションの内部フォルダをアクティブにして755および+x権限を取得し、グループ1002:1002を追加するbashスクリプトを公開しました。

ただし、とにかくminiconda3フォルダとdjangoappアプリケーションフォルダを100x:100xグループに追加した後は展開できません。

私のスクリプト

#!/bin/bash

NAME="djangoapp"
DJANGODIR=/var/www/dangoapp
SOCKFILE=/var/www/djangoapp/run/gunicorn.sock
USER=nginx
GROUP=webdata
NUM_WORKERS=5
DJANGO_SETTINGS_MODULE=app.settings
DJANGO_WSGI_MODULE=app.wsgi
TIMEOUT=3600

echo "Starting $NAME as `whoami`"

cd $DJANGODIR
source activate djangoapp
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH

RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR

#exec gunicorn ${DJANGO_WSGI_MODULE}:application \
exec /home/adm/miniconda3/envs/ws/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
 --name $NAME \
 --workers $NUM_WORKERS \
 --user $USER \
 --bind=unix:$SOCKFILE \
 --timeout $TIMEOUT

Gunicornエラーメッセージが表示されます。

./gunicorn.sh 
Starting djangoapp as root
[2018-12-22 00:01:07 -0200] [17316] [INFO] Starting gunicorn 19.7.1
[2018-12-22 00:01:07 -0200] [17316] [INFO] Listening at: unix:/var/www/djangoapp/run/gunicorn.sock (17316)
[2018-12-22 00:01:07 -0200] [17316] [INFO] Using worker: sync
[2018-12-22 00:01:07 -0200] [17323] [INFO] Booting worker with pid: 17323
[2018-12-22 00:01:07 -0200] [17323] [ERROR] Exception in worker process
Traceback (most recent call last):
  File "/home/nlt-adm/miniconda3/envs/ws/lib/python3.4/site-packages/gunicorn/arbiter.py", line 578, in spawn_worker
  File "/home/nlt-adm/miniconda3/envs/ws/lib/python3.4/site-packages/gunicorn/workers/base.py", line 126, in init_process
  File "/home/nlt-adm/miniconda3/envs/ws/lib/python3.4/site-packages/gunicorn/workers/base.py", line 135, in load_wsgi
  File "/home/nlt-adm/miniconda3/envs/ws/lib/python3.4/site-packages/gunicorn/app/base.py", line 67, in wsgi
  File "/home/nlt-adm/miniconda3/envs/ws/lib/python3.4/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
  File "/home/nlt-adm/miniconda3/envs/ws/lib/python3.4/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
  File "/home/nlt-adm/miniconda3/envs/ws/lib/python3.4/site-packages/gunicorn/util.py", line 352, in import_app
  File "/var/www/djangoapp/app/wsgi.py", line 12, in <module>
    from django.core.wsgi import get_wsgi_application
ImportError: No module named 'django'
[2018-12-22 00:01:07 -0200] [17323] [INFO] Worker exiting (pid: 17323)
[2018-12-22 00:01:07 -0200] [17316] [INFO] Shutting down: Master
[2018-12-22 00:01:07 -0200] [17316] [INFO] Reason: Worker failed to boot.

編集する:スクリプトなしでgunicornでテストされ、動作します! ...

gunicorn --bind 0.0.0.0:8000 djangoapp.wsgi:application
[2018-12-22 01:47:50 -0200] [17869] [INFO] Starting gunicorn 19.7.1
[2018-12-22 01:47:50 -0200] [17869] [INFO] Listening at: http://0.0.0.0:8000 (17869)
[2018-12-22 01:47:50 -0200] [17869] [INFO] Using worker: sync
[2018-12-22 01:47:50 -0200] [17872] [INFO] Booting worker with pid: 17872
^C[2018-12-22 01:48:15 -0200] [17869] [INFO] Handling signal: int
[2018-12-21 21:48:15 -0600] [17872] [INFO] Worker exiting (pid: 17872)
[2018-12-22 01:48:15 -0200] [17869] [INFO] Shutting down: Master

この問題をどのように解決できますか?

ベストアンサー1

最初は、gunicornのbash実行スクリプトでこの問題を解決する方法を見つけました。見つかった解決策は、minicondaの環境実行が許可されていないため、$ USERパラメータを削除することでした。

修正するコードはコードのグニコーン部分です。

exec gunicorn ${DJANGO_WSGI_MODULE}:application \
 --name $NAME \
 #--user $USER
 --workers $NUM_WORKERS \
 --bind $PORT \
 --bind=unix:$SOCKFILE \
 --timeout $TIMEOUT
 --access-logfile - $LOGDIR \
 --access-logformat '"%(r)s" %(s)s %(b)s'

おすすめ記事