Hun*_*ger 23 linux nginx uwsgi
我尝试使用此文档配置uWsgi,Django,Nginx:http://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html
完成配置uwsgi.ini
文件,创建一个软链接/etc/uwsgi/vassals
.
最后一步失败:在系统引导时启动uWSGI.
运行此命令时:
sudo /usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals --uid www-data --gid www-data
我收到了这个错误:
clock source: unix
detected number of CPU cores: 1
current working directory: /etc/uwsgi/vassals
detected binary path: /usr/local/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
your processes number limit is 3813
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
bind(): Permission denied [core/socket.c line 227]
Tue May 27 05:29:26 2014 - [emperor] curse the uwsgi instance uwsgi.ini (pid: 1391)
Tue May 27 05:29:29 2014 - [emperor] removed uwsgi instance uwsgi.ini
Run Code Online (Sandbox Code Playgroud)
如果我没有运行此命令sudo
,一切正常.
我将用户"kk"添加到组"www-data"中,这里是 uwsgi.ini
[uwsgi]
chdir = /home/kk/XXXXXXX
module = wsgi
home = /home/kk/XXXXXXX
master = true
processes = 10
socket = /home/kk/XXXXXXX/mysite.sock
chmod-socket = 666
vacuum = true
Run Code Online (Sandbox Code Playgroud)
我想也许我在文件许可上犯了错误.有人有好主意吗?谢谢.
更新:
官方文档是正确的,我按照步骤在另一个新的VPS中部署项目,没有发生错误.
ova*_*gle 18
我遇到了这个问题.在不设置组和用户ID的情况下运行解决了问题.当我有更多时间来修复目录的文件权限时,我可能会重新审视这一点,但它现在可以正常工作
/usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals
编辑 我有时间重温这个答案,我不得不说在生产中运行uwsgi时这不是一个好习惯.
编写教程的问题在于它假定www-data
用户是用户,并且www-data
用户和组可以访问服务器上所需的所有文件; 特别是套接字文件.用你的用户和组替换适当的参数,你就会好起来(并且不会在你的服务器上留下一个巨大的安全漏洞).
所以,正确的命令(如果我是ovangle
组中的用户ovangle
将是):
/usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals --uid ovangle --gid ovangle
最好创建一个具有成功运行服务器所需的特定权限的用户,但这仍然是读者的练习.
Nor*_*ing 10
我不知道为什么权限不起作用,但我遇到了同样的问题.
解决这个问题的一个快速方法是将套接字移动到/ tmp!(无论如何,这是一个保持套接字的合理位置......)
所以只需用以下命令更新uwsgi配置:
socket = /tmp/mysite.sock
Run Code Online (Sandbox Code Playgroud)
和nginx-config:
upstream django {
server unix:///tmp/mysite.sock;
}
Run Code Online (Sandbox Code Playgroud)
它会开始工作!
tee*_*ane -1
如果您可以使用 Web 端口套接字(如演示的第一部分)而不是 unix 套接字..您可以更改此..
# uwsgi.ini
socket = :8001
Run Code Online (Sandbox Code Playgroud)
和这个..
# mysite_nginx.conf
upstream django {
# server unix:///home/teewuane/uwsgi-tutorial/mysite/mysite.sock; # for a file socket
server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}
Run Code Online (Sandbox Code Playgroud)
您将避免权限问题。
归档时间: |
|
查看次数: |
25372 次 |
最近记录: |