2012-10-09 49 views
0

我是ruby的新手,我想了解更多關於它是如何工作的。所以我一直在測試虛擬機中的服務器配置,以便快速部署Rails。直線導軌部署

我在Ubuntu 10.04環境中運行RVM,Ruby,Rails,Git,Gitolite,PostgreSQL,Thin和Nginx。

現在我想把所有東西都捆綁在一起。不過,在部署過程中,我陷入了困境。

將項目提交給Git主幹後,我想掛鉤部署操作以將應用程序置於正確位置,設置爲生產,安裝捆綁包,進行遷移並重新啓動Nginx。

但我未能找到它的工作原理的簡單參考。我在谷歌找到的所有內容都是使用乘客,卡皮斯特拉諾和其他人的指南。我想觸發git commit action上的部署,類似於heroku,但是做100%服務器端的最佳工具是什麼?

製作一些shell腳本怎麼樣?如何手動部署項目?步驟是什麼?有沒有任何指導,不假定我知道Rails部署中的每個細節?

謝謝!

回答

0

嗯,我設法讓它幾乎完全運作。

我就可以追查到現在爲止,主要的操作是:

  • 用戶推到主幹,必須使用git鉤來觸發使用腳本的下一個步驟。

腳本必須做到以下幾點:

  • 克隆項目到/ var/WWW文件夾;
  • 將'瘦'寶石插入Gemfile;
  • 在應用程序文件夾中運行'bundle'命令;
  • 預編譯應用程序文件夾中的資產;
  • 遷移數據庫;
  • 停止nginx和薄;
  • 重新啓動瘦和nginx。

如果應用程序是新的,我們還必須:

  • 創建數據庫信息相匹配的新的用戶;
  • 創建生產數據庫;
  • 插入一個新的nginx配置文件;
  • 導出薄的構造從應用程序文件夾,如下:

thin config -C /etc/thin/app.yml -c /var/www/app --servers 1 -e production

的動作序列是多還是少這樣的:

$ bundle package 
$ bundle install --deployment 
$ RAILS_ENV=production rake db:migrate 
$ rake assets:precompile 
$ thin start -C /etc/thin/app.yml 

這是基本由現在。我想讓它工作100%,然後我想在互聯網上發佈指南。

更新

我說我會做的指南:

https://github.com/sentient06/RDH/wiki

0

你認爲你可能正在尋找的是一個git post-receive掛鉤(可以在這裏找到一個教程:http://toroid.org/ams/git-website-howto)。

通過這個鉤子你應該觸發例如。一個shell腳本執行所有你所需要的步驟 - 它們是:

  1. 結賬HEAD從git的回購承諾(git checkout -f,見鏈接教程)
  2. 運行bundle install
  3. 運行bundle exec rake db:migrate - 這個假設你已經創建了您的數據庫
  4. 重新啓動/啓動瘦服務器集羣(在這裏沒有確切的地方,如果它類似於乘客,我使用這個操作只是創建一些restart.txt文件) - 我認爲你有你的nginx作爲在它前面的反向代理,對吧?

這是長話短說。這有點複雜,例如。如果您使用資產管道(rails> = 3.1),您希望預先編譯資產等。但上述是一個很好的起點。

+0

也許這是一個相關的SO問題... http://stackoverflow.com/questions/3838727/git-post -receive-hook-for-website-stage – Inza

+1

不要忘記rake資源:預編譯... –