嘿,我目前正在ubuntu 14服务器上部署我的rails应用程序,当我尝试重新启动nginx时,它失败了。
我的nginx.conf看起来像这样:
upstream puma {
server unix:///home/deploy/apps/savoir/shared/tmp/sockets/savoir-puma.sock;
}
server {
listen 80 default_server deferred;
# server_name example.com;
root /home/deploy/apps/savoir/current/public;
access_log /home/deploy/apps/savoir/current/log/nginx.access.log;
error_log /home/deploy/apps/savoir/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://puma;
}
error_page 500 502 503 504 /500.html;
client_max_body_size 10M;
keepalive_timeout 10;
}
如果我用这个命令测试配置:
sudo nginx -c /etc/nginx/nginx.conf -t
它告诉我我的语法没问题。
为什么会失败?
编辑:
error.log看起来像这样:
2016/02/15 14:17:59 [emerg] 57516#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
使用deploy而不是info我收到相同的错误消息:
2016/02/16 13:20:35 [emerg] 365#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
EDIT2:
我刚刚意识到我的conf放在/ etc / nginx / sites-enabled /下面并被称为" savoir" (这是我申请的名称)。也许这是一个错误?我遵循了guide。
EDIT3:
好的,我在nginx.conf中更改了端口,现在可以正常工作了:
server {
listen 81 default_server deferred;
}
但是仍然无法在网络浏览器中看到我的Rails应用程序。
EDIT4:
卸载apache2并将端口更改回80.现在无需更改端口即可正常工作。
EDIT5:
我非常接近在线申请,但还有最后一个问题。我在puma.access.log
:
Rack app error: #<RuntimeError: Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml`>
我认为capistrano在部署时添加了这个但不知道它没有:
// /config/secrets.yml
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
使用此命令检查密钥env | grep -E "SECRET_TOKEN|SECRET_KEY_BASE"
doensn不返回任何内容。
我尝试手动设置它,但这并没有真正起作用。有人能给我一个简短的解释如何设置它最好吗?