无法获得 运行 uWSGI Emperor 的权限
Cant get permissions right to run uWSGI Emperor
我正忙着尝试让 Ubuntu + uWSGI + nginx 运行 作为我的网络服务器。
以下是我的配置,以及我的 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 二进制文件……它应该在那里吗?因为我在 /etc/environment 中添加了 /home/ccadmin/.local/bin 到我的系统路径。它不应该在那里吗?还是应该一直到二进制文件? (即,将 /home/ccadmin/.local/bin/uwsgi insetad 添加到 /bin)
做了一些事情来完成这项工作:
sudo chown -R ccadmin:www-data /home/ccadmin/
sudo chmod -R 774 /home/ccadmin/
现在皇帝可以访问uwsgi二进制文件了,一切都很好!
我很好奇以上是否是安全问题,但我对 linux 了解不多。
我正忙着尝试让 Ubuntu + uWSGI + nginx 运行 作为我的网络服务器。
以下是我的配置,以及我的 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 二进制文件……它应该在那里吗?因为我在 /etc/environment 中添加了 /home/ccadmin/.local/bin 到我的系统路径。它不应该在那里吗?还是应该一直到二进制文件? (即,将 /home/ccadmin/.local/bin/uwsgi insetad 添加到 /bin)
做了一些事情来完成这项工作:
sudo chown -R ccadmin:www-data /home/ccadmin/
sudo chmod -R 774 /home/ccadmin/
现在皇帝可以访问uwsgi二进制文件了,一切都很好!
我很好奇以上是否是安全问题,但我对 linux 了解不多。