Jak zmienić katalog główny serwera Apache? [Zamknięte]

241

Czy ktoś wie, jak zmienić katalog główny serwera Apache? Zasadniczo chcę localhostpochodzić z /users/spencer/projectskatalogu zamiast /var/www.

Edytować

W końcu to rozgryzłem. Niektórzy sugerowali zmianę httpd.confpliku, ale znalazłem plik /etc/apache2/sites-available/defaulti zmieniłem katalog główny z /var/wwwna /home/myusername/projects_folderi to działało.

Spencer Cooley
źródło
Stack Overflow to strona z pytaniami dotyczącymi programowania i programowania. To pytanie wydaje się nie na temat, ponieważ nie dotyczy programowania ani programowania. Zobacz o jakie tematy mogę pytać tutaj w Centrum pomocy. Być może lepiej byłoby zapytać o awarię serwera lub wymianę stosu dla webmasterów .
jww

Odpowiedzi:

209

Musisz zmienić DocumentRootustawienie w swoim httpd.confpliku. Są szanse, że będzie pod czymś takim/etc/apache2/conf/httpd.conf

Użyj swojego ulubionego edytora (polecam Vima ) i poszukaj go DocumentRooti zmień na /users/spencer/projects. Spójrz też nieco dalej w stronę ustawienia, które wygląda następująco:

<Directory "/var/www">

Będziesz także chciał zmienić zawartość cytatów w nowym katalogu. Dzięki temu Apache ma dostęp do odczytu z tego katalogu, gdy użytkownik wysyła żądanie do niego.

Teraz uruchom ponownie usługę Apache ( httpd -k restart) i powinieneś być gotowy.

Edycja : pliki konfiguracyjne strony Apache2 są teraz zwykle przechowywane w /etc/apache2/sites-available/ (Debian, Ubuntu itp.).

RDL
źródło
6
Otworzyłem /etc/apache2/httpd.conf, ale plik był pusty. Otwieram to za pomocą gedit.
Spencer Cooley,
3
Plik może znajdować się w /etc/httpd/conf/httpd.conf, w zależności od Twojego gustu w Linuksie.
Chris Henry
3
plik httpd.conf jest pusty, ale znalazłem plik w etc / apache2 / sites-available / default i zmieniłem tam katalog główny. Powinienem chyba wspomnieć, że nie ma tego na prawdziwym serwerze. Tworzę lokalne środowisko programistyczne. Nie jestem pewien, czy to robi różnicę
Spencer Cooley
3
Czy można jednocześnie włączyć / var / www i / home / myusername / projects_folder? Jak mam skonfigurować? dzięki.
Paul Lo
3
„Odpowiedź” jest naprawdę przestarzała. Prawidłowa odpowiedź zgodnie z dokumentacją Ubuntu 18.x: Zmień katalog główny Apache lub przenieś projekt do / var / www / html. Aby zmienić katalog główny Apache, uruchom: cd / etc / apache2 / sites-available. Następnie otwórz plik 000-default.conf za pomocą polecenia: nano 000-default.conf. Edytuj opcję DocumentRoot: DocumentRoot / path / to / my / project. (patrz askubuntu.com/questions/337874/… )
morze26.2
263

Należy pamiętać, że dotyczy to tylko Ubuntu 14.04 LTS i nowszych wersji.

W moim Ubuntu 14.04 LTS katalog główny dokumentu został ustawiony na /var/www/html. Został skonfigurowany w następującym pliku:

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

Więc po prostu zrób

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

i zmień następujący wiersz na żądany:

DocumentRoot /var/www/html

Zrób też

sudo nano /etc/apache2/apache2.conf

i znajdź to

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

i przejdź /var/www/htmldo preferowanego katalogu

i zapisz to.

Po zapisaniu zmian po prostu uruchom ponownie serwer WWW Apache2 i gotowe :)

sudo service apache2 restart


Jeśli wolisz graficzny edytor tekstu, możesz po prostu zastąpić go sudo nanoprzez gksu gedit.

katze_sonne
źródło
1
@Paul Lo: Nie próbowałem tego na Ubuntu 13.10, tylko na Ubuntu 14.04; Ponieważ jestem prawie pewien, że przy pierwszej konfiguracji Apache (która była na Ubuntu 12.04), nie było takiego katalogu. Więc tak, myślę, że jest to dostępne tylko w Ubuntu 14.04 LTS i nowszych. Możesz jednak spojrzeć na inne odpowiedzi. Pozytywne opinie sugerują, że pomogli innym ludziom, być może także pracują z Ubuntu 13.10.
mozzbozz
1
Jednak dzięki za pytanie, właśnie edytowałem te informacje w odpowiedzi, aby nikt inny nie wpadł w pułapkę wypróbowania tego ze starszymi wersjami Ubuntu (y)
mozzbozz
3
@mozzbozzm, masz rację. Tylko 14.04. Naprawdę dziwny wybór, teraz nagle var/www/htmljako domyślny root. Czy faktycznie próbują marnować czas ludzi? :)
davidkonrad
4
Dostaję zabroniony błąd, You don't have permission to access / on this server.gdy uderzę w localhost: 80 w mojej przeglądarce. Czy muszę zmienić port?
Costa
3
@Costa I rozwiązać ten problem przez dodanie <Directory path_to_directory> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> w /etc/apache2/apache2.conf
Keenan Gebze
42

Musiałem edytować /etc/apache2/sites-available/default. Linie są takie same jak wspomniane przez RDL.

Nacięcie
źródło
3
Sugerowana edycja @pabloab miała następującą treść: „Apache 2.4 i nowsze wymagają .confna końcu i domyślnie mają 000-jako prefiks”. Rezultatem jest /etc/apache2/sites-available/000-default.conf. Nie przetestowałem tego, ale może to pomóc niektórym ludziom.
Nick
^^ to naprawiło. Gdzie jest udokumentowane, że wymagam .conf na końcu moich plików dostępnych na stronach?!? Mam około 20 wirtualnych hostów, które zostały wyłączone i offline po aktualizacji, a po kilku godzinach znalezienie tego i zmiana nazwy plików dostępnych w witrynie naprawiły to.
James Perih
23

Dotyczy to Ubunutu 14.04:

W pliku /etc/apache2/apache2.confpowinno być jak poniżej bez nazwy katalogu:

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

a do pliku /etc/apache2/sites-available/000-default.confnależy dołączyć niestandardową nazwę katalogu, tj. www:

DocumentRoot /home/username/www

Jeśli nie tak jak powyżej, pojawi się błąd podczas ładowania serwera: Forbidden You don't have permission to access / on this server

androsfat
źródło
Dziękuję kolego :) To zadziałało dla mnie w Ubuntu 16.04
Magesh Kumaar
2
Działa również na Debianie 8
androsfat
15

Właściwy sposób zmiany katalogu lub uruchomienia z wielu katalogów pod innym portem dla apache2 jest następujący:

W przypadku apache2 pliki konfiguracyjne znajdują się pod /etc/apache2i nie używają pojedynczego pliku konfiguracyjnego, jak w starszych wersjach, ale są podzielone na mniejsze pliki konfiguracyjne, /etc/apache2/apache2.confbędąc głównym plikiem konfiguracyjnym. Do obsługi plików z innego katalogu potrzebujemy nowego pliku conf wirtualnego hosta. Pliki conf wirtualnego hosta znajdują się w /etc/apache2/sites-available(nie edytuj plików w obrębie witryn). Domyślna instalacja apache wykorzystuje plik conf virtualhost 000-default.conf.

Rozpocznij od utworzenia nowego pliku virtualhost, kopiując domyślny plik virtualhost używany podczas domyślnej instalacji apache (ten, który działa na localhost na porcie 80). Przejdź do katalogu, /etc/apache2/sites-availablea następnie wykonaj kopię przez sudo cp 000-default.conf example.com.conf, teraz edytuj plik przez sudo gedit example.com.conf:

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

Dla zwięzłości usunąłem nieistotne wiersze z powyższego pliku. Oto DocumentRootścieżka do katalogu, z którego mają być obsługiwane pliki witryny, takie jak index.html.

Utwórz katalog, z którego chcesz udostępnić pliki, na przykład; mkdir example.comi zmień właściciela i domyślną grupę katalogu, np. jeśli zalogowana nazwa użytkownika to ubuntuzmiana uprawnień as sudo chown ubuntu:www-data example.com. Zapewnia to pełny dostęp do użytkownika ubuntui umożliwia odczyt i wykonywanie dostępu do grupy www-data.

Teraz edytuj plik apache conf, /etc/apache2/apache2.confwydając polecenie sudo gedit apache2.confi znajdź linię, <Directory /var/www/>a pod tagiem zamykającym </Directory>dodaj następujące:

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

Obecnie istnieją dwa polecenia włączyć lub wyłączyć virtualhost pliki konfiguracyjne, które są a2ensitei a2dissiteodpowiednio. Ponieważ nasz example.com.confplik korzysta z tego samego portu ( 80), co używany przez domyślny plik konfiguracyjny ( 000-default.conf), musimy wyłączyć domyślny plik konfiguracyjny, wydając poleceniesudo a2dissite 000-default.conf i włączyć plik conf wirtualnego hosta przezsudo a2ensite example.com.conf

Teraz uruchom ponownie lub ponownie załaduj serwer za pomocą polecenia sudo service apache2 restart. Teraz służy apache pliki z katalogu example.comna localhostna domyślnym porcie80 .

The a2ensiteKomenda zasadzie tworzy dowiązanie symboliczne do pliku conf z katalogu witryn obsługujących

Nie edytuj plików w obrębie bezpośredniego (lub * włączonego) directo, jak wskazano w tej odpowiedzi https://stackoverflow.com/a/41568701/2532763

Aby zmienić port i uruchomić z wielu katalogów na różnych portach:

Teraz, jeśli chcesz uruchomić katalog na innym porcie, zmień numer portu z 80 na 8080, edytując plik virtualhost jako:

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

oraz edytowanie /etc/apache2/ports.confi dodawanie Listen 8080tuż poniżej liniiListen 80

Teraz możemy włączyć domyślny plik conf wirtualnego hosta, który działa na porcie 80, ponieważ katalog example.com używa portu 8080, as sudo a2ensite 000-default.conf

Teraz uruchom ponownie lub ponownie załaduj serwer za pomocą polecenia sudo service apache2 restart. Teraz oba katalogi są dostępne z localhostilocalhost:8080

Lordvcs
źródło
4

Pracowałem z LAMP i aby zmienić folder główny dokumentu , edytowałem domyślny plik, który znajduje się w folderze / etc / apache2 / sites-available . Jeśli chcesz zrobić to samo, po prostu edytuj w następujący sposób

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>

Następnie, jeśli wpiszesz localhost w przeglądarce, załaduje zawartość * / home / username / new_root_folder * .

Shashidhara
źródło
4

Jeśli nie możesz znaleźć http.confi podążyć drogą Nicka.

Uruchom ponownie Apache za pomocą sudo service apache2 restart

Nitin
źródło
4

W przypadku apache2 na Linux Mint 17.3 Cinnamon 64-bit działają:

  1. W /etc/apache2/sites-available/otworzyć 000-default.confplik i zmienić głównego dokumentu do bezwzględnej ścieżki katalogu.

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

  2. W /etc/apache2/otwartym httpd.confi dodać <Directory>tag Twego katalog i zawierającą dokładnie te same ustawienia jako znacznika var/www.

    sudo vim /etc/apache2/apache2.conf

    Na mojej maszynie wyglądało to tak:


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

Uwaga: w pierwszym kroku prawdopodobnie chcesz zmienić katalog główny również w default-ssl.confpliku dla celów SSL. Ale o ile wiem, nie jest to wymagane do uruchomienia ogólnego środowiska programistycznego.

stackato
źródło
2

W wersji Apache 2.4.18 (Ubuntu).

1. przejdź do tego pliku /etc/apache2/apache2.conf i wyszukaj w <Directory /var/www/>katalogu ...

2. przejdź do /etc/apache2/sites-available/000-default.conf wyszukaj DocumentRoot /var/www/htmli zamień na swój DocumentRoot ....

habibun
źródło
Zrobiłem obie rzeczy. Nadal pokazuje Zakazane Nie masz uprawnień dostępu / na tym serwerze.
Programista
sprawdź uprawnienia do folderu, jeśli nie ma go w twoim katalogu domowym.
habibun
2

Jeśli używasz Ubuntu 16.04. Zaktualizuj 000-default.conf w katalogu / etc / apache2 / sites-available.

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

Shashank Saxena
źródło
1

Stworzyłem /var/wwwmiękki link do wymaganego katalogu (np. /users/username/projects) I potem wszystko poszło dobrze.

Naturalnie jednak /var/wwwtrzeba usunąć oryginał lub zmienić jego nazwę.

maan81
źródło
0

Jeśli ktoś zainstalował się LAMPw /optfolderze, /etc/apache2to nie jest to, czego szukasz.

Poszukaj httpd.confpliku w/opt/lampp/etc/httpd.conf .

Zmień wiersz w tym folderze i zapisz go z terminala.

Yogesh Gupta
źródło
0

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

ehacinom
źródło
0

Jeśli używasz Linux Mint (osobista opinia, ze wszystkich dystrybucji to mnie uszczęśliwia), wykonaj następujące czynności:

1- Idź do / etc / apache2 / sites-available i edytuj 000-default.conf 2- Wyszukaj DocumentRoot, na przykład DocumentRoot / var / www / html przechodzisz do odpowiedniego katalogu; 3- Otwórz terminal i wpisz: sudo service apache2 restart

ZMIENIONO ----- Zdaję sobie sprawę, że w Mint wybierasz /etc/apache2/apache.conf, zamieniasz / var / www na odpowiednią ścieżkę, niż restartujesz serwer (krok 3).

Otóż ​​to.

Marcelo Agimóvel
źródło
0

Dotyczy Ubuntu 14.04 i nowszych wersji. Przed wprowadzeniem jakichkolwiek zmian należy wykonać kopię zapasową następujących plików.

1. Otwórz /etc/apache2/apache2.confi wyszukaj <Directory /var/www/>dyrektywę i zamień ścieżkę na /home/<USERNAME>/public_html. Możesz użyć * zamiast.

2. Otwórz /etc/apache2/sites-available/000-default.confi zastąp DocumentRootwłaściwość wartości od /var/www/htmldo /home/<USERNAME>/public_html. Również <Directory /var/www/html>do<Directory /home/<USERNAME>/public_html .

3. Otwórz /etc/mods-available/php7.1.conf. Znajdź i skomentuj następujący kod

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

Nie włączaj php_admin_flag engine OFF flagi, ponieważ przyczyna jest wymieniona w komentarzu powyżej kodu dyrektywy. Również wersja php może być 5.0, 7.0 lub cokolwiek, co zainstalowałeś.

Utwórz public_htmlkatalog w home/<USERNAME>.

Uruchom ponownie usługę Apache, wykonując polecenie sudo service apache2 restart.

Przetestuj, uruchamiając przykładowy skrypt na serwerze.

użytkownik1184294
źródło
-3

Jeśli (podobnie jak ja) znajdujesz ten post za pośrednictwem Google:

Znalazłem go na /etc/apache2/sites-available/000-default.conf

Borkee
źródło
4
opisz szczegółową odpowiedź za pomocą osadzonego kodu zamiast wskazywać na plik zewnętrzny.
Christian MICHON