![Conda, Django, Gunicorn 및 Supervisor 잘못된 통역사: 해당 파일이나 디렉터리가 없습니다.](https://rvso.com/image/756784/Conda%2C%20Django%2C%20Gunicorn%20%EB%B0%8F%20Supervisor%20%EC%9E%98%EB%AA%BB%EB%90%9C%20%ED%86%B5%EC%97%AD%EC%82%AC%3A%20%ED%95%B4%EB%8B%B9%20%ED%8C%8C%EC%9D%BC%EC%9D%B4%EB%82%98%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EA%B0%80%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
나는 이것을 팔로우하고 있다지도 시간Django 앱을 배포하려고 했으나 /var/www/my_django_project/bin/gunicorn_start
virtualenv 대신 conda env를 사용하도록 실행 파일을 수정했습니다.
CONDA_SRC=/home/justin/anaconda3/etc/profile.d/conda.sh
GUNICORN=/home/justin/anaconda3/pkgs/gunicorn-20.0.4-py38_0/bin/gunicorn
...
source $CONDA_SRC
conda activate myenv
실행할 때 sudo bin/gunicorn_start
다음을 얻었습니다.
“starting backend”
bin/gunicorn_start: /home/justin/anaconda3/pkgs/gunicorn-20.0.4-py38_0/bin/gunicorn: /opt/anaconda1anaconda2anaconda3/bin/python: bad interpreter: No such file or directory
bin/gunicorn_start: line 25: /home/justin/anaconda3/pkgs/gunicorn-20.0.4-py38_0/bin/gunicorn: Success
내 Supervisor.log에는 다음이 표시됩니다.
supervisor: couldn't exec /var/www/my_django_project/bin/gunicorn_start: EACCES
supervisor: child process was not spawned
답변1
내 경로의 기본을 GUNICORN
내 Conda 환경 바이너리가 포함된 디렉터리로 변경하여 이 문제를 해결했습니다. 이는 which python
conda env가 활성화된 동안 찾을 수 있으며 다음을 제공합니다 /home/justin/anaconda3/envs/production/bin/python
. 사용 /home/justin/anaconda3/envs/production/bin/gunicorn
.
bin/gunicorn_start
실행 파일:
#!/bin/bash
NAME=”backend”
DJANGODIR=/var/www/my_django_project/backend
SOCKFILE=/var/www/my_django_project/run/gunicorn.sock
USER=django
GROUP=my_django_project
NUM_WORKERS=3
DJANGO_SETTINGS_MODULE=backend.settings
DJANGO_WSGI_MODULE=backend.wsgi
CONDA_SRC=/home/justin/anaconda3/etc/profile.d/conda.sh
GUNICORN=/home/justin/anaconda3/envs/production/bin/gunicorn
echo “starting backend”
cd $DJANGODIR
source $CONDA_SRC
conda activate myenv
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 \
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--bind=unix:$SOCKFILE \
--log-level=debug \
--log-file=-
내 감독자 구성도 인수 sh
에 누락되었으며 command
내 감독자 구성이 잘못된 확장을 사용했습니다. 확장자가 .인지 확인하세요 .conf
. 내 업데이트는 다음과 같습니다 django.conf
.
[program:django]
command =sh /var/www/my_django_project/bin/gunicorn_start
user = django
stdout_logfile = /var/www/my_django_project/backend/logs/supervisor.log
redirect_stderr = true
environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8
이 문제가 있는 다른 사람에게 도움이 되기를 바랍니다.