Hier mal ein Beispiel, wie man per custom.lua nach der Konfiguration noch ein Script aufruft. Primär für mich zum Nachschlagen, wenn ich es das nächste Mal wieder brauche.
-- Funktion die ueberschrieben wird zunaechst sichern
apache_orig_configureVHost = require("apache").configureVHost
LC.apache = require("apache")
function LC.apache.configureVHost(cfg, opts)
-- Erst Konfiguration erzeugen lassen und danach anpassen
res = apache_orig_configureVHost(cfg,opts)
-- VHost-Config-File ermitteln
local vhostpath = cfg['available_dir'] or cfg['enabled_dir']
if opts and opts.prefix then vhostpath = opts.prefix .. vhostpath end -- use prefix (for testing etc.)
local vhost_config_file = vhostpath .. "/" .. opts['name'] .. ".conf"
LC.log.print(LC.log.INFO, "Using custom.lua for apache-vhost config "..vhost_config_file)
local script = "/etc/apache2/lc_post_vhost_hook.sh"
local cmd = script .. " "..vhost_config_file
local os_res = os.execute(cmd)
if os_res ~= 0 then
LC.log.print(LC.log.ERR, "custom.lua: Error executing " .. script)
else
LC.log.print(LC.log.INFO, "custom.lua: Script executed successfully: " .. script)
end
-- Rückgabewerte der Originalfunktion zurückgeben
return res
end
Alles anzeigen
Das Script erst testen mit
/usr/lib/liveconfig/lclua /usr/lib/liveconfig/lua/custom.lua
und anschliessend liveconfig /etc/init.de/liveconfig restart oder service liveconfig restart neu starten. Wenn Fehler im LUA-Code sind, dann startet liveconfig nicht mehr.
Das Script /etc/apache2/lc_post_vhost_hook.sh, sofern es denn vorhanden und ausführbar ist, wird nach der VHost-Konfiguration aufgerufen.
In diesem Script nutze ich dann z. B. den "sed" um an einer bestimmten Stelle noch ein Include einzufügen. Include deshalb, damit die Änderung so klein wie möglich bleibt. Das minimiert dann auch Fehler bei der automatischen Nachbearbeitung.
Hier noch ein Beispiel für das Script: /etc/apache2/lc_post_vhost_hook.sh
#!/bin/bash
#
# Einbinden der Datei ...meine-seite.de.local nach der Apache
# Direktivenzeile "ServerName www.meine-seite.de"
#
vhost_config_file="$1"
conf_include="/etc/apache2/sites-available/www.meine-seite.de.local"
url="www.meine-seite.de"
conf_include="${conf_include//\//\\/}"
# Als erstes eine evtl. schon vorhandene Include-Zeile rausfiltern und
# dann erst die neue einfügen. Das soll doppelte Includes bei Mehr-
# fachaufrufen verhindern.
sed -ri -e "/Include $conf_include/d" \
-e "s=^(.*ServerName.*$url.*)\$=\1\n Include $conf_include=" $vhost_config_file
Alles anzeigen