【问题标题】:Cant get permissions right to run uWSGI Emperor无法获得运行 uWSGI Emperor 的权限
【发布时间】:2015-05-31 02:36:17
【问题描述】:

我正在尝试让 Ubuntu + uWSGI + nginx 作为我的 Web 服务器运行。

以下是我的配置,以及我的 Emperor.log 文件中的信息:

nginx 配置:

server {
    listen        80;
    server_name   localhost;
    charset       utf-8;
    client_max_body_size 5M;

    location / { try_files $uri @cc; }
    location @cc {
        include uwsgi_params;
        uwsgi_pass unix:/tmp/cc/cc_uwsgi.sock;
    }
}

uwsgi 配置:

[uwsgi]
base = /srv/www/cc

app = hello
module = %(app)

socket = /tmp/cc/%n.sock

chmod-socket = 664
uid = www-data
gid = www-data

callable = app

logto = /var/log/uwsgi/%n.log

皇帝配置:

#/etc/init/uwsgi.conf

description "uWSGI"
start on runlevel [2345]
stop on runlevel [06]
respawn

env UWSGI=/home/ccadmin/.local/bin/uwsgi
env LOGTO=/var/log/uwsgi/emperor.log

exec $UWSGI --master --emperor /etc/uwsgi/vassals --die-on-term --uid www-data --gid www-data --logto $LOGTO

但是,使用此配置,我的 Emperor.log 文件显示:

execvp(): Permission denied [core/emperor.c line 1481]
[emperor] binary path: /home/ccadmin/.local/bin/uwsgi
[emperor] is the uwsgi binary in your system PATH ?
TIME STAMP - [emperor] curse the uwsgi instance cc_uwsgi.ini (pid: ####)
TIME STAMP - [emperor] removed uwsgi instance cc_uwsgi.ini

如果我将 --uid 和 --gid 更改为 root,那么一切正常。这一定是一些简单的权限问题,但是对于 linux 新手,我发现它很难确定。

同样奇怪的是它询问我系统路径中的 uwsgi 二进制文件...它应该在那里吗?因为我已将 /home/ccadmin/.local/bin 添加到 /etc/environment 中的系统路径。它不应该在那里吗?还是应该一直到二进制? (即,将/home/ccadmin/.local/bin/uwsgi insetad 添加到/bin)

【问题讨论】:

    标签: python ubuntu nginx uwsgi


    【解决方案1】:

    做了几件事来完成这项工作:

    sudo chown -R ccadmin:www-data /home/ccadmin/
    sudo chmod -R 774 /home/ccadmin/
    

    现在皇帝可以访问 uwsgi 二进制文件,一切都很好!

    不过,我很好奇上述是否是安全问题,我对 linux 了解不多。

    【讨论】:

    • 这应该是 775!
    猜你喜欢
    • 1970-01-01
    • 2015-11-12
    • 1970-01-01
    • 2021-01-10
    • 2015-05-28
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多