Site existiert kein Fehler für a2ensite


275

Ich habe cmsplus.devunter /etc/apache2/sites-availablemit dem folgenden Code,

<VirtualHost *:80>
    ServerAdmin master@server.com
    ServerName www.cmsplus.dev
    ServerAlias cmsplus.dev

    DocumentRoot /var/www/cmsplus.dev/public

    LogLevel warn
    ErrorLog /var/www/cmsplus.dev/log/error.log
    CustomLog /var/www/cmsplus.dev/log/access.log combined
</VirtualHost>

Wenn ich jetzt benutze sudo /usr/sbin/a2ensite cmsplus.dev, erhalte ich den Fehler:

ERROR: Site cmsplus.dev does not exist!

Mein Webserver Apache/2.4.6 (Ubuntu)

Wie kann man dieses Problem lösen?

Antworten:


577

Das Problem wurde behoben, indem .confden Site-Konfigurationsdateien eine Erweiterung hinzugefügt wurde .

Apache a2ensiteführt zu:

Error! Site existiert nicht

Problem; Wenn Sie den Fehler beim Aktivieren einer Site mithilfe von:

sudo a2ensite example.com

aber es kehrt zurück:

Fehler: example.com existiert nicht

a2ensite ist einfach ein Perl-Skript, das nur mit endenden Dateinamen funktioniert .conf

Deshalb muss ich für meine Einstellungsdatei umbenennen , example.comum example.com.confso könnte wie folgt erreicht werden:

mv /etc/apache2/sites-available/example.com /etc/apache2/sites-available/example.com.conf

Erfolg


25
Seltsam! Dies funktionierte in Ubuntu 12.04 und 12.10 ohne Erweiterung.
FloatingRock

Auch für mich. Wie Guilherme sagt, hat sich die apache2.conf zwischen Ubuntu- oder Apache-Versionen geändert.
Nicolas Zozol

7
Als Alternative glaube ich, dass Sie einfach die Datei apache.conf bearbeiten können. Die relevante Zeile lautet "IncludeOptional sites-enabled / *. Conf". Entfernen Sie die .conf am Ende und Sie kehren zu dem zurück, was in 12.04 funktioniert hat. Ich denke, dies könnte eine Änderung sein, die Debian an Ubuntu vorgenommen hat, aber ich bin mir nicht sicher.
Josiah

2
Warum ist diese Antwort 3.? Dies ist die richtige Vorgehensweise.
Ende

Ich hatte bereits aufgegeben, nachdem ich so ziemlich alles geändert hatte ... Ich werde mich daran erinnern, von nun an die Erweiterung .conf hinzuzufügen ...
wtf8_decode

91

Sie haben wahrscheinlich Ihre Ubuntu-Installation aktualisiert und eines der Updates beinhaltete das Upgrade von Apache auf Version 2.4.x.

In Apache 2.4.x müssen die vhost-Konfigurationsdateien im Verzeichnis / etc / apache2 / sites-available die Erweiterung .conf haben.

Benennen Sie mit Terminal (Befehl mv) alle vorhandenen Konfigurationsdateien um und fügen Sie allen die Erweiterung .conf hinzu.

mv /etc/apache2/sites-available/cmsplus.dev /etc/apache2/sites-available/cmsplus.dev.conf

Wenn der Fehler "Berechtigung verweigert" angezeigt wird, fügen Sie "sudo" vor Ihren Terminalbefehlen hinzu.

Sie müssen keine weiteren Änderungen an den Konfigurationsdateien vornehmen.

Aktivieren Sie die vhost (s):

a2ensite cmsplus.dev.conf

Und dann laden Sie Apache neu:

service apache2 reload

Ihre Websites sollten jetzt betriebsbereit sein.


UPDATE: Wie hier erwähnt , hat eine von Ihnen installierte Linux-Distribution die Konfiguration in Include * .conf geändert. Daher hat es nichts mit Apache 2.2 oder 2.4 zu tun


28

Es gibt noch einen anderen guten Weg, bearbeiten Sie einfach die Datei und es apache2.confgibt eine Zeile am Ende

IncludeOptional sites-enabled / *. Conf

Entfernen Sie einfach das .confam Ende, so

IncludeOptional sites-enabled / *

und starten Sie den Server neu.

(Ich habe dies nur in Ubuntu 13.10 versucht, als ich es aktualisiert habe.)


1
Hmm ... Ich habe es unter Ubuntu 14.04 versucht und es hat nicht funktioniert. Das Hinzufügen .confzu den Konfigurationsdateien hat dies jedoch getan.
Clifton Labrum

Seltsamerweise hatte ich diesen Fehler, als ich mein Ubuntu 12.04 auf 13.10 aktualisierte (weil ich die Apache-Konfigurationsdateien unbeabsichtigt ersetzt habe). Beim 14.04-Update erinnerte ich mich daran, nicht zu ersetzen, und ich hatte keine Probleme.
Guilherme

Das ist wirklich kein guter Weg. Dateien unter "Sites aktiviert" sind Symlinks zu den entsprechenden Dateien unter "Sites verfügbar" und sollten nur entfernt werden, um die Site zu deaktivieren. Genau das macht a2dissite. A2ensite aktiviert die Site entsprechend.
Dokbua

8

Ich hatte gerade das gleiche Problem. Ich würde sagen, es hat nichts mit der apache.conf zu tun.

a2ensite muss sich geändert haben - Zeile 532 ist die Zeile, die das Suffix .conf erzwingt:

else {
    $dir    = 'sites';
    $sffx   = '.conf';
    $reload = 'reload';
}

Wenn Sie es ändern zu:

else {
    $dir    = 'sites';
    #$sffx   = '.conf';
    $sffx   = '';
    $reload = 'reload';
}

... es wird ohne Suffix funktionieren.

Natürlich möchten Sie das a2ensite-Skript nicht ändern, aber das Suffix der conf-Datei ist der richtige Weg.

Dies ist wahrscheinlich nur eine Möglichkeit, das ".conf" -Suffix durchzusetzen.


Siehe auch diese Frage: askubuntu.com/questions/362682/…
cslotty

7

Der schnellste Weg ist also, Site-Konfigurationsnamen umzubenennen, die auf ".conf" enden.

mv /etc/apache2/sites-available/mysite /etc/apache2/sites-available/mysite.conf

a2ensite mysite.conf

andere Anmerkungen zu früheren Kommentaren:

  • IncludeOptional wurde erst in Apache 2.36 eingeführt. Wenn Sie die obigen Änderungen vornehmen und anschließend auf 2.2 neu starten, wird Ihr Server heruntergefahren!

  • Außerdem kann Version 2.2 a2ensite nicht wie beschrieben gehackt werden

Da es sich bei Ihrer Site-verfügbaren Datei tatsächlich um eine Konfigurationsdatei handelt, sollte sie trotzdem so benannt werden.


Starten Sie Dienste im Allgemeinen nicht neu (Webserver sind eine Art von Dienst):

  • Leute können sie nicht finden, wenn sie nicht rennen! Denken Sie Linux nicht MS Windows ..

Server können viele Jahre lang ausgeführt werden - Live-Update, Konfiguration neu laden usw.

Die Cloud bedeutet nicht, dass Sie neu starten müssen, um eine Konfigurationsdatei zu laden.

  • Wenn Sie die Konfiguration eines Dienstes ändern, verwenden Sie "reload" und nicht "restart".

  • Neustart stoppt den Dienst und startet dann den Dienst. Wenn bei Ihrer Änderung der Konfiguration ein Problem auftritt, wird der Dienst nicht neu gestartet.

  • Beim erneuten Laden wird ein Fehler ausgegeben, aber der Dienst wird niemals heruntergefahren, sodass Sie den Konfigurationsfehler beheben können, der nur eine schlechte Syntax sein kann.

debian oder ubunto [Dienstname für diesen Thread ist apache2]

service {service-name} {start} {stop} {reload} ..

andere os als links für den leser übrig.


5

Funktioniert, nachdem ich .confzur Konfigurationsdatei hinzugefügt habe


2

Ich habe gerade die Ubuntu Server-Version von 12.04 LTS auf 14.04 LTS aktualisiert.

Wie oben erwähnt, wird die Erweiterung .conf für Apache 2.4.x für die vhost-Dateien der Websites benötigt, die sich im Verzeichnis "sites-available" befinden.

Bevor ich diese Frage gelesen habe, hatte ich keine Ahnung, was mit dem Server los war.

Ziemlich schöne Lösung.

Zusammenfassend habe ich die folgenden Schritte am Terminal ausgeführt:

1) Greifen Sie auf den für Websites aktivierten Ordner zu

$ cd /etc/apache2/sites-enabled

2) Da der Befehl a2dissite nicht mit veralteten Dateien (ohne .conf) funktioniert, entfernen Sie die alten Website-Dateien, die veröffentlicht wurden

$ sudo rm <my-old-website-without-.conf>

3) Benennen Sie die Website-vhost-Dateien um und ändern Sie ihre Erweiterung, indem Sie am Ende .conf hinzufügen

$ sudo mv /etc/apache2/sites-available/mywebsite /etc/apache2/sites-available/mywebsite.conf

4) Veröffentlichen Sie die neue und korrekte vhost-Datei erneut

$ sudo a2ensite mywebsite.conf

5) Überprüfen Sie die Website im Browser und haben Sie Spaß! :) :)


1

In meinem Fall mit Ubuntu 14.04.3 und Apache 2.4.7 bestand das Problem darin, dass ich site1.conf kopiert habe, um site2.conf verfügbar zu machen, und durch Kopieren etwas passiert ist und ich mit dem im Thread beschriebenen Fehler nicht a2ensite site2.conf konnte .

Die Lösung für mich bestand darin, site2.conf in site2 umzubenennen und dann site2 erneut in site2.conf umzubenennen. Danach konnte ich a2ensite site2.conf.


1

Mir ist klar, dass dies hier nicht der Fall ist, aber es könnte jemandem helfen.

Stellen Sie sicher, dass Sie die conf-Datei nicht versehentlich in / etc / apache2 / sites-enabled erstellt haben. Sie erhalten den gleichen Fehler.


-2

Versuchen Sie es so ..

NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin master@server.com
    ServerName www.cmsplus.dev
    ServerAlias cmsplus.dev

    DocumentRoot /var/www/cmsplus.dev/public

    LogLevel warn
    ErrorLog /var/www/cmsplus.dev/log/error.log
    CustomLog /var/www/cmsplus.dev/log/access.log combined
</VirtualHost>

und fügen Sie einen Eintrag in / etc / hosts hinzu

127.0.0.1 www.cmsplus.dev

Apache neu starten ..


Jetzt gibt es mir die Standardseite It worksanstelle der Einstellungen.
Devo

Haben Sie mehrere virtuelle Hosts konfiguriert? Können Sie den gesamten Dateiinhalt veröffentlichen?
Balaji Perumal

3
Vielen Dank, dieses Problem wurde behoben, indem .confdiesen Site-Konfigurationsdateien lediglich eine Erweiterung hinzugefügt wurde .
Devo
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.