Hak*_*ara 9 ruby ruby-on-rails nginx puma
我需要部署我的rails应用程序,所以我从这里开始执行所有步骤,https://www.digitalocean.com/community/tutorials/how-to-deploy-a-rails-app-with-puma-and-nginx -酮的ubuntu-14-04
但是教程结束时,我收到此错误 - >"502 Bad Gateway"
编辑
现在的错误信息 - >"我们很抱歉,但出了点问题."
但是Nginx错误输出是一样的,我检查puma错误消息,但它们只是在启动时和正常停止时记录.
app_directory/log下的Rails日志不会产生任何输出.
puma-manager - >我检查了它是否正常
路径--->我已经检查了三次
Nginx error.log输出消息:
2016/05/18 14:22:21 [crit] 1099#0: *7 connect() to unix:/home/deploy /hotel-automata/shared/sockets/puma.sock failed (2: No such file or directory) while connecting to upstream, client: 192.168.2.105, server: localhost, request: "GET /favicon.ico HTTP/1.1", upstream: "http://unix:/home/deploy/hotel-automata/shared/sockets/puma.sock:/500.html", host: "192.168.2.170"
Run Code Online (Sandbox Code Playgroud)
操作系统 - > Vmware Player,桥接网络Ubuntu Server 14.0.4
Ruby版本:2.3.1
Rails版本:4.2.5.2
这是我的/ etc/nginx/sites-available/default的nginx配置内容
upstream app {
# Path to Puma SOCK file, as defined previously
server unix:/home/deploy/hotel-automata/shared/sockets/puma.sock fail_timeout=0;
}
server {
listen 80;
server_name localhost;
root /home/deploy/hotel-automata/public;
try_files $uri/index.html $uri @app;
location @app {
proxy_pass http://app;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}
error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
keepalive_timeout 10;
}
Run Code Online (Sandbox Code Playgroud)
编辑:
在config/puma.rb您需要有线指向您的插座:
bind "unix://<path or variable for the path where the socket will be>/sockets/puma.sock"
Run Code Online (Sandbox Code Playgroud)
变量示例:
application_path = '/home/deploy/hotel-automata/shared'
bind "unix://#{application_path}/sockets/puma.socket"
Run Code Online (Sandbox Code Playgroud)
您需要确保Nginx能够访问您的套接字(具有必需的权限,即RW)
检查整个路径上的权限,请尝试以下操作:
namei -m /home/deploy/hotel-automata/shared/sockets/puma.sock
或者尝试以下方法:
sudo -u <user> test <-r / -w > <path> && echo True
Run Code Online (Sandbox Code Playgroud)
即
sudo -u nginx test -w /home/deploy/hotel-automata/shared/sockets/puma.sock && echo True
Run Code Online (Sandbox Code Playgroud)
Nginx将要求RW访问该套接字。
如果未返回true,则表示用户未获得该权限,即-w->写
你的puma.rb文件应该是这样的。
# /config/puma.rb
app = "manabalss" # App-specific
root = "/home/deployer/apps/#{app}"
workers 5
threads 1, 1 # relying on many workers for thread-unsafe apps
rackup DefaultRackup
port 11592
environment ENV['RACK_ENV'] || 'production'
daemonize true
pidfile "#{root}/puma/puma.pid"
stdout_redirect "#{root}/puma/puma.log", "#{root}/puma/puma_error.log"
bind "unix:/tmp/puma.socket
Run Code Online (Sandbox Code Playgroud)
你的 nginx.conf 应该是这样的。
# config/deploy/nginx.conf
upstream puma {
server unix:/tmp/puma.socket fail_timeout=1;
}
# This block redirects http requests to https version
server {
listen 37.139.0.211:80 default deferred;
server_name www.manabalss.lv, manabalss.lv;
return 307 https://manabalss.lv$request_uri;
}
server {
listen 37.139.0.211:443 ssl;
server_name manabalss.lv;
ssl_certificate /etc/ssl/server.crt;
ssl_certificate_key /etc/ssl/server.key;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers RC4:HIGH:!aNULL:!MD5;
ssl_session_cache shared:SSL:15m;
ssl_session_timeout 15m;
root /home/deployer/apps/manabalss/current/public;
location ^~ /assets/ {
gzip_static on;
gzip_vary on;
expires max;
add_header Cache-Control public;
}
try_files $uri/index.html $uri @puma;
location @puma {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://puma;
}
error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
keepalive_timeout 10;
}
Run Code Online (Sandbox Code Playgroud)
如果这没有帮助,您想看看这个。
Rails + Puma + Nginx 每个坏网关 502
| 归档时间: |
|
| 查看次数: |
8088 次 |
| 最近记录: |