將 httpd 分割成較小的文件

將 httpd 分割成較小的文件

您好,我需要從 httpd.conf 中提取每個 VirtualHosts 以單獨的檔案以便於管理。

原始httpd.conf。

..
<VirtualHost *:XXXX>
  SuexecUserGroup user1 groupX
  ...
</VirtualHost>
<VirtualHost *:XXXY>
  SuexecUserGroup user2 groupY
  ...
</VirtualHost>
<VirtualHost *:XXYY>
  SuexecUserGroup user3 groupZ
  ...
</VirtualHost>
...

我想要這樣的檔案: - XXXX_user1.conf 包含:

Listen XXXX
<VirtualHost *:XXXX>
  SuexecUserGroup user1 groupX
  ...
</VirtualHost>

- XXXX_user2.conf 包含:

Listen XXXY
<VirtualHost *:XXXY>
  SuexecUserGroup user2 groupY
  ...
</VirtualHost>

聽起來有點複雜,但我有大約 500 個手工要做;(

非常感謝您的回答

答案1

試試一下:

#!/usr/bin/gawk -f
BEGIN {
    RS = "</VirtualHost>\n"
}
{
    prefix = gensub("*:([^>]*)>", "\\1", "1", $2)
    filename = prefix "_" $4 ".conf"
    print "Listen " prefix "\n" $0 "\n" RS > filename
}

將其保存在名為「httpdsplit」的檔案中,然後執行以下操作:

$ chmod u+x httpdsplit
$ ./httpdsplit httpd.conf

答案2

儘管您沒有提及,但這看起來像 apache httpd.conf。雖然我推薦分割文件的現有答案,但還有另一種選擇。

如果apache 伺服器是用mod_perl和建構的如果你知道(或願意學習)Perl,記住它mod_perl與 apache 的各個方面綁定,包括配置。您可以使用 Perl 節編寫配置並在 perl 本身內產生 VirtualHost 配置。

相關內容