我正在爲服務器上的Rails 3.1.1應用程序尋找一個很好的部署教程。我的意思是完整的。我發佈這個問題的原因是,雖然網上有大量的教程(谷歌,博客,書籍,其他stackoverflow問題等),他們似乎都集中在部署過程的問題或者對部署環境做出一些與我需要的不匹配的假設。Rails 3.1應用程序部署教程
我意識到,在服務器上部署Rails應用需要各種不同的程序和工具,需要進行配置,並且總是被卡在顯然「小」的東西上,這讓我非常沮喪。
那麼,讓我們從一開始就着手。我現在擁有的服務器可以通過SSH和域名訪問,我們稱之爲www.example.com。服務器運行新的Ubuntu 10.04 x64,並且只安裝了一個用戶,即根(通過root用SSH訪問服務器)。 注意!沒有安裝Apache,Ruby,PHP,MySQL,cPanel或任何其他面板,只是最低限度的全新安裝。
此外,網絡服務器將託管一個應用程序,數據庫將運行在同一臺計算機上。
從我所知部署Rails應用程序的過程遵循以下場景:
- 安裝Ruby
我已經用RVM使用多用戶安裝過程中這樣做(只是因爲我只有root用戶,並且它自動執行)。這似乎工作良好後,但我有一些問題:
直接安裝Ruby而不是通過RVM更有意義(我想可能在效率方面 - 也RVM做了一點魔術背後以不明白的方式修改一些bash_profile文件的情況,這種方式似乎是侵入性的......)?
通過RVM作爲單獨用戶安裝會更有意義嗎(是否會出現安全問題)?
- 必要寶石
現在的Ruby安裝了什麼是最好的初始設置的寶石沿側安裝它?
我只安裝了bundler,這樣一旦我將我的應用程序上傳到服務器上,我就可以運行一個bundle install命令,它將依次安裝所需的應用程序gems。
問題 - 我應該事先安裝導軌寶石嗎?是否還有其他需要安裝的寶石?
- Web服務器
這是對我來說變得非常棘手。我正在嘗試使用apache和mod-passenger進行部署(它們似乎是最受歡迎的)。所以我安裝了Apache Web服務器和乘客寶石以及所有相關的依賴項(乘客提到的庫)。
現在,問題出現了。首先是用戶相關的。 Apache如何運行?我的意思是在每個用戶下?如果我使用root用戶安裝並重新啓動它,它是否會永久運行在root用戶下?這是壞事嗎?如果是,我應該創建另一個用戶嗎?如果是,如何?我應該在哪些組中放置新用戶,他應該擁有哪些權利(即他應該訪問哪些文件夾)。如何在這種情況下啓動Apache(下根,即用戶在某處添加一行在配置文件中,等)
- 網站配置
放在哪裏的網站配置東東?將它放入apache.conf中,還是應該在可用站點中創建一個新文件?或者我應該簡單地重複使用已存在的默認文件?如果在上一步創建了新用戶,那麼他對配置文件應該擁有哪些權限?
另外...哪裏最終放置導軌應用程序?在哪個文件夾中最好?在家裏的某個地方?也許在/ var/www下?我想知道這將如何影響服務應用程序的apache進程的權限? (通常我在提供應用程序時遇到問題,它會抱怨它沒有特定文件夾的權限。另外,使用新的資產管道 - 我不完全瞭解 - 資產文件正在創建,它們似乎沒有繼承父文件夾權限...)
- 數據庫
由於數據庫我使用MySQL和安裝它是非常簡單的。我在這裏的問題與用戶有關。我應該使用數據庫的特殊用戶嗎? MySQL如何實際管理用戶(它們是內部的,還是Linux用戶或?)。數據庫用戶應該和上面的「網絡用戶」一樣嗎?或者它應該是一個不同的?
- 資產
我在這裏得到真正丟失。我真的有麻煩讓資產管道工作。我已經檢查了railscasts插曲以及rails網站教程,而且我似乎理論上理解了這件事,但我在實踐中遇到了問題。
所以這裏的問題是 - 我應該運行哪些命令來預編譯資產? (試圖運行rake資源:預編譯)。可以嗎?我應該在production.rb文件中更改哪些內容?生成的資產如何與上面創建的web用戶或數據庫用戶相關聯?我個人在這個步驟中遇到了問題,即日誌文件說某些css文件不可訪問(例如,我在vendor/assets文件夾下安裝了jqplot庫,並且它的文件無法訪問 - 我應該在這裏添加一個清單文件?)。
如果有人能把我指向一篇不錯的文章或解釋所有這些東西的資源,那將會非常棒。我遇到的主要問題是Apache,Passenger,Ruby,Rails和MySQL如何與Linux用戶進行交互。如何正確設置Rails應用程序文件夾的權限?資產管道如何影響這個用戶權限的東西?
謝謝
我很同意這裏的一切。爲了編譯和安裝沒有RVM的系統Ruby,我們使用[ruby-build](https://github.com/sstephenson/ruby-build)(沒有rbenv)。如果你使用Capistrano,你可能會很高興,你真的需要安裝捆綁軟件gem,使用正確的命令行參數安裝剩下的軟件,Cap會爲你做。 –