Como configurar um host virtual para desenvolvimento local

10

Ubuntu 11.04 instalado com o apache2 e todos os pacotes relevantes instalados. Eu experimentei a maioria dos blogs e fiz do google e de outros fóruns meus melhores amigos, mas não consigo resolver esse problema.

Eu preciso configurar um host virtual nomeado no meu sistema local para desenvolvimento.

Eu criei o diretório "vivek" em /var/www e copiei o index.html padrão e editei alguns elementos.

Eu adicionei o arquivo vivek.com em /etc/apache2/sites-available da seguinte forma:

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

Ou seja, adicionei estas linhas a seguir

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

Para o arquivo padrão que já estava presente na pasta "sites-available" (pegou o backup do arquivo padrão antes de editá-lo)

Adicionado isso no arquivo hosts presente em / etc / hosts

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

Realizou as seguintes operações sem erros:

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 eu digitei www.vivek.com , ele me deu o index.html padrão em /var/www , mas nenhum presente na pasta / var / www / vivek que foi editado.

Mais tarde, editei o index.html de /var/www , mas ainda estava recebendo o mesmo index.html (padrão antes da edição). Todos os index.htmls foram editados, mas o Apache parece ter algum oculto que continua aparecendo quando eu solicito www.vivek.com

E o mais irônico é que depois que eu reiniciei - o Apache apareceu bem, mas meu site - www.vivek.com não apareceu (mesmo com o index.html que está oculto, Deus sabe onde !!) .. Agora meu navegador está mostrando "Não é possível conectar"

Por favor, ajude.Eu tenho tentado configurar isso desde uma semana sem resultado.

    
por mvivekc 04.07.2011 / 13:26

2 respostas

6

  

Mais tarde, editei o index.html de / var / www, mas ainda estava recebendo o mesmo index.html (padrão antes da edição). Todos os index.htmls foram editados, mas o Apache parece ter algum oculto que continua aparecendo quando eu solicito o www.vivek.com

Ao ler isto, acho que você está vendo um arquivo em cache. Ao invés de pressionar F5 ou apertar o botão Refresh, pule o cache ao atualizar pressionando Ctrl + F5 .

Alternativamente, use o programa de linha de comando curl (que não é instalado por padrão). Exemplo de uso:

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

Uma observação: fiz o seguinte em uma instalação limpa do apache:

  • Adicione seu primeiro arquivo de configuração a /etc/apache2/sites-available/vivek.com
  • (deixe /etc/apache2/sites-available/default intacto )
  • Executar sudo a2ensite vivek.com
  • Executar sudo /etc/init.d/apache reload

Eu recebo as mesmas mensagens que você. No entanto, o servidor falhou ao iniciar. Ao parar o servidor usando sudo /etc/init.d/apache2 stop e iniciá-lo novamente usando sudo /etc/init.d/apache2 start , ele se recusou a iniciar. Procurando no log de erros /var/log/apache2/error.log revelou alguns erros:

[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

Portanto, a porta 80 parece estar em uso. Mas, se o Apache ainda não foi iniciado, posso confirmar que nada escuta na porta 80 executando sudo netstat -tpln . Revisei a configuração e concluí que a linha Listen 80 deve ser removida do seu arquivo de configuração /etc/apache2/sites-available/vivek.com . Depois disso, eu poderia iniciar o servidor novamente e usando curl , confirmei que o servidor está respondendo corretamente às solicitações.

KISS , seu segundo bloco vhost é redundante, pois é coberto por /etc/apache2/sites-available/default . O próximo arquivo de configuração é /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>
    
por Lekensteyn 04.07.2011 / 18:07
1

Existe um script que torna isso simples para você - link

Isso eventualmente faz o mesmo, como explica as respostas dadas, mas faz isso em apenas um comando, por exemplo. -

sudo virtualhost create mysite.local my_site

Também permite excluir um host que você criou

sudo virtualhost delete mysite.local my_site

Apenas observe que o "my_dir" assume que ele começa após / var / www

Então, se a pasta do seu site estiver em / var / www / my_site

Você deve executar isto (passar o caminho do diretório sem / var / www) -

sudo virtualhost create mysite.local my_site

Você também pode modificar o arquivo de script & amp; remover o caminho padrão "/ var / www" para que você possa passar um caminho absoluto para o diretório do site

    
por Nitish Dhar 25.05.2014 / 00:20