내 wsgi ini 파일에서 uid
/gid
매개 변수를 사용하여 uWsgi를 실행하려고 시도하기 때문에 시작 후 권한있는 액세스가 삭제됩니다.pid/gid를 사용하여 uWsgi를 실행하는 문제
참고 :이 두 매개 변수를 ini 파일에서 제거하면 예상대로 작동합니다. 또한 소켓에 문제가 없습니다. 내가 지정된 uid
및 gid
(의 nginx 사용자 및 그룹)을 실행할 때, 나는 나의 가상 ENV 로딩에 문제가 나타내는 오류,
Traceback (most recent call last): File "wsgi.py", line 14, in <module> from app import app as application File "/var/www/wsgi/flask-appbuilder/peds_registry/app/__init__.py", line 1, in <module> import logging ImportError: No module named logging
이 잘 작동 얻을 gid/pid없이 실행 중입니다. 또한 사용자와 그룹 nginx가 모두 존재하며 둘 다 파이썬 프로젝트의 디렉토리 구조에 대한 소유권을 가지고 있습니다.
server {
listen 80;
server_name hostname.domain;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name hostname.domain;
ssl_certificate /etc/ssl/certs/host.chained.crt;
ssl_certificate_key /etc/ssl/certs/host.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
location /test {
include uwsgi_params;
uwsgi_pass unix:/tmp/uwsgi.sock;
}
}
내 uwsgi 시작은 다음과 같습니다 : 다음과 같이
내 Nginx에의 설정의 서버/위치 지시자는
#!/bin/sh
# chkconfig: - 99 10
FLASK_HOME=/var/www/wsgi/flask-appbuilder
export PEDS_HOME
ACTIVATE_CMD=/var/www/wsgi/flask-appbuilder/venv/bin/activate
case "$1" in
start)
cd $FLASK_HOME
source $ACTIVATE_CMD
uwsgi -s /tmp/uwsgi.sock -H ./venv/ --ini /var/www/wsgi/flask-appbuilder/test.ini --virtualenv /var/www/wsgi/flask-appbuilder/venv --chmod-socket=666 --manage-script-name --mount /test=run:app --wsgi-file wsgi.py --logto test.log &
;;
stop)
pkill uwsgi
;;
restart)
$0 stop
$0 start
;;
*)
echo "usage: $0 (start|stop|restart|help)"
esac
그리고 내 uWsgi 시작 INI은 다음과 같습니다
[uwsgi]
socket = /tmp/uwsgi.sock
chdir = /var/www/wsgi/flask-appbuilder/peds_registry
wsgi-file = wsgi.py
pyhome = /var/www/wsgi/flask-appbuilder/venv
callable = app
manage-script-name = true
mount: /test=run.py
언급 한 바와 같이 , gid/uid 매개 변수 없이는 정상적으로로드되지만,
을 추가하면uid = nginx
gid = nginx
ini 파일에는 위에서 언급 한 오류가 발생합니다.
내 모든 검색 소켓 사용 권한을 얻을 수 있지만 내 문제가 가상 환경 내에서 모듈을로드하는 것 같습니다.
참고 : 필자의 가상 환경에 pip에서 설치된 uWsgi를 사용하고 있습니다.
nginx 사용자가 venv 내의 모든 파일과 하위 디렉토리에 대한 액세스 권한을 가지고 있는지 확인하십시오. – mata
이전에 부모로부터 다운 된 전체 디렉토리 구조에 대해 chown을 수행 했었습니다. –