Apache vhost_alias - 如何為每個虛擬主機設定使用者?

Apache vhost_alias - 如何為每個虛擬主機設定使用者?

對於上下文:我使用帶有 Apache 2.4、PHP 7.2 和許多其他東西的 Debian 或 Ubuntu 伺服器,為開發人員和技術人員在工作中使用設定開發和測試環境。

我已經按照海量虛擬主機教學使用mod_vhost_alias這樣我就可以得到這樣的東西:

path: /var/www/{projectname}/public
url: {projectname}.dev.mycompany.net

相關配置如下(已充分編輯)

        VirtualDocumentRoot /var/www/%-4/public
        ServerName dev.mycompany.net
        ServerAlias *.dev.mycompany.net
        UseCanonicalName Off

現在,這一切都正常運作,開發人員可以透過請求使用者輕鬆啟動自己的專案;建立使用者並將其新增至www-data群組中,然後在 /var/www 中建立適當的資料夾,其結構如下:

projectname:projectname  rwxrwxr-x  /var/www/projectname
www-data:www-data     rwxrwsr-x  /var/www/projectname/public 

setfacl -m user:www-data:rwx /var/www/projectname
setfacl -R -m user:projectname:rwx /var/www/projectname/public 

(需要後者,因此由例如安裝的框架或解壓縮程式創建的檔案實際上可以由網路伺服器處理)

當然,這有一個缺點,即任何項目都可以將內容寫入任何其他項目,所以我想解決這個問題。但我想,在可能的情況下,保持自動化,因為開發人員和技術人員應該能夠以盡可能少的後端輸入來啟動專案(老闆說:「分散後端的注意力是為了以後」)。

現在,為了確保事情安全,但仍然試圖保持簡單,我想要的是設定 Apache(或 PHP?),以便使用足夠的使用者來執行與每個虛擬主機相對應的 Web 伺服器/PHP 進程。這意味著例如:項目/var/www/foo1在用戶下運行foo1,並且無權訪問/var/www/foo2.當然,我希望調整權限和 ACL 來適應這一點。

但我找不到任何有關如何設定單獨用戶的文檔留在身邊大規模虛擬主機的自動化。我認為這必須存在——畢竟託管公司會做這樣的事情。但我研究了很多東西,似乎沒有提供有效的替代方案。

最多,我被引導到 apache2-mod-itk,但是一旦安裝,網頁伺服器無論如何都將始終無法啟動,即使將大多數conf檔案預設為預設配置也是如此,所以它不是一個選項。

我正在尋找的是具有類似於此 Apache 配置“偽代碼”效果的東西:

<Virtualhost *:443> 
        VirtualDocumentRoot /var/www/%-4/public
        ServerName dev.mycompany.net
        ServerAlias *.dev.mycompany.net
        UseCanonicalName Off
        User %-4
        Group %-4
        SuexecUserGroup %-4
        CustomLog /var/www/%-4/logs/access.log vcommon

[...other directives]

</Virtualhost>

Apache/+PHP 中是否有類似的功能,或者我應該尋找其他類型的自動化解決方案?

請注意,我希望最終將整個事情分成例如:每個用戶的 docker 或虛擬機,除非有一種類似 Mass_vhosts 的簡單方法來自動化設定;這將需要更多的輸入(更不用說給予技術人員 root(?) 運行和安裝 docker 容器的權限),並且還會破壞正在進行的自動化(如何動態地將子域連接到容器?)。

相關內容