我无法在新的DigitalOcean液滴上运行我的应用程序。 机器运行CentOS 6.5
我的/etc/nginx/nginx.conf
user nginx www-data; worker_processes 1; error_log /var/log/nginx/error.log; #error_log /var/log/nginx/error.log notice; #error_log /var/log/nginx/error.log info; pid /var/run/nginx.pid; (continues)
我的myapp_nginx.conf
server { server_name 104.xxx.x.xxx; listen 8080; charset utf-8; client_max_body_size 30M; location / { index index.html index.htm; root /home/webdev/mydevelopment/git/ers_portal; try_files $uri @app; } location /static { alias /home/webdev/mydevelopment/git/ers_portal/app/static; } location @app { include uwsgi_params; uwsgi_pass unix:/home/webdev/mydevelopment/git/ers_portal_uwsgi.sock; } }
我的myapp_uwsgi.ini
[uwsgi] master = true #user info uid = webdev gid = www-data #application's base folder base = /home/webdev/mydevelopment/git/ers_portal #chdir to this folder when starting #chdir = /home/webdev/mydevelopment/git/ers_portal #python module to import app = run_web module = %(app) home = /home/webdev/mydevelopment/venvs/ecodev_do pythonpath = %(base) #socket file's location socket = /home/webdev/mydevelopment/git/ers_portal/%n.sock #permissions for the socket file chmod-socket = 666 #the variable that holds a flask application inside the module imported at line #6 #uwsgi varible only, does not relate to your flask application callable = app #location of log files logto = /home/webdev/mydevelopment/git/ers_portal/logs/%n.log
错误消息打印在nginx error.log每当我发出一个web请求到104.xxx.x.xxx:8080
2014/11/19 23:14:47 [crit] 28090#0: *1 stat() "/home/webdev/mydevelopment/git/ers_portal/favicon.ico" failed (13: Permission denied), client: 71.211.xxx.xxx, server: 104.xxx.x.xxx, request: "GET /favicon.ico HTTP/1.1", host: "104.xxx.x.xxx:8080" 2014/11/19 23:14:47 [crit] 28090#0: *1 connect() to unix:/home/webdev/mydevelopment/git/ers_portal_uwsgi.sock failed (13: Permission denied) while connecting to upstream, client: 71.211.xxx.xxx, server: 104.xxx.x.xxx, request: "GET /favicon.ico HTTP/1.1", upstream: "uwsgi://unix:/home/webdev/mydevelopment/git/ers_portal_uwsgi.sock:", host: "104.xxx.x.xxx:8080"
项目文件夹: drwxr-xr-x 6 webdev www-data 4.0K Nov 19 23:40 ers_portal
在该文件夹内的套接字: srw-rw-rw- 1 webdev www-data 0 Nov 19 23:45 ers_portal_uwsgi.sock
如果你有任何额外的信息,你需要让我知道。 谢谢!!
编辑
我改变了@Eugenebuild议的权限。 现在在我的/var/log/nginx/access.log看到
[20/Nov/2014:01:37:58 -0500] "GET / HTTP/1.1" 502 574 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36" "-"
在/var/log/nginx/error.log我看到
2014/11/20 01:38:27 [crit] 28639#0: *1 connect() to unix:/home/webdev/mydevelopment/git/ers_portal_uwsgi.sock failed (2: No such file or directory) while connecting to upstream, client: 71.21.my.local.ip, server: , request: "GET / HTTP/1.1", upstream: "uwsgi://unix:/home/webdev/mydevelopment/git/ers_portal_uwsgi.sock:", host: "104.ser.ver.ip"
在var/log/nginx/access.log的favicon.ico拒绝(下面)不再显示
"GET /favicon.ico HTTP/1.1" 502 574 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36" "-"
解决了
经过几个小时的search,我发现我的拼写错误。 在/path/to/my/webapp/my_app_nginx.conf中读取的行
location @app { include uwsgi_params; uwsgi_pass unix:/home/webdev/mydevelopment/git/ers_portal_uwsgi.sock; }
应该读
location @app { include uwsgi_params; uwsgi_pass unix:/home/webdev/mydevelopment/git/ers_portal/ers_portal_uwsgi.sock; }
另外,在/etc/nginx/nginx.conf更改user nginx www-data; 回到user nginx;
还要确保在“顶级” /etc/nginx/nginx.conf中没有默认的服务器模块与你的应用的configuration冲突(在我的例子中是/path/to/my/webapp/my_app_nginx.conf ,它是/etc/nginx/conf.d/链接到/etc/nginx/conf.d/文件夹)。
得到教训…
ABABA是工作configuration,并且---B-是你正在寻找的变化,但是你忘了改变--B--回到--A-- ,你会重复并重复自己。 见#1 看起来你没有适当的权限在/home/webdev/mydevelopment/git/ers_portal – 虽然ers_portal似乎有正确的755,但是有些目录没有。 检查从/到ers_portal开始的所有目录对于www数据用户,或者它是组,还是对所有的都至less有5个。