首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pid/gid运行uWsgi时出现问题

使用pid/gid运行uWsgi时出现问题
EN

Stack Overflow用户
提问于 2016-07-26 04:37:09
回答 1查看 926关注 0票数 0

我正在尝试使用wsgi文件中的uid/gid参数运行uWsgi,以便在启动后删除特权访问。

注意:当我从ini文件中删除这两个参数时,一切工作正常。而且,我的套接字也没有问题。但是,当我使用指定uidgid (nginx用户和组)运行时,我得到一个错误,表明我的虚拟环境加载有问题,

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都存在,并且都拥有python项目目录结构的所有权。

我的Nginx配置的server/location指令如下:

代码语言:javascript
复制
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启动是:

代码语言:javascript
复制
#!/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是:

代码语言:javascript
复制
[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参数的情况下加载很好,但是当我添加

代码语言:javascript
复制
uid = nginx
gid = nginx

在ini文件中,我得到了上面提到的错误。

我的所有搜索都会得到套接字的权限,但我的问题似乎是从虚拟环境中加载模块。

顺便说一下:我正在使用从pip安装到我的虚拟环境中的uWsgi。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-27 02:42:06

这是完全不明显的。作为测试,我尝试使用我自己的uid/gid来运行这个应用程序,瞧,它起作用了!

因此,考虑到“我必须拥有应用程序uid/gid没有权限运行的东西的所有权”,我在用户名上添加了venv,瞧,答案出现了:应用程序的其中一个要求是我需要运行Python Deployment 2.7.6,我按照这个要点安装了Python2.7.6。因此,将DEPLOY目录结构(在venv目录结构之外)的所有权更改为应用程序的用户/组是可行的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38577013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档