Linux

在任何發行版上完全自動化 Apache

  • December 23, 2018

我遇到的問題似乎對所有失真都是正確的,但讓我們假設我使用全預設debian-stable(伺服器),然後執行apt update -y.

在 Apache 中安裝、升級、重新啟動以及啟用或禁用模組都是與版本無關的操作,我發現這是一個問題:

  1. 安裝或升級 Apache 應該是apt upgrade apache1apt upgrade apache2. 它不能只是使用任何版本的“apt upgrade apache”,例如apt upgrade ziporapt upgrade unzip等​​等。
  2. 要重新啟動 Apache systemctl restart apache2,必須啟用或禁用 Apache 模組,必須說a2enmod http2 deflate expiresa2dismod http2 deflate expires.

我考慮過的解決這個問題的方法

我認為 Ansible 可能會通過使用 Ansible 的apt模組state=latest選項轉錄舊的安裝命令來提供幫助,但Ansible Apache 文件不包含這些命令的非版本無關語法,並且也只安裝 Apache2,所以即使 Apache3 出現,我也會仍然必須手動將其從 2.4 升級到 3.x,即使我基本上使用 Ansible(如zipunzip)不斷升級上述作業系統軟體的所有其餘部分。

**1.**將 Ansible 與正則表達式結合(如 Ansible 的 aptapache*systemctl restart apache*)仍然不夠或至少“脆弱”。

**2.**甚至將 Ansible 與taskselwith 和 regex 結合起來:

- name: Install latest Apache
 apt: lamp-server^ 
 state: latest

- do stuff and restart Apache
 command:
   args:
     argv:
       - aenmod http2 deflate expires # Non version-agnostic http version;
       - systemctl restart apache*

可能還不夠,因為當 Apache 3 或 4 或 5 出現時(例如,現有的虛擬主機文件),它仍然需要我進行手動更改。

我的問題

我知道這可能是一個極端的願望,但有沒有一種方法可以順利安裝並完全持續升級 Apache(包括 release_upgrades 和虛擬主機文件等)?

也許一個公共維護和良好支持的 Ansible-Galaxy 角色是正確的方法。也許我應該選擇另一個網路伺服器 - 我不知道。

每條評論更新

它來自 Michael Hampton 的評論,這完全是 Debian 特定的,其他發行版可能有與版本無關的方式來安裝 Apache - 老實說,我考慮 ArchLinux 是因為它完全滾動發布作業系統升級模型。一個答案可能是一些發行版,它們可能足以滿足我在 Apache 中尋求的方法。

你是對的

“得到良好支持的 Ansible-Galaxy 角色是正確的方法”。

我正在尋找對Apache 角色的貢獻。您可能想建議其他角色。

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