2012-11-29 73 views
0

我已經將我的Rails應用程序從svn存儲庫上傳到我的服務器。在我的本地主機它工作正常,但是當我試圖訪問通過瀏覽器,我得到了以下錯誤:Rails將Rails應用程序上傳到Passenger服務器

There appears to be a database problem. 
Your config/database.yml may not be written correctly. Please check it and fix any errors. 
Your database schema may be out of date or nonexistant. Please run rake db:migrate to ensure that the database schema is up-to-date. 
The database server may not be running. Please check whether it's running, and start it if it isn't. 

我不知道該怎麼做,因爲這是我第一次嘗試上載軌項目,我在遠程服務器的本地主機上執行同樣的操作。

順便說一句,我是否應該通過ssh連接運行rails s?

+0

結帳Capistrano and Deprec。 – rwilliams

+0

我不明白你的意思。 我忘了這個錯誤: '數據庫配置沒有指定適配器(ActiveRecord :: AdapterNotSpecified)' – user1573607

+0

順便說一句 - 與[tag:webstart]的連接是什麼? –

回答

1

更新:首先要做的是獲得部署的教育:start here on the Rails site

所以,事情是,在你的服務器上你需要建立一個數據庫,就像你在本地機器上做的那樣。從SVN中檢出代碼只會讓你獲得應用程序,而不是數據庫。

您在標題中提到您已在服務器上設置Passenger。 Passenger是Apache(或Nginx)的一個模塊,它取代了您在開發中使用的rails s命令。在這個乘客配置文件中,您需要設置RailsEnv <something>來確定應用程序啓動和運行的方式和方式。

如果數據庫服務器是相同的(例如兩個平臺上的MySQL)並且環境相同(例如「開發」),並且app/db/database.yml文件被選中到源代碼管理中,則跳過。

如果您的數據庫和環境不同(例如開發中的SQLLite和生產中的MySQL),那麼您需要爲數據庫中的環境添加必要的配置 - 數據庫名稱,主機,端口,用戶名和密碼。 yml(並根據環境在Gemfile中指定適當的數據庫寶石)。如果您要存儲密碼,我不推薦檢查database.yml文件,但這是一個單獨的主題。最後,您需要在服務器上的database.yml中擁有正確的數據庫配置。

然後,您可以從應用程序的根目錄在服務器上運行bundle exec rake db:setup。這將使用當前模式初始化數據庫,並運行所需的所有seeds.rb設置。請與rake -T聯繫以查看您可能考慮的其他選項。

完成後,後續部署需要您從SVN中檢出最新的代碼,並且通常重新啓動應用程序(使用Passenger,這是通過應用程序的根目錄下的命令touch tmp/restart.txt完成的)如果您更改了數據庫結構,在重新啓動之前運行bundle exec rake db:migrate

哦,是的,在生產環境中,如果您使用的是默認環境,那麼您還需要在第一次運行bundle exec rake assets:precompile,並且以後每次如果添加了映像,改變了javascript/coffeescript或css/sass文件。

說了這話,@rwilliams評論Capistrano是d無限期地你想要考慮的事情。正如你所看到的那樣,部署是棘手的,隨着你的應用變得更大,你會希望它變得簡單。 Capistrano允許您設置一個腳本,使部署命令如cap deploycap staging deploy:migrations。學習很多,但值得努力。

相關問題