我如何 运行 uWSGI 作为受限访问用户?
How do I run uWSGI as a limited-access user?
我在 NGINX + uWSGI 中安装了 Django。我可以 运行 在我当前登录的用户下正常使用(在 的帮助下我几天前问过)但现在我想 运行 uwsgi --ini uwsgi.ini
作为受限访问用户。
这是我到目前为止所做的:
1. 创建了一个没有登录权限且没有主目录的用户 djangouser
。
2. 将用户 nginx
添加到组 djangouser
3. 将我的 django 文件放入 /mnt/django
目录并将 django
的文件权限更改为 drwxrwx--- 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 页面。
我不确定还有什么地方可以添加权限以允许它工作。在 uwsgi.ini 中添加 sudo chown-socket=djangouser:djangouser
也没有用。
感谢您的帮助:)
如果你想运行 uWSGI作为特定用户,只有2个选项:
- 运行 uWSGI 服务器直接来自该用户
- 运行 uWSGI 作为 root 并添加 uid 和 gid 选项。
您可以创建一个用户并在您的 uwsgi ini 文件中设置 uid/gid 属性。
[uwsgi]
...
uid=myuser
gid=mygroup
我用 uwsgi 版本 2.0.12-debian 测试了它,它适用于使用 python3 virtualenv 的简单 cgi 应用程序。
我在 NGINX + uWSGI 中安装了 Django。我可以 运行 在我当前登录的用户下正常使用(在 uwsgi --ini uwsgi.ini
作为受限访问用户。
这是我到目前为止所做的:
1. 创建了一个没有登录权限且没有主目录的用户 djangouser
。
2. 将用户 nginx
添加到组 djangouser
3. 将我的 django 文件放入 /mnt/django
目录并将 django
的文件权限更改为 drwxrwx--- 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 页面。
我不确定还有什么地方可以添加权限以允许它工作。在 uwsgi.ini 中添加 sudo chown-socket=djangouser:djangouser
也没有用。
感谢您的帮助:)
如果你想运行 uWSGI作为特定用户,只有2个选项:
- 运行 uWSGI 服务器直接来自该用户
- 运行 uWSGI 作为 root 并添加 uid 和 gid 选项。
您可以创建一个用户并在您的 uwsgi ini 文件中设置 uid/gid 属性。
[uwsgi]
...
uid=myuser
gid=mygroup
我用 uwsgi 版本 2.0.12-debian 测试了它,它适用于使用 python3 virtualenv 的简单 cgi 应用程序。