Nginx连接到独角兽时获得许可被拒绝 [英] Nginx getting Permission denied when connecting to Unicorn
问题描述
我在网上尝试了许多建议,但没有任何效果.我有独角兽和nginx致力于在CentOS 6.5服务器上的Rails应用程序上部署Ruby.它以前曾经工作过,但现在当我尝试启动站点时遇到了错误的网关错误.我正在使用的两个主要文件是unicorn.rb配置文件和nginx的default.conf文件.这些文件的位置是:/home/myuser/myApp/config/unicorn.rb和/etc/nginx/conf.d/default.conf.这是它们包含的内容:
I have tried many suggestions online but nothing has worked. I have unicorn and nginx working to deploy a ruby on rails app on a CentOS 6.5 server. It has worked before but now I'm getting the bad gateway error when I try to pull up the site. The two main files I'm working with are the unicorn.rb config file and nginx's default.conf file. These files' locations are: /home/myuser/myApp/config/unicorn.rb and /etc/nginx/conf.d/default.conf. Here is what they contain:
unicorn.rb
unicorn.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
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 但更改了某些步骤的目录.我知道在不更改目录的情况下该教程有效,但是我真的需要它在我的用户目录中运行.感谢您的帮助.
I am trying to run this stuff from myuser so I dont want to move the unicorn file or myApp. To set this up I followed https://www.digitalocean.com/community/articles/how-to-deploy-rails-apps-using-unicorn-and-nginx-on-centos-6-5 but changed the directories for some of the steps. I know the tutorial works when I dont change the directories but I really need it to run in my user home. Any help is appreciated.
问题似乎出在nginx中.当查看nginx error.log时,我得到了这个:
It looks like the problem is in nginx. When looking at the nginx error.log, I get this :
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,因此不应该发生这种情况.有什么想法吗?
One of the solutions I've found online is to disable SELinux. I tried and it did not help. These files are all 777 on permissions so this shouldn't be happening. Any ideas?
推荐答案
我发现了问题. unicorn.myapp.sock的路径必须转到根目录下的/tmp目录,而不是myuser目录中.另外,我的nginx default.conf文件中的根路径需要位于root/myApp/public而不是我的目录.我不知道最后一部分意味着什么,但是它起作用了,我很高兴.感谢所有帮助我到达这里的人.
I found the problem. The path for unicorn.myapp.sock had to go to the /tmp directory on root rather than in myuser directory. Also, the root path in my nginx default.conf file needed to be at root/myApp/public rather than what I had. I have no idea what that last part means but it works and I'm happy. Thanks to everyone that helped me get here.
这篇关于Nginx连接到独角兽时获得许可被拒绝的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!