Come configurare un host virtuale per lo sviluppo locale


10

Ubuntu 11.04 installato con apache2 e tutti i relativi pacchetti installati. Ho provato la maggior parte dei blog e ho reso google e altri forum i miei migliori amici, ma non riesco a risolvere questo problema.

Devo impostare un host virtuale con nome sul mio sistema locale per lo sviluppo.

Ho creato la directory "vivek" /var/wwwe copiato il default index.html e modificato alcuni elementi.

Ho aggiunto il file vivek.comnel /etc/apache2/sites-availablemodo seguente:

# 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>

Cioè ho aggiunto queste seguenti righe

# 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>

Al file predefinito che era già presente nella cartella "siti disponibili" (è stato eseguito il backup del file predefinito prima di modificarlo)

Aggiunto questo nel file hosts presente in / etc / hosts

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

Eseguite le seguenti operazioni senza errori:

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

Quando sono entrato www.vivek.com, mi ha dato il file index.html predefinito /var/wwwma non uno presente nella cartella / var / www / vivek che è stato modificato.

Successivamente, ho modificato index.html da /var/wwwma stavo ancora ottenendo lo stesso index.html (impostazione predefinita prima della modifica). Tutti i file index.htmls sono stati modificati, ma Apache sembra averne uno nascosto che continua a presentarsi quando lo richiedowww.vivek.com

E la cosa ironica è che dopo il riavvio - Apache è arrivato bene ma il mio sito - www.vivek.comnon è stato visualizzato (anche con index.html che è nascosto, dio sa dove !!) .. Ora il mio browser mostra "Impossibile connettersi "

Aiutatemi. Sto provando a configurarlo da una settimana senza risultati positivi.

Risposte:


6

Successivamente, ho modificato index.html da / var / www ma stavo ancora ottenendo lo stesso index.html (impostazione predefinita prima della modifica). Tutti gli index.htmls sono stati modificati, ma Apache sembra averne uno nascosto che continua a venire quando chiedo per www.vivek.com

Leggendo questo, immagino che stai visualizzando un file memorizzato nella cache. Invece di premere F5o premere il pulsante Aggiorna, salta la cache durante l'aggiornamento premendo Ctrl+ F5.

In alternativa, utilizzare il programma da riga di comando curl(che non è installato per impostazione predefinita). Esempio di utilizzo:

$ 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>

Una nota: ho fatto quanto segue su un'installazione di Apache pulita:

  • Aggiungi il tuo primo file di configurazione a /etc/apache2/sites-available/vivek.com
  • (lasciare /etc/apache2/sites-available/default intatto )
  • Correre sudo a2ensite vivek.com
  • Correre sudo /etc/init.d/apache reload

Ricevo gli stessi tuoi messaggi. Tuttavia, il server non è stato avviato. Quando ha interrotto l'utilizzo del server sudo /etc/init.d/apache2 stope lo ha riavviato utilizzando sudo /etc/init.d/apache2 start, si è rifiutato di avviarsi affatto. Guardando nel registro errori sono /var/log/apache2/error.logemersi alcuni errori:

[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

Quindi la porta 80 sembra essere in uso. Ma se Apache non è ancora stato avviato, posso confermare che nulla è in ascolto sulla porta 80 eseguendo sudo netstat -tpln. Ho esaminato la configurazione e ho concluso che la riga Listen 80doveva essere rimossa dal file di configurazione /etc/apache2/sites-available/vivek.com. Successivamente, ho potuto riavviare il server e curl, utilizzando , ho confermato che il server risponde correttamente alle richieste.

KISS , il tuo secondo blocco vhost è ridondante in quanto è coperto da /etc/apache2/sites-available/default. Il prossimo file di configurazione è /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

C'è uno script che ti semplifica le cose: https://github.com/RoverWire/virtualhost

Questo alla fine fa le stesse cose spiegate dalle risposte fornite ma lo fa in un solo comando, ad es. -

sudo virtualhost create mysite.local my_site

Ti consente anche di eliminare un host che hai creato

sudo virtualhost delete mysite.local my_site

Basta notare che "my_dir" presuppone che inizi dopo / var / www

Quindi, se la cartella del tuo sito è in / var / www / my_site

Dovresti eseguirlo (passa il percorso della directory senza / var / www) -

sudo virtualhost create mysite.local my_site

È inoltre possibile modificare il file di script e rimuovere il percorso predefinito "/ var / www" in modo da poter passare un percorso assoluto alla directory del sito

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.