httpd in kleinere Dateien aufteilen

httpd in kleinere Dateien aufteilen

Hallo, ich muss jeden VirtualHost aus meiner httpd.conf in separate Dateien extrahieren, um die Verwaltung zu vereinfachen.

Ursprüngliche httpd.conf .

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

Und ich hätte gerne Dateien wie: - XXXX_user1.conf mit folgendem Inhalt:

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

- XXXY_user2.conf enthält:

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

Klingt etwas kompliziert, aber ich muss ungefähr 500 von Hand machen ;(

Vielen Dank für Antworten

Antwort1

Probieren Sie Folgendes aus:

#!/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
}

Speichern Sie es in einer Datei mit dem Namen „httpdsplit“ und führen Sie Folgendes aus:

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

Antwort2

Obwohl Sie es nicht erwähnt haben, sieht dies wie Apache httpd.conf aus. Obwohl ich die vorhandene Antwort empfehle, die die Dateien aufteilt, gibt es eine andere Option.

Wennder Apache-Server ist mit mod_perlundWennSie kennen (oder möchten Perl lernen), denken Sie daran, dass mod_perles mit allen Aspekten von Apache verknüpft ist, einschließlich der Konfiguration. Sie können die Konfiguration mit einer Perl-Strophe schreiben und die VirtualHost-Konfiguration in Perl selbst generieren.

verwandte Informationen