我使用橡膠寶石在ec2上部署我的應用程序。 我按照這裏的說明:http://ramenlab.wordpress.com/2011/06/24/deploying-your-rails-app-to-aws-ec2-using-rubber/。
該過程似乎成功完成,但是當我嘗試使用該應用程序時,我一直得到504網關超時。 爲什麼會發生這種情況,我該如何解決?使用橡膠在ec2上部署後保持504網關超時
回答
從馬修康威答(以下轉貼):https://groups.google.com/forum/?fromgroups#!searchin/rubber-ec2/504/rubber-ec2/AtEoOf-T9M0/zgda0Fo1qeIJ
注:即使使用這樣的代碼,你需要做的是這樣的:
>帽部署:更新
> FILTER = app01 ,app02 cap deploy:restart
> FILTER = app03,app04 cap deploy:restart
我認爲這是一個rails應用程序?軌道棧的加載速度非常慢,所以這種延遲加載時間可能就是你所看到的。乘客應該在零停機功能v3中做到這一點,但他們似乎不願意這樣做,只會在未來某個未定義的時間點將其作爲未定義付費版本的一部分提供。
我所做的是有多個應用程序服務器實例,並將它們串行重新啓動,以便我可以繼續爲其中一個服務,而其他服務器正在重新啓動。不適用於單個實例,但大多數生產設置無論如何都需要多個實例以實現冗餘/可靠性。目前這不是橡膠的一部分,但我已經爲我的應用程序部署了腳本安裝程序,並且會在某個時候合併它 - 我的配置看起來像下圖。
馬特
橡膠passenger.yml:
roles:
passenger:
rolling_restart_port: "#{passenger_listen_port}"
web_tools:
rolling_restart_port: "#{web_tools_port}"
部署-apache.rb:
on :load do
rubber.serial_task self, :serial_restart, :roles => [:app, :apache] do
rsudo "service apache2 restart"
end
rubber.serial_task self, :serial_reload, :roles => [:app, :apache] do
# remove file checked by haproxy to take server out of pool, wait some
# secs for haproxy to realize it
maybe_sleep = " && sleep 5" if RUBBER_ENV == 'production'
rsudo "rm -f #{previous_release}/public/httpchk.txt #{current_release}/public/httpchk.txt#{maybe_sleep}"
rsudo "if ! ps ax | grep -v grep | grep -c apache2 &> /dev/null; then service apache2 start; else service apache2 reload; fi"
# Wait for passenger to startup before adding host back into haproxy pool
logger.info "Waiting for passenger to startup"
opts = get_host_options('rolling_restart_port') {|port| port.to_s}
rsudo "while ! curl -s -f http://localhost:$CAPISTRANO:VAR$/ &> /dev/null; do echo .; done", opts
# Touch the file so that haproxy adds this server back into the pool.
rsudo "touch #{current_path}/public/httpchk.txt#{maybe_sleep}"
end
end
after "deploy:restart", "rubber:apache:reload"
desc "Starts the apache web server"
task :start, :roles => :apache do
rsudo "service apache2 start"
opts = get_host_options('rolling_restart_port') {|port| port.to_s}
rsudo "while ! curl -s -f http://localhost:$CAPISTRANO:VAR$/ &> /dev/null; do echo .; done", opts
rsudo "touch #{current_path}/public/httpchk.txt"
end
有趣!因此,對於「鐵軌堆疊加載速度非常緩慢」,我們通常會談論幾分鐘,幾小時......? – 2014-05-14 02:04:53
我得到了同樣的錯誤,並解決了這個問題。 這是「haproxy」超時。它是由Rubber安裝的負載均衡器。 設置爲30000ms,您應該在橡膠配置文件中更改它。
祝你好運!
- 1. 在使用橡膠部署的EC2上查找Postgresql憑證
- 2. 不能部署到AWS EC2與橡膠
- 3. MySQL不會在EC2上與橡膠部署連接
- 4. 在現有EC2實例上部署Rails橡膠
- 5. 將Rails應用程序部署到AWS/EC2使用橡膠
- 6. 使用橡膠進行部署以運行EC2實例?
- 7. 504網關超時 - 上游超時
- 8. 如何在使用橡膠部署到EC2時設置默認主機?
- 9. Cloudbees 504網關超時部署Play Framework應用程序
- 10. 504網關超時部分問題
- 11. 的Rails:elasticsearch錯誤部署到EC2與橡膠
- 12. 橡膠capistrano從bitbucket部署到ec2獲取權限被拒絕
- 13. 使用橡膠部署Rails應用程序到EC2:503服務不可用
- 14. 504網關超時始終
- 15. Opencart:504網關超時
- 16. curl_setopt 504網關超時
- 17. Winginx 504網關超時
- 18. 504設計網關超時
- 19. nginx的504網關超時
- 20. NGINX:504網關超時
- 21. Android 504網關超時
- 22. PHP腳本保持超時(nginx 504網關錯誤)
- 23. Rails的橡膠故障AWS部署
- 24. 部署橡膠:未找到'libapache2-mod-passenger'
- 25. 如何在EC2上使用橡膠寶石設置queue_classic後臺作業
- 26. 無法連接到服務器EC2中部署了rails應用程序後使用橡膠
- 27. 使用橡膠寶石在不同類型的實例上部署
- 28. 使用橡皮部署時啓用hstore
- 29. Rails的橡膠EC2亞馬遜AWS Railscast
- 30. 使用AWS C++ SDK時,調用UpdateThing返回504網關超時
你是如何使用應用程序?正確的TCP/IP端口是否打開?檢查AWS Web控制檯或命令行:) – Daan 2012-02-22 21:44:19
我運行了cap deploy:check並且它沒問題,所以我認爲一切都是爲了有更好的方法來檢查? – 2012-02-23 06:37:00
老實說,我從來沒有在rails上使用ruby,但是您是否查看了AWS Web控制檯中的安全設置並確認了正確的端口已打開?聽起來像是一個防火牆問題,我 – Daan 2012-02-23 18:27:01