2016-07-17 29 views
2

我使用nginx,puma和capistrano部署我的Rails應用程序。它是由一個名爲deploy用戶部署和部署位置是主目錄(/home/deploy彪馬不在'rails服務器'啓動時在指定位置創建套接字

下我有彪馬配置創建shared文件夾下的插口,Capistrano的符號鏈接都是它的版本中。相應地,nginx的配置在該插座看作(見下文的配置文件)

然而,當我啓動了Rails /彪馬的Web服務器 -

cd /home/deploy/my_app/current 
SECRET_KEY_BASE=.... DATABASE_PASSWORD=... rails s -e production 

我注意到,沒有套接字文件被創建。當我在瀏覽器中訪問該站點,然後查看Nginx錯誤日誌時,它也抱怨該套接字不存在。

2016/07/17 14:26:19 [crit] 26055#26055: *12 connect() to unix:/home/deploy/my_app/shared/tmp/sockets/puma.sock failed (2: No such file or directory) while connecting to upstream, client: XX.YY.XX.YY, server: localhost, request: "GET http://testp4.pospr.waw.pl/testproxy.php HTTP/1.1", upstream: "http://unix:/home/deploy/my_app/shared/tmp/sockets/puma.sock:/500.html", host: "testp4.pospr.waw.pl" 

我該如何着手讓美洲獅創建該套接字?

謝謝!

彪馬配置

# config/puma.rb 

... 

# `shared_dir` is the symlinked `shared/` directory created 
# by Capistrano - `/home/deploy/my_app/shared` 

# Set up socket location 
bind "unix://#{shared_dir}/tmp/sockets/puma.sock" 

# Logging 
stdout_redirect "#{shared_dir}/log/puma.stdout.log", "#{shared_dir}/log/puma.stderr.log", true 

# Set master PID and state locations 
pidfile "#{shared_dir}/tmp/pids/puma.pid" 
state_path "#{shared_dir}/tmp/pids/puma.state" 
activate_control_app 

... 

Nginx的網站配置

# /etc/nginx/sites-available/default 

upstream app { 
    # Path to Puma SOCK file 
    server unix:/home/deploy/my_app/shared/tmp/sockets/puma.sock fail_timeout=0; 
} 

server { 
    listen 80; 
    server_name localhost; 

    root /home/deploy/my_app/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; 
} 

回答

6

你確定你是通過這種結構運行彪馬?我不認爲rails server是在生產環境中啓動Puma的正確方法。

我會改用此:

RACK_ENV=production bundle exec puma -C config/puma.rb 

一旦你得到這個工作手動,然後使用​​標誌,以保持在後臺運行的服務器。

另外,在您的config/puma.rb中定義的是shared_dir?也許你省略了文件的一部分,但如果沒有,請確保插入正確的值。

+0

你是對的。我需要直接用'puma'命令啓動它。出於某種原因,我認爲要求美洲豹寶石會使鋼軌默認使用美洲獅作爲主服務器,所以'軌道服務器'將調用美洲獅。我想 - 菜鳥錯誤 - 謝謝! – user2490003

相關問題