Quantcast
Channel: Multimediaforum
Viewing all articles
Browse latest Browse all 4603

[Gelöst] Aür Apache DateiInhalt prüfen/schreiben/löschen

$
0
0
Hallo Leute,

ich möchte die Server-Konfigurationsdatei (die bei mir im Apache2-Verzeichnis '/etc/apache2/sites-available/[SERVERNAME]' steht und mit 'a2ensite [SERVERNAME]' aktiviert wird) automatisch bearbeiten.

Dazu habe ich eine Scriptdatei "webbuild.sh" erstellt.

An dieser Datei werden beim Aufruf Parameter angehängt - so die Parameter für "projektname", "mainfolder", "subfolder" und "serveradminmail", welchen den jeweiligen Variablen "v_projektname", "v_mainfolder", "v_subfolder" und "v_serveradminmail" übergeben werden.

Da ich für eine Domain manchmal mehrere Webprojekte (z.B. eine Onlineversion und eine Testversion) anlegen muss, darf eine bestehende Webseite nicht beeinträchtigt werden wenn ich eine Testseite löschen oder erstellen will.

Bestandteile meines Scriptes sind: das erstellen der benötigten Verzeichnisse:
Code:

mkdir $v_mainfolder
mkdir $v_mainfolder/live
mkdir $v_mainfolder/test
mkdir $v_mainfolder/admin
mkdir $v_mainfolder/$v_subfolder

wenn ein Verzeichnis schon besteht, wird er hoffendlich nichts überschreiben, sondern sagen, dass das Verzeichnis schon existiert.

Jetzt der größere Codebereich: das Schreiben der Datei für Apache:
Code:

if [ $v_subfolder = "live" ]
        then
                while read -r line; do
                echo "$line"
                done <<EOF >/etc/apache2/sites-available/$v_projektnameklein
                <VirtualHost *:80>
                        ServerAdmin $v_servadminmail
                        Servername $v_domain
                        ServerAlias omain _domain v_domain
                        DocumentRoot $v_mainfolder/live
                        <Directory $v_mainfolder/live>
                                Order Deny,Allow
                                Allow from all
                                Options -Indexes
                        </Directory>
                </VirtualHost>

                <VirtualHost *:80>
                        ServerAdmin $v_servadminmail
                        Servername test$v_domain
                        DocumentRoot $v_mainfolder/test
                        <Directory $v_mainfolder/test>
                                Order Deny,Allow
                                Allow from all
                                Options -Indexes
                        </Directory>
                </VirtualHost>

                <VirtualHost *:80>
                        ServerAdmin $v_servadminmail
                        Servername admin$v_domain
                        DocumentRoot $v_mainfolder/admin
                        <Directory $v_mainfolder/admin>
                                Order Deny,Allow
                                Allow from all
                                Options -Indexes
                        </Directory>
                </VirtualHost>
                EOF
        elif  [ $v_subfolder = "test" ]
        then

                while read -r line; do
                    echo "$line"
                done <<EOF >/etc/apache2/sites-available/$v_projektnameklein
                <VirtualHost *:80>
                        ServerAdmin $v_servadminmail
                        Servername $v_domain
                        ServerAlias omain _domain v_domain
                        DocumentRoot $v_mainfolder/live
                        <Directory $v_mainfolder/live>
                                Order Deny,Allow
                                Allow from all
                                Options -Indexes
                        </Directory>
                </VirtualHost>

                <VirtualHost *:80>
                        ServerAdmin $v_servadminmail
                        Servername test$v_domain
                        DocumentRoot $v_mainfolder/test
                        <Directory $v_mainfolder/test>
                                Order Deny,Allow
                                Allow from all
                                Options -Indexes
                        </Directory>
                </VirtualHost>

                <VirtualHost *:80>
                        ServerAdmin $v_servadminmail
                        Servername admin$v_domain
                        DocumentRoot $v_mainfolder/admin
                        <Directory $v_mainfolder/admin>
                                Order Deny,Allow
                                Allow from all
                                Options -Indexes
                        </Directory>
                </VirtualHost>
                EOF
        else
                while read -r line; do
                    echo "$line"
                done <<EOF >/etc/apache2/sites-available/$v_projektnameklein
                <VirtualHost *:80>
                        ServerAdmin $v_servadminmail
                        Servername $v_domain
                        ServerAlias omain _domain v_domain
                        DocumentRoot $v_mainfolder/live
                        <Directory $v_mainfolder/live>
                                Order Deny,Allow
                                Allow from all
                                Options -Indexes
                        </Directory>
                </VirtualHost>

                <VirtualHost *:80>
                        ServerAdmin $v_servadminmail
                        Servername test$v_domain
                        DocumentRoot $v_mainfolder/test
                        <Directory $v_mainfolder/test>
                                Order Deny,Allow
                                Allow from all
                                Options -Indexes
                        </Directory>
                </VirtualHost>

                <VirtualHost *:80>
                        ServerAdmin $v_servadminmail
                        Servername admin$v_domain
                        DocumentRoot $v_mainfolder/admin
                        <Directory $v_mainfolder/admin>
                                Order Deny,Allow
                                Allow from all
                                Options -Indexes
                        </Directory>
                </VirtualHost>

                <VirtualHost *:80>
                        ServerAdmin $v_servadminmail
                        Servername  $v_subfolder$v_domain
                        DocumentRoot $v_mainfolder/$v_subfolder
                        <Directory $v_mainfolder/$v_subfolder>
                                Order Deny,Allow
                                Allow from all
                                Options -Indexes
                        </Directory>
                </VirtualHost>
                EOF
fi

Dieser letzte Code ist meiner Meinung nach Mist:

lieber wäre mir:
1. prüfe ob die Konfigurationsdatei schon vorhanden ist
- NEIN: erstelle Sie und trage die zu erstellende Webseite ein
- JA: prüfe ob es schon einen Eintrag für den "v_subfolder" gibt,
- - NEIN: erstelle den Eintrag unterhalb der schon bestehenden Einträge
- - JA: prüfe ob der bestehende Eintrag mit dem übereinstimmt, was eingetragen werden soll
- - - NEIN: lösche die falschen einträge und füge die richtigen ein
- - - JA: alles ist ok

genauso mit dem Löschen:
1. prüfe ob die Datei vorhanden ist
- NEIN: alles ist ok
- JA: prüfe, ob der zu löschende Eintrag allein in der Datei steht
- - JA: lösche die ganze Datei
- - NEIN: lösche nur den relevanten Eintrag

Könnt Ihr mir bitte dabei helfen?

Oder ist es am Ende einfacher für Jede Subdomain einer Domain eine eigene Konfigurationsdatei zu erstellen? Also

Erste Datei mit der Hauptdomain:
Code:

                <VirtualHost *:80>
                        ServerAdmin $v_servadminmail
                        Servername $v_domain
                        ServerAlias omain _domain v_domain
                        DocumentRoot $v_mainfolder/live
                        <Directory $v_mainfolder/live>
                                Order Deny,Allow
                                Allow from all
                                Options -Indexes
                        </Directory>
                </VirtualHost>

Zweite Datei mit der Testdomain:
Code:

                <VirtualHost *:80>
                        ServerAdmin $v_servadminmail
                        Servername test$v_domain
                        DocumentRoot $v_mainfolder/test
                        <Directory $v_mainfolder/test>
                                Order Deny,Allow
                                Allow from all
                                Options -Indexes
                        </Directory>
                </VirtualHost>

Kann man die getrennt voneinander erstellen, aktivieren und deaktivieren?

Danke im Voraus für eure Hilfe.

Viewing all articles
Browse latest Browse all 4603