6

我在 NGINX + uWSGI 中有 Django 设置。我能够让它在我当前登录的用户下正常运行(在几天前我问的一个问题的帮助下),但现在我想以受限访问用户的身份运行uwsgi --ini uwsgi.ini

这是我到目前为止所做的:
1. 创建了一个djangouser没有登录权限且没有主目录的用户。
2. 将用户添加nginx到组djangouser
3. 将我的 django 文件放入/mnt/django目录并将文件权限更改djangodrwxrwx--- djangouser djangouser(递归)
4. 更改 conf 文件以匹配文件位置

uwsgi.ini 文件

[uwsgi]
chdir=/mnt/django/project/awssite
module=awssite.wsgi
home=/mnt/django/project
master=true
processes=2
uid=djangouser
gid=djangouser
socket=/mnt/django/djangosocket/awssite.socket
chmod-socket
vacuum=true

当我尝试运行时uwsgi --ini uwsgi.ini,这是我得到的错误

[uWSGI] getting INI configuration from uwsgi.ini
*** Starting uWSGI 2.0.12 (64bit) on [Thu Feb 18 00:18:25 2016] ***
compiled with version: 4.8.3 20140911 (Red Hat 4.8.3-9) on 01 February 2016 04:17:11
os: Linux-4.1.13-19.31.amzn1.x86_64 #1 SMP Wed Jan 20 00:25:47 UTC 2016
nodename: ip-10-200-1-89
machine: x86_64
clock source: unix
detected number of CPU cores: 1
current working directory: /home/ec2-user
detected binary path: /usr/local/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
chdir() to /mnt/django/project/awssite
chdir(): Permission denied [core/uwsgi.c line 2586]
chdir(): Permission denied [core/uwsgi.c line 1608]

注意:当我将登录用户添加到djangouser组时,uwsgi --ini uwsgi.ini运行良好并且我能够加载 django 页面。

我不确定在哪里添加权限以允许它工作。添加sudo chown-socket=djangouser:djangouseruwsgi.ini 也不起作用。

我很感激帮助:)

4

2 回答 2

4

如果你想以特定用户身份运行 uWSGI,只有 2 个选项:

  1. 直接从此用户运行 uWSGI 服务器
  2. 以 root 身份运行 uWSGI 并添加 uid 和 gid 选项。
于 2016-02-18T00:36:58.587 回答
3

您可以在 uwsgi ini 文件中创建用户并设置 uid/gid 属性。

[uwsgi] ... uid=myuser gid=mygroup

我使用 uwsgi 版本 2.0.12-debian 对此进行了测试,它适用于使用 python3 virtualenv 的简单 cgi 应用程序。

http://uwsgi-docs.readthedocs.io/en/latest/Options.html#uid

于 2018-01-22T23:59:18.580 回答