Ich verwende den Ubuntu-Server 16.04.2 mit Apache2, auf dem ich meine persönlichen Websites speichere.
Um alle meine conf-Dateien unter /etc/apache2/sites-available
(außer 000-default.conf
und ssl-default.conf
) zu aktivieren , ging ich zu /var/www/html
und führte aus a2ensite
.
Mir wurde dann gesagt:
Your choices are:
000-default default-ssl domain.tld1 domain.tld2 domain.tld3 domain.tld4
Which site(s) do you want to enable (wildcards ok)?
Ich habe dann Ctrl+ versucht C, etwas anderes auszuführen.
Ich suche nach einer Möglichkeit, alle Site-Confs automatisch zu aktivieren, ohne eine bestimmte zu notieren. Ich möchte nur einen Befehl ausführen, der alle Site-Confs aktiviert, die ich selbst hinzugefügt habe.
quelle
*.conf
Erweiterung suchen . Oder a2ensite würde sich beschweren, dass die Seite nicht existiertSie müssen zu
/etc/apache2/sites-available
dem Befehl navigieren und ihn dann ausführen:Es werden alle Sites im Verzeichnis aktiviert. (Die Dateien sollten so etwas wie xxx.conf sein.)
Und dann Apache mit neu laden
sudo service apache2 reload
.Ihre Befehlssequenz sollte also so aussehen:
quelle
default-ssl.conf
... Dies geht aus der Ausgabe hervorEnabling site default-ssl.
dpkg -S
um festzustellen, ob die Konfigurationsdatei aus einem Paket stammt.Kopieren Fügen Sie die folgenden Zeilen in den Dateinamen ein
apache_enable.sh
Geben Sie den Befehl read + execute an
apache_enable.sh
und führen Sie das Skript mit dem Root-Benutzer ausquelle
Unabhängig von unserem aktuellen Speicherort versucht der Befehl
sudo a2ensite "*.conf"
, alle darin abgelegten Konfigurationsdateien zu aktivieren/etc/apache2/sites-available/
.Als nächstes können wir
a2dissite 000-default.conf default-ssl.conf
die Standardkonfigurationen von Apache deaktivieren und dannsystemctl restart apache2.service
neu starten.Wir können dies alles wie einen einzigen Befehl ausführen:
Darüber hinaus können wir einen benutzerdefinierten Befehl über eine Funktion in bash erstellen:
Jetzt haben wir den Befehl , der für diesen Job entwickelt wurde. Um diesen Befehl dauerhaft zu machen, müssen wir die obigen Zeilen am Ende der Datei platzieren und dann . Das nächste einfache Skript führt diese Aufgabe aus:
a2ensites
~/.bashrc
source
quelle
*
Platzhalter wird erweitert, bevor era2ensite
in meinem Fall an den Befehl übergeben wird. Dies funktioniert jedochsudo a2ensite "*.conf"
.a2ensite '*.conf'
Ihr System ordnungsgemäß funktioniert?Durch
a2ensite /var/www/html/*/
die Ausführung aktiviert Apache jede Site-Conf, die denselben Namen wie das Site- Verzeichnis hat .Als Nebeneffekt wird auch versucht, Site-Verzeichnisse abzugleichen, die nicht mit Site-Conf-Dateien übereinstimmen, wie aus der folgenden Ausgabe vorhergesagt, aber ich denke, dies kann sicher ignoriert werden:
Sie müssen Apache wahrscheinlich neu starten, nachdem Sie conf-Dateien aktiviert haben:
quelle
/etc/apache2/sites-available
Ordner für Konfigurationen für Ihre Sites zu verwenden. Sobald Sie sie über a2ensite aktivieren, werden sie automatisch mit verknüpft/etc/apache2/sites-enabled
. Was Sie gerade tun, ist ziemlich seltsam und jeder, der Zugriff auf Ihren Webserver hat, kann Ihre Konfigurationen überprüfen?/var/www/html
da dies der DocumentRoot derdefault.html
Site ist. In deinem Fall scheinen Sie also die Konfigurationen dort auszuführen ... Es ist, als würde man mit offenem Mund essen, tu das nicht ;-)./var/www/html
als Konfigurationsordner zu haben . Nvm dann. Was Sie tatsächlich brauchen, ist nur einfind ./ -type f -and -not -name "*default*" -exec a2ensite {} \;
Verschieben Sie die Standardkonfigurationen in einen anderen Ordner, und dann sollte das * für Sie so funktionieren, wie Sie es möchten.
Wechseln Sie in den Ordner "sites-available", da dieser nur in diesem Ordner funktioniert.
quelle