Jak skonfigurować hosta wirtualnego do rozwoju lokalnego


10

Ubuntu 11.04 zainstalowany z apache2 i zainstalowanymi wszystkimi odpowiednimi pakietami. Wypróbowałem większość blogów i uczyniłem google i inne fora moimi najlepszymi przyjaciółmi, ale nie jestem w stanie rozwiązać tego problemu.

Muszę skonfigurować nazwanego wirtualnego hosta w moim systemie lokalnym do programowania.

Utworzyłem katalog „vivek”, /var/wwwskopiowałem domyślny plik index.html i dokonałem edycji niektórych elementów.

Dodałem plik vivek.comw /etc/apache2/sites-availablenastępujący sposób:

# Ensure that Apache listens on port 80
Listen 80

# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80

<VirtualHost *:80>
ServerName www.vivek.com
DocumentRoot /var/www/vivek

# Other directives here
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/vivek/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

</VirtualHost>



<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

To znaczy dodałem następujące linie

# Ensure that Apache listens on port 80
Listen 80

# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80

<VirtualHost *:80>
ServerName www.vivek.com
DocumentRoot /var/www/vivek

# Other directives here
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/vivek/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

</VirtualHost>

Do domyślnego pliku, który był już obecny w folderze „dostępne strony” (przed edycją utworzył kopię zapasową pliku domyślnego)

Dodano to w pliku hosts obecnym w / etc / hosts

127.0.0.1 localhost
127.0.1.1 vivek-PC
127.0.0.1 www.vivek.com

Wykonano następujące operacje bez błędów:

root@vivek-PC:~# a2ensite vivek.com
Enabling site vivek.com.
Run '/etc/init.d/apache2 reload' to activate new configuration!
root@vivek-PC:~# /etc/init.d/apache2 reload
* Reloading web server config apache2

Kiedy wszedłem www.vivek.com, dał mi domyślny index.html w, /var/wwwale nie obecny w folderze / var / www / vivek, który jest edytowany.

Później edytowałem plik index.html, /var/wwwale nadal otrzymywałem ten sam plik index.html (domyślnie przed edycją). Wszystkie pliki index.html zostały edytowane, ale wydaje się, że Apache ma jakiś ukryty, który pojawia się, gdy o to poproszęwww.vivek.com

I ironiczne jest to, że po ponownym uruchomieniu - Apache wyszedł dobrze, ale moja strona - www.vivek.comnie pokazała się (nawet z index.html, który jest ukryty, Bóg wie gdzie !!) .. Teraz moja przeglądarka pokazuje „Nie można się połączyć „

Proszę o pomoc. Próbowałem to skonfigurować od tygodnia, ale bez powodzenia.

Odpowiedzi:


6

Później edytowałem index.html z / var / www, ale wciąż otrzymywałem ten sam index.html (domyślnie przed edycją). Wszystkie pliki index.html zostały edytowane, ale wydaje się, że Apache ma jakiś ukryty, który pojawia się, gdy żądam www.vivek.com

Czytając to, myślę, że przeglądasz buforowany plik. Zamiast naciskać F5lub naciskać przycisk Odśwież, pomiń pamięć podręczną podczas odświeżania, naciskając Ctrl+ F5.

Alternatywnie użyj programu wiersza polecenia curl(który nie jest domyślnie instalowany). Przykładowe użycie:

$ curl -i http://localhost/
HTTP/1.1 200 OK
Date: Sat, 02 Jul 2011 00:42:01 GMT
Server: Apache/2.2.17 (Ubuntu)
Last-Modified: Fri, 01 Jul 2011 04:12:49 GMT
ETag: "4507-b1-4a6fa3b114149"
Accept-Ranges: bytes
Content-Length: 177
Vary: Accept-Encoding
Content-Type: text/html

<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>

Jedna uwaga: wykonałem następujące czynności przy czystej instalacji apache:

  • Dodaj swój pierwszy plik konfiguracyjny do /etc/apache2/sites-available/vivek.com
  • (pozostaw /etc/apache2/sites-available/default nietknięte )
  • Biegać sudo a2ensite vivek.com
  • Biegać sudo /etc/init.d/apache reload

Dostaję takie same wiadomości jak ty. Jednak serwer nie uruchomił się. Po zatrzymaniu używania serwera sudo /etc/init.d/apache2 stopi ponownym uruchomieniu go za pomocą sudo /etc/init.d/apache2 startodmówił w ogóle uruchomienia. Przejrzenie dziennika błędów /var/log/apache2/error.logujawniło kilka błędów:

[Sat Jul 02 00:48:09 2011] [notice] Graceful restart requested, doing restart
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Sat Jul 02 00:48:09 2011] [warn] NameVirtualHost *:80 has no VirtualHosts
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

Więc port 80 wydaje się być w użyciu. Ale jeśli Apache nie został jeszcze uruchomiony, mogę potwierdzić, że nic nie nasłuchuje na porcie 80, uruchamiając sudo netstat -tpln. Przejrzałem konfigurację i doszedłem do wniosku, że wiersz Listen 80powinien zostać usunięty z pliku konfiguracyjnego /etc/apache2/sites-available/vivek.com. Następnie mogłem ponownie uruchomić serwer i używając curl, potwierdziłem, że serwer poprawnie odpowiada na żądania.

KISS , twój drugi blok vhost jest zbędny, ponieważ jest objęty /etc/apache2/sites-available/default. Następny plik konfiguracyjny to /etc/apache2/sites-available/vivek.com:

<VirtualHost *:80>
    ServerName www.vivek.com
    DocumentRoot /var/www/vivek

    # Other directives here
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/vivek/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

1

Istnieje skrypt, który upraszcza to dla Ciebie - https://github.com/RoverWire/virtualhost

To ostatecznie robi te same cienki, co wyjaśniono w podanych odpowiedziach, ale robi to tylko w jednym poleceniu, np. -

sudo virtualhost create mysite.local my_site

Umożliwia także usunięcie utworzonego hosta

sudo virtualhost delete mysite.local my_site

Zauważ, że „mój_katalog” zakłada, że ​​zaczyna się po / var / www

Więc jeśli folder witryny znajduje się w / var / www / my_site

Powinieneś uruchomić to (podaj ścieżkę katalogu bez / var / www) -

sudo virtualhost create mysite.local my_site

Możesz także zmodyfikować plik skryptu i usunąć domyślną ścieżkę „/ var / www”, aby przekazać bezwzględną ścieżkę do katalogu witryny

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.