【发布时间】:2014-04-07 22:54:09
【问题描述】:
我在网上尝试了很多建议,但都没有奏效。我有 unicorn 和 nginx 在 CentOS 6.5 服务器上部署 ruby on rails 应用程序。它以前工作过,但现在当我尝试启动站点时出现错误的网关错误。我正在使用的两个主要文件是 unicorn.rb 配置文件和 nginx 的 default.conf 文件。这些文件的位置是:/home/myuser/myApp/config/unicorn.rb 和 /etc/nginx/conf.d/default.conf。以下是它们包含的内容:
独角兽.rb
Set the working application directory
# working_directory "/path/to/your/app"
working_directory "/home/myuser/myApp"
# Unicorn PID file location
# pid "/path/to/pids/unicorn.pid"
pid "/home/myuser/myApp/pids/unicorn.pid"
# Path to logs
# stderr_path "/path/to/log/unicorn.log"
# stdout_path "/path/to/log/unicorn.log"
stderr_path "/home/myuser/myApp/log/unicorn.log"
stdout_path "/home/myuser/myApp/log/unicorn.log"
# Unicorn socket
# listen "/tmp/unicorn.[app name].sock"
listen "/home/myuser/myApp/tmp/unicorn.myApp.sock"
# Number of processes
# worker_processes 4
worker_processes 2
# Time-out
timeout 30
default.conf
upstream app {
# Path to Unicorn SOCK file, as defined previously
server unix:/home/myuser/myApp/tmp/unicorn.myApp.sock fail_timeout=0;
}
server {
listen 80;
server_name localhost;
# Application root, as defined previously
root /root/myApp/public;
try_files $uri/index.html $uri @app;
location @app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app;
}
error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
keepalive_timeout 10;
}
我正在尝试从 myuser 运行这些东西,所以我不想移动 unicorn 文件或 myApp。为了进行设置,我遵循了https://www.digitalocean.com/community/articles/how-to-deploy-rails-apps-using-unicorn-and-nginx-on-centos-6-5,但更改了某些步骤的目录。我知道本教程在我不更改目录时有效,但我真的需要它在我的用户主目录中运行。任何帮助表示赞赏。
看起来问题出在 nginx 上。查看 nginx error.log 时,我得到了这个:
2014/03/05 14:53:04 [crit] 5756#0: *1 stat() "/home/myuser/myApp/public/tasks/index.html" failed (13: Permission d$
2014/03/05 14:53:04 [crit] 5756#0: *1 stat() "/home/myuser/myApp/public/tasks" failed (13: Permission denied), cli$
2014/03/05 14:53:04 [crit] 5756#0: *1 connect() to unix:/home/myuser/myApp/tmp/unicorn.myApp.sock failed (13: Per$
2014/03/05 14:53:04 [crit] 5756#0: *1 stat() "/home/myuser/myApp/public/500.html/index.html" failed (13: Permissio$
2014/03/05 14:53:04 [crit] 5756#0: *1 stat() "/home/myuser/myApp/public/500.html" failed (13: Permission denied), $
2014/03/05 14:53:04 [crit] 5756#0: *1 connect() to unix:/home/myuser/myApp/tmp/unicorn.myApp.sock failed (13: Per$
2014/03/05 14:53:04 [crit] 5756#0: *1 stat() "/home/myuser/myApp/public/favicon.ico/index.html" failed (13: Permis$
2014/03/05 14:53:04 [crit] 5756#0: *1 stat() "/home/myuser/myApp/public/favicon.ico" failed (13: Permission denied$
2014/03/05 14:53:04 [crit] 5756#0: *1 connect() to unix:/home/myuser/myApp/tmp/unicorn.myApp.sock failed (13: Per$
2014/03/05 14:53:04 [crit] 5756#0: *1 stat() "/home/myuser/myApp/public/500.html/index.html" failed (13: Permissio$
2014/03/05 14:53:04 [crit] 5756#0: *1 stat() "/home/myuser/myApp/public/500.html" failed (13: Permission denied), $
2014/03/05 14:53:04 [crit] 5756#0: *1 connect() to unix:/home/myuser/myApp/tmp/unicorn.myApp.sock failed (13: Per$
我在网上找到的解决方案之一是禁用 SELinux。我试过了,但没有帮助。这些文件都是 777 的权限,所以这不应该发生。有什么想法吗?
【问题讨论】:
-
确保设置了正确的权限。正确的用户和正确的权限。 unicorn 需要运行并且应用程序用户可以读取。此外,您应该能够通过查看日志“/home/myuser/myApp/log/unicorn.log”获得更多信息,他们说什么?
-
@lsaffie 这带来了我应该提到的一些事情......独角兽工作正常。我能够毫无问题地启动守护进程。我将日志添加到帖子中。
-
所以应用程序抛出 500x 错误。应用程序日志文件说明了什么? /home/myuser/myApp/log/production.log
-
@lsaffie 我在开发中运行它,所以我发布了 development.log(production.log 为空)。看起来 /show 路线不起作用,这是问题吗?我现在会调查一下
-
是的,这就是问题所在,或者至少是第一个问题。尝试在 Welcome 控制器中执行 show 操作。 - 这实际上表明 unicorn/nginx 正在到达您的应用程序位置,问题出在实际应用程序上
标签: ruby-on-rails ruby ruby-on-rails-3 nginx