我试图在VPS服务器上运行我的rails应用程序。但是在将监听器添加到Unicorn套接字时会出现致命错误。
我使用的是Nginx + ngx_pagespeed,工头,Unicorn,Capistrano。
在nginx.error.log
2014/10/06 22:18:23 [crit] 268#0: *5 connect()
to unix:/var/www/apps/APP_NAME/socket/.unicorn.sock failed
(2: No such file or directory) while connecting to upstream,
client: XXX.XXX.XXX.XXX,
server: _,
request: "GET / HTTP/1.1",
upstream: "http://unix:/var/www/apps/APP_NAME/socket/.unicorn.sock:/",
host: "DOMAIN_NAME"
并在unicorn.stderr.log
F, [2014-10-07T20:39:49.320008 #24012]
FATAL -- : error adding listener addr=/var/sockets/unicorn.APP_NAME.sock
我的unicorn.rb
worker_processes 2
working_directory '/var/www/apps/APP_NAME/current' # available in 0.94.0+
listen '/var/www/apps/APP_NAME/socket/.unicorn.sock', :backlog => 64
listen 8080, :tcp_nopush => true
timeout 30
pid '/var/www/apps/APP_NAME/run/unicorn.pid'
stderr_path '/var/www/apps/APP_NAME/log/unicorn.stderr.log'
stdout_path '/var/www/apps/APP_NAME/log/unicorn.stdout.log'
preload_app true
GC.respond_to?(:copy_on_write_friendly=) and GC.copy_on_write_friendly = true
check_client_connection false
before_fork do |server, worker|
defined?(ActiveRecord::Base) and
ActiveRecord::Base.connection.disconnect!
old_pid = "#{server.config[:pid]}.oldbin"
if old_pid != server.pid
begin
sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
Process.kill(sig, File.read(old_pid).to_i)
rescue Errno::ENOENT, Errno::ESRCH
end
end
end
after_fork do |server, worker|
defined?(ActiveRecord::Base) and
ActiveRecord::Base.establish_connection
end
nginx.conf
user nginx web;
pid /var/run/nginx.pid;
error_log /var/www/log/nginx.error.log;
events {
worker_connections 1024;
accept_mutex off;
use epoll;
}
http {
include mime.types;
types_hash_max_size 2048;
server_names_hash_bucket_size 64;
default_type application/octet-stream;
access_log /var/www/log/nginx.access.log combined;
sendfile on;
tcp_nopush on;
tcp_nodelay off;
gzip on;
gzip_http_version 1.0;
gzip_proxied any;
gzip_min_length 0;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
gzip_proxied expired no-cache no-store private auth;
gzip_comp_level 9;
gzip_types text/plain text/xml text/css
text/comma-separated-values
text/javascript application/x-javascript
application/atom+xml;
upstream app_server {
server unix:/var/www/apps/APP_NAME/socket/.unicorn.sock fail_timeout=0;
}
server {
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {
add_header "" "";
}
location ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon$" { }
location /ngx_pagespeed_statistics {
allow 127.0.0.1; allow 5.228.169.73; deny all;
}
location /ngx_pagespeed_global_statistics {
allow 127.0.0.1; allow 5.228.169.73; deny all;
}
pagespeed MessageBufferSize 100000;
location /ngx_pagespeed_message {
allow 127.0.0.1; allow 5.228.169.73; deny all;
}
location /pagespeed_console {
allow 127.0.0.1; allow 5.228.169.73; deny all;
}
charset utf-8;
listen 80 default deferred; # for Linux
client_max_body_size 4G;
server_name _;
keepalive_timeout 5;
root /var/www/apps/APP_NAME/current/public;
try_files $uri/index.html $uri.html $uri @app;
location ~ ^/(assets)/ {
root /var/www/apps/APP_NAME/current/public;
expires max;
add_header Cache-Control public;
}
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_server;
}
error_page 500 502 503 504 /500.html;
location = /500.html {
root /var/www/apps/APP_NAME/current/public;
}
}
}
对不起,如果我的问题中有很多无用的信息。这是我在VPS上的第一次部署,所以我还不擅长。当然,我已将APP_NAME
更改为我当前的应用程序名称。
感谢您的帮助!