Wie ändere ich das Stammverzeichnis eines Apache-Servers? [geschlossen]

241

Weiß jemand, wie man das Dokumentenstammverzeichnis des Apache-Servers ändert? Ich möchte grundsätzlich localhostaus dem /users/spencer/projectsVerzeichnis kommen anstatt /var/www.

Bearbeiten

Am Ende habe ich es herausgefunden. Einige schlugen vor, die httpd.confDatei zu ändern , aber am Ende fand ich eine Datei in /etc/apache2/sites-available/defaultund änderte das Stammverzeichnis von /var/wwwin /home/myusername/projects_folderund das funktionierte.

Spencer Cooley
quelle
Stack Overflow ist eine Site für Programmier- und Entwicklungsfragen. Diese Frage scheint nicht zum Thema zu gehören, da es nicht um Programmierung oder Entwicklung geht. Weitere Informationen zu den Themen finden Sie hier in der Hilfe. Vielleicht ist Server Fault oder Webmaster Stack Exchange ein besserer Ort, um zu fragen.
JWW

Antworten:

209

Sie müssen die DocumentRootEinstellung in Ihrer httpd.confDatei ändern . Die Chancen stehen gut, dass es unter so etwas wie sein wird/etc/apache2/conf/httpd.conf

Verwenden Sie Ihren Lieblingseditor (ich empfehle Vim ) und suchen Sie nach dem DocumentRootund ändern Sie ihn in /users/spencer/projects. Suchen Sie auch etwas weiter unten nach einer Einstellung, die folgendermaßen aussieht:

<Directory "/var/www">

Sie möchten auch die Anführungszeichen in Ihrem neuen Verzeichnis ändern. Dies gibt Apache Zugriff zum Lesen aus diesem Verzeichnis, wenn ein Benutzer eine Anforderung stellt, die es aufruft.

Starten Sie nun Ihren Apache-Dienst ( httpd -k restart) neu und Sie sollten bereit sein.

Bearbeiten : Apache2-Site-Konfigurationsdateien werden jetzt normalerweise gespeichert /etc/apache2/sites-available/ (Debian, Ubuntu usw.).

RDL
quelle
6
Ich habe /etc/apache2/httpd.conf geöffnet, aber die Datei war leer. Ich öffne es mit gedit.
Spencer Cooley
3
Die Datei befindet sich möglicherweise in /etc/httpd/conf/httpd.conf, abhängig von Ihrer Linux-Version.
Chris Henry
3
Die Datei httpd.conf ist leer, aber ich habe eine Datei unter etc / apache2 / sites-available / default gefunden und dort das Stammverzeichnis geändert. Ich hätte wahrscheinlich erwähnen sollen, dass dies nicht auf einem tatsächlichen Server ist. Ich richte eine lokale Entwicklungsumgebung ein. Ich bin mir nicht sicher, ob das einen Unterschied macht
Spencer Cooley
3
Wäre es möglich, sowohl / var / www als auch / home / myusername / projects_folder gleichzeitig zu aktivieren? Und wie soll ich konfigurieren? Vielen Dank.
Paul Lo
3
Die "Antwort" ist wirklich veraltet. Die richtige Antwort gemäß Ubuntu 18.x lautet entweder Ändern Sie das Stammverzeichnis von Apache oder verschieben Sie das Projekt nach / var / www / html. Führen Sie Folgendes aus, um das Stammverzeichnis von Apache zu ändern: cd / etc / apache2 / sites-available. Öffnen Sie dann die Datei 000-default.conf mit dem folgenden Befehl: nano 000-default.conf. Bearbeiten Sie die DocumentRoot-Option: DocumentRoot / path / to / my / project. (siehe askubuntu.com/questions/337874/… )
sea26.2
262

Bitte beachten Sie, dass dies nur für Ubuntu 14.04 LTS und neuere Versionen gilt.

In meinem Ubuntu 14.04 LTS wurde das Dokumentstammverzeichnis auf festgelegt /var/www/html. Es wurde in der folgenden Datei konfiguriert:

/etc/apache2/sites-available/000-default.conf

Also mach einfach ein

sudo nano /etc/apache2/sites-available/000-default.conf

und ändern Sie die folgende Zeile nach Ihren Wünschen:

DocumentRoot /var/www/html

Mach auch a

sudo nano /etc/apache2/apache2.conf

und finde das

<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

und wechseln Sie /var/www/htmlin Ihr bevorzugtes Verzeichnis

und speichern Sie es.

Nachdem Sie Ihre Änderungen gespeichert haben, starten Sie einfach den Apache2-Webserver neu und Sie sind fertig :)

sudo service apache2 restart


Wenn Sie einen grafischen Texteditor bevorzugen, können Sie den einfach sudo nanodurch einen ersetzen gksu gedit.

katze_sonne
quelle
1
@ Paul Lo: Ich habe dies unter Ubuntu 13.10 nicht versucht, nur unter Ubuntu 14.04; Da ich mir ziemlich sicher bin, dass es beim ersten Einrichten von Apache (unter Ubuntu 12.04) kein solches Verzeichnis gab. Also ja, ich denke, dass dies nur unter Ubuntu 14.04 LTS und neuer verfügbar ist. Sie können sich jedoch die anderen Antworten ansehen. Die Upvotes deuten darauf hin, dass sie anderen Menschen geholfen haben, vielleicht arbeiten sie auch mit Ubuntu 13.10.
Mozzbozz
1
Vielen Dank für Ihre Anfrage. Ich habe diese Informationen nur in der Antwort bearbeitet, damit niemand in die Falle gerät, dies mit älteren Ubuntu-Versionen (y) zu
versuchen
3
@mozzbozzm, du hast recht. Nur 14.04. Wirklich eine seltsame Wahl, jetzt plötzlich var/www/htmlals Standardwurzel. Versuchen sie tatsächlich , die Zeit der Menschen zu verschwenden? :)
Davidkonrad
4
Ich erhalte eine verbotene Fehlermeldung, You don't have permission to access / on this server.wenn ich in meinem Browser auf localhost: 80 drücke. Muss ich den Port ändern?
Costa
3
@ Costa Ich habe das Problem gelöst, indem ich <Directory path_to_directory> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> in der /etc/apache2/apache2.conf
Keenan Gebze
42

Ich musste bearbeiten /etc/apache2/sites-available/default. Die Zeilen sind die gleichen wie von RDL erwähnt.

Nick
quelle
3
Eine von @pabloab vorgeschlagene Änderung hatte folgendes zu sagen: "Apache 2.4 und höher erfordert .confam Ende und hat standardmäßig ein 000-Präfix als". Das Ergebnis ist /etc/apache2/sites-available/000-default.conf. Ich habe das nicht getestet, aber es kann einigen Leuten helfen.
Nick
^^ das hat es behoben. Wo ist dokumentiert, dass ich am Ende meiner auf der Website verfügbaren Dateien .conf benötige?!? Ich habe ungefähr 20 virtuelle Hosts, die nach einem Update deaktiviert und offline waren. Nach ein paar Stunden wurde dies durch das Auffinden und Umbenennen meiner für Websites verfügbaren Dateien behoben.
James Perih
23

Dies ist für Ubunutu 14.04:

In der Datei /etc/apache2/apache2.confsollte es wie folgt ohne den Verzeichnisnamen sein:

<Directory /home/username>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

und in die Datei /etc/apache2/sites-available/000-default.confsollten Sie den benutzerdefinierten Verzeichnisnamen einfügen, dh www:

DocumentRoot /home/username/www

Wenn nicht wie oben angegeben, wird beim Laden des Servers eine Fehlermeldung angezeigt: Forbidden You don't have permission to access / on this server

Androsfett
quelle
Danke Kumpel :) Das hat bei mir in Ubuntu 16.04
Magesh Kumaar
2
Es funktionierte auch auf Debian 8
Androsfat
15

Der richtige Weg, um das Verzeichnis zu wechseln oder von mehreren Verzeichnissen unter verschiedenen Ports für Apache2 auszuführen, ist wie folgt:

Für /etc/apache2Apache2 befinden sich die Konfigurationsdateien unter und verwenden keine einzige Konfigurationsdatei wie in älteren Versionen, sondern sind in kleinere Konfigurationsdateien aufgeteilt, wobei /etc/apache2/apache2.confdies die Hauptkonfigurationsdatei ist. Um Dateien aus einem anderen Verzeichnis bereitzustellen, benötigen wir eine neue virtualhost conf-Datei. Die conf-Dateien von virtualhost befinden sich in /etc/apache2/sites-available(bearbeiten Sie keine Dateien innerhalb von Sites, die aktiviert sind). Die Standardinstallation von Apache verwendet die Konfigurationsdatei virtualhost 000-default.conf.

Erstellen Sie zunächst eine neue VirtualHost-Datei, indem Sie die Standard-Virtualhost-Datei kopieren, die von der Standardinstallation von Apache verwendet wird (die bei localhost auf Port 80 ausgeführt wird). Wechseln Sie in das Verzeichnis /etc/apache2/sites-availableund sudo cp 000-default.conf example.com.conferstellen Sie eine Kopie von . Bearbeiten Sie nun die Datei bis sudo gedit example.com.confzu:

<VirtualHost *:80>
    ServerAdmin example@localhost
    DocumentRoot /home/ubuntu/example.com    
</VirtualHost>

Ich habe der Kürze halber die nicht wichtigen Zeilen aus der obigen Datei gelöscht. Hier DocumentRootist der Pfad zu dem Verzeichnis, aus dem die Website-Dateien bereitgestellt werden sollen, wie z index.html.

Erstellen Sie das Verzeichnis, aus dem Sie die Dateien bereitstellen möchten, z. mkdir example.comund ändern Sie den Eigentümer und die Standardgruppe des Verzeichnisses, z. B. wenn Ihr angemeldeter Benutzername ubuntuÄnderungsberechtigungen als ist sudo chown ubuntu:www-data example.com. Dies gewährt dem Benutzer vollen Zugriff ubuntuund ermöglicht den Lese- und Ausführungszugriff auf die Gruppe www-data.

Bearbeiten Sie nun die Apache Conf-Datei, /etc/apache2/apache2.confindem Sie den Befehl eingeben sudo gedit apache2.conf, die Zeile suchen <Directory /var/www/>und unter dem schließenden Tag </Directory>Folgendes hinzufügen:

<Directory /home/ubuntu/example.com>
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
</Directory>

Nun gibt es zwei Befehle , um die Virtualhost - Konfigurationsdateien zu aktivieren oder zu deaktivieren, die sind a2ensiteund a2dissitejeweils. Da unsere example.com.confDatei denselben Port ( 80) verwendet wie die Standardkonfigurationsdatei ( 000-default.conf), müssen wir die Standardkonfigurationsdatei durch Ausgabe des Befehls deaktivieren sudo a2dissite 000-default.confund unsere virtualhost conf-Datei durch aktivierensudo a2ensite example.com.conf

Starten Sie nun den Server mit dem Befehl neu oder laden Sie ihn neu sudo service apache2 restart. Jetzt dient Apache Dateien aus dem Verzeichnis example.coman localhostauf Standard - Port 80.

Der a2ensiteBefehl erstellt im Grunde genommen einen symbolischen Link zur conf-Datei im Site-fähigen Verzeichnis

Bearbeiten Sie keine Dateien in der Site-fähigen (oder * -aktivierten) Direktive, wie in dieser Antwort https://stackoverflow.com/a/41568701/2532763 angegeben

So ändern Sie den Port und führen ihn aus mehreren Verzeichnissen an verschiedenen Ports aus:

Wenn Sie das Verzeichnis nun an einem anderen Port ausführen müssen, ändern Sie die Portnummer von 80 auf 8080, indem Sie die virtualhost-Datei wie folgt bearbeiten:

<VirtualHost *:8080>
    ServerAdmin user@localhost
    DocumentRoot /home/ubuntu/work
</VirtualHost>

und Bearbeiten /etc/apache2/ports.confund Hinzufügen Listen 8080direkt unter der LinieListen 80

Jetzt können wir die Standard-Konfigurationsdatei virtualhost aktivieren, die auf Port 80 ausgeführt wird, da das Verzeichnis example.com Port 8080 als verwendet sudo a2ensite 000-default.conf

Starten Sie nun den Server mit dem Befehl neu oder laden Sie ihn neu sudo service apache2 restart. Jetzt kann von localhostund auf beide Verzeichnisse zugegriffen werdenlocalhost:8080

Lords
quelle
4

Ich habe mit LAMP gearbeitet und Um den Dokumentenstammordner zu ändern, habe ich die Standarddatei bearbeitet , die sich im Ordner / etc / apache2 / sites-available befindet . Wenn Sie dasselbe tun möchten, bearbeiten Sie es einfach wie folgt

DocumentRoot /home/username/new_root_folder
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/username/new_root_folder>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

Wenn Sie danach localhost in den Browser eingeben, wird der Inhalt * / home / username / new_root_folder * geladen .

Shashidhara
quelle
4

Wenn du http.confNicks Weg nicht finden und ihm folgen könntest .

Starten Sie Apache mit neu sudo service apache2 restart

Nitin
quelle
4

Für Apache2 unter Linux Mint 17.3 Cinnamon 64-Bit funktioniert Folgendes:

  1. In /etc/apache2/sites-available/der offenen 000-default.confDatei und die Änderung Document Root auf den absoluten Pfad des Verzeichnisses.

    sudo vim /etc/apache2/sites-available/000-default.conf

  2. In /etc/apache2/offenen httpd.confund fügen Sie ein <Directory>Verzeichnis Tag Referenzierung und die exakt gleichen Einstellungen wie der Tag für die Aufnahme var/www.

    sudo vim /etc/apache2/apache2.conf

    Auf meiner Maschine sah es so aus:


<Directory /home/my_user_name/php/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

Hinweis: Im ersten Schritt möchten Sie wahrscheinlich auch das Dokumentstammverzeichnis in der default-ssl.confDatei für SSL-Zwecke ändern . Soweit ich das beurteilen kann, ist dies jedoch nicht erforderlich, um eine allgemeine Entwicklungsumgebung zum Laufen zu bringen.

Stackato
quelle
2

In Apache Version 2.4.18 (Ubuntu).

1. Gehen Sie zu dieser Datei /etc/apache2/apache2.conf, suchen Sie <Directory /var/www/>nach Ihrem Verzeichnis und ersetzen Sie es in Ihrem Verzeichnis ......

2. Gehen Sie zu /etc/apache2/sites-available/000-default.conf und suchen Sie DocumentRoot /var/www/htmlnach Ihrem DocumentRoot und ersetzen Sie ihn.

Habibun
quelle
Ich habe beides getan. Es wird weiterhin Verboten angezeigt. Sie haben keine Berechtigung, auf diesen Server zuzugreifen.
Programmierer
Überprüfen Sie die Berechtigung Ihres Ordners, wenn er sich nicht in Ihrem Home-Verzeichnis befindet.
Habibun
2

Falls Sie Ubuntu 16.04 verwenden. Bitte aktualisieren Sie die Datei 000-default.conf im Verzeichnis / etc / apache2 / sites-available.

hier -> ServerAdmin webmaster @ localhost DocumentRoot / var / www / html / YourFolder

Shashank Saxena
quelle
1

Ich hatte das /var/wwwzu einem Softlink zum gewünschten Verzeichnis gemacht (zB /users/username/projects) und danach war alles in Ordnung.

Das Original /var/wwwmuss jedoch natürlich gelöscht oder umbenannt werden.

maan81
quelle
0

Wenn jemand LAMPin dem /optOrdner installiert hat, /etc/apache2ist das nicht das, wonach Sie suchen.

Suchen Sie nach einer httpd.confDatei in /opt/lampp/etc/httpd.conf.

Ändern Sie die Zeile in diesem Ordner und speichern Sie sie vom Terminal.

Yogesh Gupta
quelle
0

In RedHat 7.0: /etc/httpd/conf/httpd.conf

ehacinom
quelle
0

Wenn Sie Linux Mint verwenden (persönliche Meinung, aus allen Distributionen macht mich diese glücklich), gehen Sie wie folgt vor:

1- Gehen Sie zu / etc / apache2 / sites-available und bearbeiten Sie 000-default.conf. 2- Suchen Sie nach DocumentRoot, Beispiel DocumentRoot / var / www / html, das Sie in Ihr jeweiliges Verzeichnis ändern. 3- Öffnen Sie das Terminal und geben Sie Folgendes ein: sudo service apache2 restart

BEARBEITET ----- Mir ist klar, dass Sie in Mint /etc/apache2/apache.conf aufrufen, / var / www durch Ihren jeweiligen Pfad ersetzen und dann den Server neu starten (Schritt 3).

Das ist es.

Marcelo Agimóvel
quelle
0

Gilt für Ubuntu 14.04 und spätere Versionen. Stellen Sie sicher, dass Sie die folgenden Dateien sichern, bevor Sie Änderungen vornehmen.

1.Öffnen /etc/apache2/apache2.confund suchen Sie nach der <Directory /var/www/>Direktive und ersetzen Sie den Pfad durch /home/<USERNAME>/public_html. Sie können * anstelle von verwenden.

2.Öffnen /etc/apache2/sites-available/000-default.confund ersetzen Sie die Werteigenschaft DocumentRootvon /var/www/htmlbis /home/<USERNAME>/public_html. Auch <Directory /var/www/html>zu <Directory /home/<USERNAME>/public_html.

3.Öffnen /etc/mods-available/php7.1.conf. Suchen und kommentieren Sie den folgenden Code

<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_flag engine Off
    </Directory>
</IfModule>

Schalten Sie das php_admin_flag engine OFFFlag nicht ein, da der Grund im Kommentar über dem Richtliniencode angegeben ist. Auch PHP-Version kann 5.0, 7.0 oder alles sein, was Sie installiert haben.

public_htmlVerzeichnis erstellen in home/<USERNAME>.

Starten Sie den Apache-Dienst neu, indem Sie den Befehl ausführen sudo service apache2 restart.

Testen Sie, indem Sie ein Beispielskript auf dem Server ausführen.

user1184294
quelle
-3

Wenn Sie (wie ich) diesen Beitrag über Google finden:

Ich habe es unter /etc/apache2/sites-available/000-default.conf gefunden

Borkee
quelle
4
Bitte beschreiben Sie Ihre detaillierte Antwort mit eingebettetem Code, anstatt auf eine externe Datei zu verweisen.
Christian Michael