【发布时间】:2016-08-06 19:11:25
【问题描述】:
第一次尝试使用 rails 部署应用程序 - 我正在尝试运行 rails 应用程序,该应用程序当前给我一个 403。我正在使用 ubuntu 和 nginx。我有两个服务器块设置,我首先使用运行良好的节点应用程序进行了测试,现在一个域作为节点应用程序运行良好,但我正在尝试将另一个域设置为提供 403 的 rails 应用程序。
我结合使用了这两个教程:
- https://www.digitalocean.com/community/tutorials/deploying-a-rails-app-on-ubuntu-14-04-with-capistrano-nginx-and-puma
- https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-14-04-lts
我尝试在我的/home/deploy 目录和/var/www/ 中设置755 权限,但没有成功。
其他猜测-
- 与
index index.html index.htm有什么关系? - 与我的 nginx.conf 中的
default_server deferred;有关(尽管我尝试删除但没有影响)
这是我的相关文件,可能有问题,如果其他人有帮助,请告诉我-
rails 应用,有问题的一个:/etc/nginx/sites-enabled/centers
server {
listen 80;
listen [::]:80;
root /home/deploy/apps/mll/current/public;
index index.html index.htm;
server_name myrailssite.com;
location / {
try_files $uri $uri/ =404;
}
}
node 应用程序,在 /etc/nginx/sites-enabled/nodeapp 上按预期工作
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/nodeapp/html;
index index.html index.htm;
server_name 162.243.199.170;
location / {
try_files $uri $uri/ =404;
}
}
nginx.conf
upstream puma {
server unix:///home/deploy/apps/mll/shared/tmp/sockets/mll-puma.sock;
}
server {
listen 80 default_server deferred;
server_name myrailssite.com;
root /home/deploy/apps/mll/current/public;
access_log /home/deploy/apps/mll/current/log/nginx.access.log;
error_log /home/deploy/apps/mll/current/log/nginx.error.log info;
location ^~ /assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
}
try_files $uri/index.html $uri @puma;
location @puma {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://mll-puma;
}
error_page 500 502 503 504 /500.html;
client_max_body_size 10M;
keepalive_timeout 10;
}
权限:
deploy@banana:/usr/bin$ namei -l /var/www/centers/
f: /var/www/centers/
drwxr-xr-x root root /
drwxr-xr-x root root var
drwxr-xr-x root root www
drwxrwxr-x root root centers
deploy@banana:/usr/bin$ namei -l /home/deploy/apps/mll/current/public/
f: /home/deploy/apps/mll/current/public/
drwxr-xr-x root root /
drwxr-xr-x root root home
drwxr-xr-x deploy deploy deploy
drwxr-xr-x deploy deploy apps
drwxr-xr-x deploy deploy mll
lrwxrwxrwx deploy deploy current -> /home/deploy/apps/mll/releases/20160415005003
drwxr-xr-x root root /
drwxr-xr-x root root home
drwxr-xr-x deploy deploy deploy
drwxr-xr-x deploy deploy apps
drwxr-xr-x deploy deploy mll
drwxr-xr-x deploy deploy releases
drwxrwxr-x deploy deploy 20160415005003
drwxrwxr-x deploy deploy public
【问题讨论】:
-
您有两个具有相同
server_name的服务器块。您还有两个标记为default_server的服务器块。所以我不清楚哪个服务器块应该为请求提供服务。也许您应该查看您的server names -
您在哪里看到相同的 server_name?节点应用程序是
162.243.199.170(在启用站点的文件中标记的默认值),rails 应用程序是myrailssite.com。当我仔细观察时,虽然现在我发现我的 nginx.conf 中只有我的myrailssite.com,但我不确定如何继续/应该如何填写该文件。 -
nginx.conf是主文件 - 从那里开始。启用站点的文件包含在nginx.conf中(假设您的nginx.conf文件中有类似include sites-enabled/*的内容)。 -
感谢您注意到这个问题,就是这样!我没有意识到这些部分是如何组合在一起的。我刚刚从
nginx.conf中删除了这些额外的服务器设置,并将它们放入我的sites-enabled,现在它可以工作了。我应该先找到并阅读这个 -> digitalocean.com/community/tutorials/… 这很有帮助
标签: ruby-on-rails ubuntu nginx puma