我應該將 Rails 應用程式部署到哪個目錄?

我應該將 Rails 應用程式部署到哪個目錄?

在 Linux 系統上部署生產 Rails 應用程式的合理邏輯目錄是什麼?

一些候選人...

/var/rails  <= There's a /var/www so this would be consistent with that 
               pattern. But I.T. guys have complained about stuff in /var 
               before.

/home/my_home_dir/rails  <= OK, not /var, but I'm not the only developer. 
                            Seems like it really ought to be a systemwide
                            location.

/home/rails  <= I don't know. That just seems weird.

/rails  <= Seems even weirder.

在這裡做的最不令人驚訝、最正常的事情是什麼?

(背景資訊-Rails 應用程式是一堆用 Ruby 編寫的伺服器端程式碼,以及一個public包含 JavaScript、CSS 和可能還有一點 HTML 的目錄。該public目錄對應到 Apache 虛擬主機。Apache 透過一個模組處理 Ruby 程式碼稱為乘客或mod_rails


謝謝大家的幫忙。我想我會和 一起去/opt/deployed_rails_apps。 (我喜歡長的說明性目錄名稱和製表符補全。)/var/...也是一個好地方,但當我嘗試在那裡部署東西時,IT 部門對我發出了嚴厲的抱怨。如果是我自己的機器,我可能會選擇/var/srv

答案1

我認為/選擇將是一個地方應用像這樣。我同意遵循 chmeee 建議的 FHS,但我不同意 Rails 應用程式本身就是一項服務。

答案2

您可能想要遵循檔案系統層次結構標準 (FHS)並將其放入

/srv : Data for services provided by this system

編輯:

我不會把它放在/opt

/opt : Add-on application software packages

其目的是這樣說的:

/opt 保留用於安裝附加應用程式軟體包。

要安裝在 /opt 中的軟體包必須在單獨的 /opt/ 或 /opt/ 目錄樹中找到其靜態文件,其中 是描述軟體包的名稱,並且是提供者的 LANANA 註冊名稱。

我不認為開發的應用程式是“軟體包”。

其理由/srv

這樣做的主要目的是為了讓使用者可以找到特定服務的資料檔案的位置,從而可以合理地放置那些需要單棵樹來儲存只讀資料、可寫入資料和腳本(例如cgi腳本)的服務。

我知道 Rails 應用程式是一個 CGI 腳本,應該放置在/srv.

答案3

在 CentOS Linux 發行版(以及隨後的 RedHat)上,當您安裝 httpd 軟體包(針對 Apache 2)時,它會創建/var/www,並期望您的虛擬主機指向此處的 Web 內容。預設虛擬主機通常轉儲在 中/var/www/htdocs,後續站點/應用程式應放入 中/var/www/sitename

實際位置應該不重要,但通常會看到/opt/www/sitename, /var/www/sitename, 或簡單的/opt/www/var/www

/home您已經闡述了其他一些位置(例如)並不真正適合此操作的一些原因。

就我個人而言,我更喜歡它,/var/www/sitename因為它對 Apache 和 Rails 很友好,並且是系統範圍的。

答案4

在基於 debian/ubuntu 的系統中,此類應用程式通常安裝在 /usr/share 資料夾中(即 /usr/share/ruby),因為它們是非編譯檔案(將進入 /usr/lib)。由於您的應用程式不是標準應用程序,您可能會將其放在 /usr/local/share 中,以防止它被任何系統更新覆蓋。

/opt 在這裡當然也是一種可能性。

相關內容