- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 Rails 应用程序在服务器上运行 Unicorn
和 Nginx
,但是在配置 Nginx 并启动它之后,我得到了错误:
2015/08/03 15:43:44 [crit] 13951#0: *1 stat() "/home/ec2-user/apps/mybest/current/public//index.html" failed (13: Permission denied), client: 123.185.144.80, server: 52.74.148.194, request: "GET / HTTP/1.1", host: "52.74.148.194"
2015/08/03 15:43:44 [crit] 13951#0: *1 stat() "/home/ec2-user/apps/mybest/current/public/.html" failed (13: Permission denied), client: 123.185.144.80, server: 52.74.148.194, request: "GET / HTTP/1.1", host: "52.74.148.194"
2015/08/03 15:43:44 [crit] 13951#0: *1 stat() "/home/ec2-user/apps/mybest/current/public/" failed (13: Permission denied), client: 123.185.144.80, server: 52.74.148.194, request: "GET / HTTP/1.1", host: "52.74.148.194"
这里是 nginx_myapp.conf
upstream unicorn {
server unix:/tmp/unicorn.myapp.sock fail_timeout=0;
}
server {
listen 80 default deferred;
server_name 52.74.148.194;
root /home/ec2-user/apps/mybest/current/public;
location ^~ /assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
}
try_files $uri/index.html $uri.html $uri @unicorn;
location @unicorn {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://unicorn;
}
error_page 500 502 503 504 /500.html;
keepalive_timeout 10;
}
我用谷歌搜索了几个小时,但仍然无法解决这个问题。我在猜测是否有任何路径拼写错误,并且不确定为什么错误消息是“public//index.html
”,而不是“public/index.html
”有什么提示吗?谢谢!
Nginx 以用户 'nginx
' 运行,如下所示:
编辑:
$ groups nginx
nginx : nginx ec2-user
groups ec2-user
ec2-user : ec2-user wheel
路径权限:(当前)
current]$ ls -l
total 76
drwxrwxr-x 8 ec2-user ec2-user 4096 Aug 3 14:06 app
drwxrwxr-x 2 ec2-user ec2-user 4096 Aug 3 14:08 assets_manifest_backup
drwxrwxr-x 2 ec2-user ec2-user 4096 Aug 3 14:26 bin
-rw-rw-r-- 1 ec2-user ec2-user 830 Aug 3 14:06 Capfile
drwxrwxr-x 6 ec2-user ec2-user 4096 Aug 3 14:08 config
-rw-rw-r-- 1 ec2-user ec2-user 153 Aug 3 14:06 config.ru
drwxrwxr-x 2 ec2-user ec2-user 4096 Aug 3 14:08 db
-rw-rw-r-- 1 ec2-user ec2-user 1720 Aug 3 14:06 Gemfile
-rw-rw-r-- 1 ec2-user ec2-user 5262 Aug 3 14:06 Gemfile.lock
drwxrwxr-x 4 ec2-user ec2-user 4096 Aug 3 14:06 lib
drwxrwxr-x 2 ec2-user ec2-user 4096 Aug 3 14:35 log
drwxrwxr-x 2 ec2-user ec2-user 4096 Aug 3 14:08 public
-rw-rw-r-- 1 ec2-user ec2-user 249 Aug 3 14:06 Rakefile
-rw-rw-r-- 1 ec2-user ec2-user 478 Aug 3 14:06 README.rdoc
-rw-rw-r-- 1 ec2-user ec2-user 8 Aug 3 14:07 REVISION
drwxrwxr-x 8 ec2-user ec2-user 4096 Aug 3 14:06 test
drwxrwxr-x 4 ec2-user ec2-user 4096 Aug 3 14:35 tmp
drwxrwxr-x 3 ec2-user ec2-user 4096 Aug 3 14:06 vendor
public:(我改成777连)
ls -l
total 16
-rwxrwxrwx 1 ec2-user ec2-user 1564 Aug 3 14:06 404.html
-rwxrwxrwx 1 ec2-user ec2-user 1547 Aug 3 14:06 422.html
-rwxrwxrwx 1 ec2-user ec2-user 1477 Aug 3 14:06 500.html
lrwxrwxrwx 1 ec2-user ec2-user 47 Aug 3 14:08 assets -> /home/ec2-user/apps/mybest/shared/public/assets
-rwxrwxrwx 1 ec2-user ec2-user 0 Aug 3 14:06 favicon.ico
-rwxrwxrwx 1 ec2-user ec2-user 202 Aug 3 14:06 robots.txt
将 nginx.conf 中的 nginx 用户从 'nginx' 更改为 'ec2-user' 解决。
最佳答案
确保 nginx 在正确的用户下运行(主 nginx 配置文件中的 user ...
指令),然后确保 /home/ec2-user/apps/mybest/current/public/*
文件可供该用户访问(即它们与用户属于同一组,并且对它们具有读取权限)。
您还需要对路径下的每个目录具有 +x 权限。您可以在终端中使用 ls -l
查看权限,如果权限不足,则执行类似的操作:
chmod g+x apps
cd apps
chmod g+x mybest
cd mybest
chmod g+x current
cd current
chmod g+x public
cd public
chmod g+r *
更新。正如在评论中发现的那样,nginx 在 ec2-user
用户名(配置中的 user ec2-user
)下运行良好。 /home
和/或 /home/ec2-user
很可能存在限制性权限(目录组没有“+x”/“+r”)。就个人而言,我认为 nginx 在 ec2-user
用户名下运行没有任何问题。或者,您可以将 Rails 应用程序移动到 /var/www/my_app
,为 nginx
用户设置权限,并让它从那里运行。
关于Nginx 失败 (13 : Permission denied) when start rails with unicorn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31791611/
好的,所以我正在尝试使用 unicorn 设置生产服务。 当我尝试通过我编写的脚本启动 unicorn 服务器时,它会启动 2 个主实例。 这只发生在我用给定的“-E 生产”启动它时。 我开始 uni
我使用 'unicorn-worker-killer' gem 并从这里为 ruby GC 做了一些额外的修改 http://blog.newrelic.com/2013/05/28/unicor
我有点卡在工头设置中设置 unicorn worker 的数量 web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb 然后在运行时 fore
我已经在 unicorn 上部署了一个 rails 应用程序,并且正在使用 Capistrano 来管理部署。符号链接(symbolic link) tmp/sockets/unicorn.sock
我已按照 DigitalOcean 指南中的步骤进行操作 here和 here使用 nginx 和 Unicorn 设置 Sinatra 服务器。我在倒数第二步: start the Unicorn
我正在尝试通过 Nginx 和 Unicorn 运行我的 Rails 应用程序,当我尝试运行 service unicorn start 时它告诉我我失败了 master failed to star
有很多研究人员观察着世界上最后剩下的unicorns,即Easter Island。每天,研究人员记录他们发现的 unicorn ,发现日期,每个 unicorn 的婴儿数量以及发现时是否喝醉了。这些
unicorn 接受 listen允许设置 backlog 的配置以毫秒为单位,以防 worker 忙。减小此值允许路由器在忙碌时将请求发送给另一个工作人员。 彪马有类似的东西吗?我找不到这样的东西。
我正在尝试在 heroku 上部署我的 django 应用程序。按照官方文档的步骤操作后,我启动的dyno老是死机。然后我把整个过程都走一遍,我觉得问题可能出在gunicorn部分。按照说明,我将 P
我有这个文件 rails_env = ENV['RAILS_ENV'] || 'development' rails_root = ENV['RAILS_ROOT'] || "/home/luiz/r
在使用 Heroku 时,我发现他们使用环境变量进行服务器本地配置的方法非常棒。现在,在设置自己的应用程序服务器时,我发现自己想知道复制它有多难。 我正在部署一个 sinatra 应用程序,使用 Un
我正在使用 Capistrano 将 Ruby on Rails 应用程序部署到 Linode VPS。我使用 Unicorn 作为应用程序服务器,使用 Nginx 作为代理。我的问题是,由于明显的权
我正在调试我们应用程序中的一些 Posgtres 连接泄漏。几天前,我们突然超过了 100 个连接,这是不应该的 - 因为我们只有 8 个 unicorn worker 和一个 sidekiq 进程(
我正在运行堆栈 nginx+unicorn+rails 3.2 当我运行时 bundle exec unicorn_rails -c config/unicorn.rb -E development
我正在为 Django 项目(Ubuntu 14.04 机器)使用带有 nginx 反向代理的 gunicorn 19.7.1 appserver。 ps aux | grep gunicorn |
我不知道 unicorn 出了什么问题,它不想启动。任何帮助表示赞赏 ubuntu@ip-172-31-15-195:~/www/tf/current$ RAILS_ENV=production bu
我需要你的帮助! 我已经在 Ubuntu 12.04 中部署了我的 Rails 应用程序,使用 Nginx、MySQL、Solr 和 Unicorn。 每个提到的服务都已启动,而不是 unicorn,
我正在使用Rails 3.2 + unicorn + postgres DB,但我有一个问题-unicorn如何处理DB连接? 我的理解: unicorn 主进程 fork X子进程。 每个子进程设置
我有一个 RubyOnRails 项目,并在 Ubuntu 服务器上的 nginx 上使用 Unicorn 部署它。 如果我更改配置文件之一,我需要重新启动 Unicorn,但是当我杀死 Unicor
我正在使用 gunicorn 运行 flask 应用程序(rest api),我几乎每 30 秒就会看到一批 [CRITICAL] WORKER TIMEOUT (pid:14727) . 我的设置如
我是一名优秀的程序员,十分优秀!