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>

- XXXY_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_perlconfig を含む Apache のすべての側面とバインドされることを覚えておいてください。Perl スタンザを使用して config を記述し、Perl 自体で VirtualHost config を生成することができます。

関連情報