我有一段时间试图让Ubuntu + uWSGI + nginx作为我的networking服务器运行。
以下是我的configuration,以及我的emperor.log文件中的信息:
nginxconfiguration:
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; } }
uwsgiconfiguration:
[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
皇帝configuration:
#/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
但是,使用这个configuration我的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来说是新手,我发现很难指出。
也奇怪,它是问我关于我的系统path中的uwsgi二进制文件…应该是在那里? 因为我已将/home/ccadmin/.local/bin添加到/ etc / environment中的系统path中。 它不应该在那里吗? 还是应该一路走到二进制文件? (即将/home/ccadmin/.local/bin/uwsgi insetad添加到/ bin中)
有几件事情做这个工作:
sudo chown -R ccadmin:www-data /home/ccadmin/ sudo chmod -R 774 /home/ccadmin/
现在皇帝已经可以访问uwsgi二进制文件了,一切都很好!
我很好奇,如果上述是一个安全问题,但不知道很多关于Linux。