Ошибка развертывания Django "usage: gunicorn [OPTIONS] [APP_MODULE] gunicorn: error: unrecognized arguments: "
Я пытаюсь развернуть приложение Django на виртуальной машине Linux, созданной на Google Computing Engine (GCE). Мое доменное имя работает нормально, но сервер wsgi не запускается из-за ошибки в заголовке.
.
supervisor.log выглядит как tis.
.
.
.
usage: gunicorn [OPTIONS] [APP_MODULE]
gunicorn: error: unrecognized arguments:
usage: gunicorn [OPTIONS] [APP_MODULE]
gunicorn: error: unrecognized arguments:
usage: gunicorn [OPTIONS] [APP_MODULE]
gunicorn: error: unrecognized arguments:
usage: gunicorn [OPTIONS] [APP_MODULE]
gunicorn: error: unrecognized arguments:
usage: gunicorn [OPTIONS] [APP_MODULE]
gunicorn: error: unrecognized arguments:
usage: gunicorn [OPTIONS] [APP_MODULE]
gunicorn: error: unrecognized arguments:
Мне трудно устранить неполадки, потому что он не говорит мне, куда смотреть.
Ошибка возникает, когда я запускаю gunicorn_start через такие команды, как sudo supervisorvtl restart tutorial или chmod +x .../venv/bin/gunicorn_start, потому что я могу запустить содержимое файла непосредственно через терминал.
Вот как выглядит мое дерево файлов:
/webapp/user
|--- req.txt
|--- venv
|--- tutorial
|-- req.txt
|--manage.py
|--tutorial
.
.
.
|--wsgi.py
|--settings.py
.
.
.
Я подумал, что причина этой ошибки кроется в содержимом файла gunicorn_start. Поэтому я запустил shell-скрипты из этого файла прямо в терминале виртуальной машины, и сервер wsgi, похоже, работает нормально. Вот результат.
Моя gunicorn_start выглядит следующим образом:
#!/bin/sh
NAME='tutorial'
DJANGODIR=/home/user/webapp/user/tutorial
SOCKFILE=/home/user/webapp/user/venv/run/gunicorn.sock
USER=user
GROUP=user
NUM_WORKERS=3
DJANGO_SETTINGS_MODULE=tutorial.settings
DJANGO_WSGI_MODULE=tutorial.wsgi
TIMEOUT=120
cd $DJANGODIR
. ../venv/bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR
exec ../venv/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
--chdir /home/user/webapp/yoshi/tutorial \
--name $NAME \
--workers $NUM_WORKERS \
--timeout $TIMEOUT \
--user=$USER --group=$GROUP \
--bind=unix:$SOCKFILE \
--log-level=debug \
--log-file=-
Вот как выглядит .conf:
[program:tutorial]
command = /home/user/webapp/user/venv/bin/gunicorn_start
user = user
stdout_logfile = /home/user/webapp/user/venv/logs/supervisor.log
redirect_stderr = true
environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8
Вот как выглядит ~/webapp/user/req.txt:
asgiref==3.5.2
cachetools==5.1.0
certifi==2021.10.8
charset-normalizer==2.0.12
Django==4.0.4
google-api-core==2.7.3
google-auth==2.6.6
google-cloud-secret-manager==2.10.0
googleapis-common-protos==1.56.1
grpc-google-iam-v1==0.12.4
grpcio==1.46.1
grpcio-status==1.46.1
gunicorn==20.1.0
idna==3.3
mysql-connector==2.2.9
mysqlclient==2.1.0
proto-plus==1.20.3
protobuf==3.20.1
pyasn1==0.4.8
pyasn1-modules==0.2.8
PyMySQL==1.0.2
requests==2.27.1
rsa==4.8
six==1.16.0
sqlparse==0.4.2
urllib3==1.26.9