部署 nginx 部署 ROR 程序出错

匿名 · 2013年03月03日 · 最后由 bwlinux 回复于 2013年03月03日 · 3843 次阅读

尝试利用 rails 自家的 thin server 配合 nginx 来部署网站,启动 nginx 后,出现 502 bad gateway 错误,以下是 error.log 中相关信息:

2013/03/03 02:22:24 [crit] 23032#0: *1 connect() to unix:///var/www/discourse/tmp/sockets/thin.3.sock failed (2: No such file or directory) while connecting to upstream, client: 125.88.73.76, server: meta.discourse.org, request: "GET / HTTP/1.1", upstream: "http://unix:///var/www/discourse/tmp/sockets/thin.3.sock:/", host: "www.arise.biz" 2013/03/03 02:22:24 [crit] 23032#0: *1 connect() to unix:///var/www/discourse/tmp/sockets/thin.2.sock failed (2: No such file or directory) while connecting to upstream, client: 125.88.73.76, server: meta.discourse.org, request: "GET / HTTP/1.1", upstream: "http://unix:///var/www/discourse/tmp/sockets/thin.2.sock:/", host: "www.arise.biz" 2013/03/03 02:22:24 [crit] 23032#0: *1 connect() to unix:///var/www/discourse/tmp/sockets/thin.1.sock failed (2: No such file or directory) while connecting to upstream, client: 125.88.73.76, server: meta.discourse.org, request: "GET / HTTP/1.1", upstream: "http://unix:///var/www/discourse/tmp/sockets/thin.1.sock:/", host: "www.arise.biz" 2013/03/03 02:22:24 [crit] 23032#0: *1 connect() to unix:///var/www/discourse/tmp/sockets/thin.0.sock failed (2: No such file or directory) while connecting to upstream, client: 125.88.73.76, server: meta.discourse.org, request: "GET / HTTP/1.1", upstream: "http://unix:///var/www/discourse/tmp/sockets/thin.0.sock:/", host: "www.arise.biz" 2013/03/03 02:22:28 [error] 23032#0: *1 no live upstreams while connecting to upstream, client: 125.88.73.76, server: meta.discourse.org, request: "GET / HTTP/1.1", upstream: "http://discourse/", host: "www.arise.biz"

这是 nginx 的配置文件内容,存放在 应用程序目录/config/nginx/sites-enabled 下, upstream discourse { server unix:///var/www/discourse/tmp/sockets/thin.0.sock; server unix:///var/www/discourse/tmp/sockets/thin.1.sock; server unix:///var/www/discourse/tmp/sockets/thin.2.sock; server unix:///var/www/discourse/tmp/sockets/thin.3.sock; }

server {

listen 80; gzip on; gzip_min_length 1000; gzip_types application/json text/css application/x-javascript;

server_name meta.discourse.org;

sendfile on;

keepalive_timeout 65;

location / { root /var/www/discourse/public; location ~ ^/t\/[0-9]+\/[0-9]+\/avatar { expires 1d; add_header Cache-Control public; add_header ETag ""; }

location ~ ^/assets/ { expires 1y; add_header Cache-Control public; add_header ETag ""; break; }

proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host;

# If the file exists as a static file serve it directly without # running all the other rewite tests on it if (-f $request_filename) { break; }

if (!-f $request_filename) { proxy_pass http://discourse; break; }

}

请问如何修复这些错误?谢谢!

据说是推荐 passenger,不妨试试看。

从 log 看,你 thin 没有启动,或者 thin 的 sock 没有设定在 nginx 想要的/var/www/discourse/tmp/sockets/。 thin 这个要自己配置好,自己启动的。检查 thin 先。 passenger,更加容易配置点。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号