Linux

編譯和維護應用程序?

  • October 20, 2010
  1. 您使用什麼配置格式進行編譯,為什麼?

範例(您不必作為範例回复,但請說明您的目錄設置):

<Layout MyPersonalizedLayout>
   prefix:          /usr
   exec_prefix:     ${prefix}
   bindir:          ${prefix}/bin
   sbindir:         ${prefix}/sbin
   libdir:          ${prefix}/lib/application_name
   libexecdir:      ${prefix}/lib/application_name/modules
   installbuilddir: ${prefix}/lib/application_name/build
   mandir:          ${prefix}/man
   sysconfdir:      /etc/application_name
   includedir:      ${prefix}/include/application_name
   localstatedir:   /var
   runtimedir:      ${localstatedir}/run/application_name
   logfiledir:      ${localstatedir}/log/application_name
</Layout>
  1. 在重新編譯或升級應用程序之前,您考慮了哪些步驟以及您做了什麼?
  2. 您如何跟踪上次用於編譯應用程序的所有配置選項?
  3. 您是否定期從配置文件中備份?多常 ?
  4. 您是否有一個特殊/不同的升級系統,以便您可以維護最後一個工作應用程序,直到新的應用程序準備好推出?
  5. 您通常會在將編譯放在生產伺服器上之前對其進行測試,在這樣做之前您有什麼考慮?

我不是一個使用 yum、apt-get 等安裝管理器的人,雖然我相信它們非常適合我喜歡在我需要管理的應用程序中擁有自己的控制和可能性的一些東西,所以我會想知道每個人是如何威脅這個的。

如果這個問題得到超過 3 個答案,我將把它變成一個社區 wiki,直到那時我要求你不要把它變成一個

我傾向於主要使用腳本和原始碼來標準化我的系統建構。其他人通常喜歡使用配置管理工具並為他們的發行版本地包管理器從原始碼創建自己的包。如果你正確地標準化你的建構,這些方法在很大程度上提供相同的結果,它們只是不同的做事方式。

我仍然使用系統包和本機系統建構實用程序。對於 RHEL,Kickstart 對初始建構來說是絕對必要的。對於常見的使用者級實用程序,我傾向於預設使用包。我只為主要伺服器角色從原始碼編譯。例如:數據庫、Web 伺服器、代理伺服器、負載平衡器等。

A1:我更喜歡盡可能遵循文件系統層次標準

A2:這是一個複雜的話題。如果升級需要升級的庫,其他軟體也可能需要這些庫。我傾向於按原始碼編譯建構角色的所有核心要求。我經常在建構之間共享庫並重新編譯針對它們編譯的任何軟體,因為我很少靜態編譯。如果您的更改經過測試並正確上演到生產環境,您可以將大部分風險降至最低。

A3:配置選項通常在建構中指定,當它們應用於所有伺服器時。在獨特配置的情況下,例如 Web 伺服器集群上的特定 VirtualHost,我將在Revision Control System中維護這些配置文件。在以程式方式建構伺服器後,系統檢查表將完成,以進行健全性檢查並配置最好手動處理的任何選項。您也可以使用配置管理系統來提供幫助,但根據您的建構標準化程度,它可能會被淘汰。

A4:是的。每晚備份所有唯一的配置文件。

A5:升級系統主要是內置在初始腳本中的邏輯,周圍有一個包裝腳本。這允許將升級作為建構的一部分進行維護。有時,使用for循環bash和管道的一組更簡單的腳本通過 ssh 進行更改。我們的想法是首先對所有更改進行適當的標準化。

A6:所有更改都在測試環境中進行測試和驗證,然後再投入生產。應驗證所有預期的功能是可操作的。

老實說,我可以根據你的問題寫一本關於這個主題的書。您本質上是在詢問如何正確地建構、標準化和維護生產環境。我的回答並不詳盡,並且有適用於所有方法的基本標準。您可能會受益於《系統和網路管理實踐》一書中建立的基礎。

我還寫了關於這個主題的其他答案。也可以看看:

跨多個伺服器管理應用程序,或 PXE 與 cfEngine/Chef/Puppet

使用原始碼建構自動化伺服器設置

引用自:https://serverfault.com/questions/192577