Como criar um Host Virtual no WampServer
O WAMPServer 3 tornou esse processo muito mais fácil!
Você pode fazer quase tudo em um utilitário fornecido como parte do WAMPServer.
Crie uma pasta dentro para conter seu project.site. Isso pode estar no C:\wamp\www\
diretório ou em uma pasta completamente separada como C:\websites
.
Crie uma pasta dentro do local que você escolheu EG C:\websites\project1\www
ou sob oc:\wamp\www\project1\www
Agora abra o localhost wampmanager->localhost
e clique no link Add a Virtual Host
na seção FERRAMENTAS na página inicial.
Você verá uma página como esta:
Preencha os campos conforme especificado nas instruções acima de cada campo
A configuração do Host Virtual terá sido criada para você.
Agora você deve reiniciar o Cache DNS. Você pode fazer isso nos menus do gerenciador de wamp como este right click wampmanager->Tools->Restart DNS
. O Cache DNS será reiniciado e o Apache também será interrompido e reiniciado. Quando o ícone do gerenciador de wamp ficar verde novamente, tudo estará concluído.
Agora você deve criar um index.php
arquivo simples ou instalar seu site na pasta que você criou acima.
Supondo que seu VH foi chamado, project.dev
você deve ver esse nome na seção Seus hosts virtuais da página inicial do WAMPServer.
Você pode iniciar o site a partir deste menu, ou apenas usar o novo Nome de Domínio na barra de endereço EG project1.dev
e o site deve ser iniciado.
Mecanismo WAMPServer 2.5 antigo, ou se você quiser fazer tudo manualmente
Houve uma mudança de conceito no WampServer 2.5 e superior e há um bom motivo para essa mudança!
No WampServer, agora é fortemente encorajado a criar um Host Virtual para cada um de seus projetos, mesmo que você os mantenha em uma \wamp\www\subfolder
estrutura.
Documentação de hosts virtuais
Exemplos de host virtual
A página inicial do WampServer ( \wamp\www\index.php
) agora espera que você tenha criado um Host Virtual para todos os seus projetos e, portanto, funcionará corretamente somente se você fizer isso.
História
A fim de tornar a vida mais fácil para iniciantes que usam WampServer para aprender PHP Apache e MySQL, foi sugerido que você crie subpastas sob a \wamp\www\
pasta.
wamp
|
|
|
|
Essas subpastas seriam então mostradas como links na página inicial do WampServer em um menu chamado 'Seus projetos' e esses links conteriam um link para localhost/subfoldername
.
Aceitável apenas para tutoriais simples
Isso tornava a vida mais fácil para o iniciante e era perfeitamente aceitável, por exemplo, para os seguintes tutoriais aprenderem a codificação PHP. No entanto, ele nunca foi planejado para ser usado durante o desenvolvimento de um site real que mais tarde você desejaria copiar para seu servidor hospedado ao vivo. Na verdade, se você usasse esse mecanismo, muitas vezes causava problemas, pois a configuração dos sites ativos não combinaria com a configuração de desenvolvimento.
O problema para o desenvolvimento de um site real.
A razão para isso é claro que a configuração padrão do DocumentRoot para wamp é
DocumentRoot "c:/wamp/www/"
independentemente de como sua subpasta foi chamada. Esse ment, que costumava usar código PHP que consultava a estrutura ou seu site, recebeu informações diferentes ao executar em seu WampServer de desenvolvimento do que receberia ao executar em um servidor hospedado ao vivo, onde a configuração do DocumentRoot aponta para a pasta no topo do site hierarquia de arquivos. Este tipo de código existe em muitos frameworks e CMS's, por exemplo WordPress e Joomla etc.
Por exemplo
Vamos dizer que temos um projeto chamado project1 mantido wamp\www\project1
e executado incorretamente comolocalhost/project1/index.php
Isso é o que seria relatado por alguns dos comandos PHP em questão:
$_SERVER['HTTP_HOST'] = localhost
$_SERVER['SERVER_NAME'] = localhost
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www
Agora, se tivéssemos definido corretamente esse site usando uma definição de Host Virtual e http://project1
o executássemos , os resultados no site de desenvolvimento WAMPServer corresponderão aos recebidos em um ambiente hospedado ao vivo.
$_SERVER['HTTP_HOST'] = project1
$_SERVER['SERVER_NAME'] = project1
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www/project1
Agora, essa diferença pode parecer trivial no início, mas se você fosse usar um framework como o WordPress ou um dos CMSs como o Joomla, por exemplo, isso pode causar problemas quando você muda seu site para um servidor ativo.
Como criar um Host Virtual no WampServer
Na verdade, isso deve funcionar basicamente da mesma forma para qualquer servidor Apache do Windows, com diferenças apenas em onde você pode encontrar os arquivos de configuração do Apache.
Existem 3 etapas para criar seu primeiro Host Virtual no Apache, e apenas 2 se você já tiver um definido.
- Crie a (s) definição (ões) de Host Virtual
- Adicione seu novo nome de domínio ao arquivo HOSTS.
- Remova o comentário da linha em httpd.conf que inclui o arquivo de definição de Hosts Virtuais.
Etapa 1 , criar a (s) definição (ões) de host virtual
Edite o arquivo chamado httpd-hosts.conf
que para WampServer vive em
\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf
(Os números de versão do Apache podem ser diferentes, envolva o cérebro antes de continuar)
Se esta for a primeira vez que você edita este arquivo, remova o código de exemplo padrão, ele é inútil.
Estou assumindo que queremos criar uma definição para um site chamado project1 que vive em
\wamp\www\project1
Muito importante, primeiro devemos ter certeza de que o localhost ainda funciona, de modo que essa é a primeira definição VHOST que colocaremos neste arquivo.
<VirtualHost *:80>
DocumentRoot "c:/wamp/www"
ServerName localhost
ServerAlias localhost
<Directory "c:/wamp/www">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
Agora definimos nosso projeto: e isso é claro você faz para cada um de seus projetos ao iniciar um novo.
<VirtualHost *:80>
DocumentRoot "c:/wamp/www/project1"
ServerName project1
<Directory "c:/wamp/www/project1">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
NOTA: Que cada Host Virtual conforme seu próprio DocumentRoot
definido. Existem também muitos outros parâmetros que você pode adicionar a uma definição de hosts virtuais, verifique a documentação do Apache.
Pequeno aparte
A maneira como os hosts virtuais funcionam no Apache: A primeira definição neste arquivo também será o site padrão, portanto, se o nome de domínio usado no navegador não corresponder a nenhum domínio hospedado virtualmente definido, tornando localhost o primeiro domínio no arquivo, portanto, é o site que é carregado se uma tentativa de hack apenas usar seu endereço IP. Portanto, se garantirmos que a segurança do Apache para este domínio esteja SEMPRE DEFINIDA PARA
Require local
qualquer hack casual de um endereço externo receberá um erro e não entrará em seu PC, mas se você digitar um domínio incorretamente, será exibida a página inicial do WampServer, porque você está no mesmo PC que o WampServer e portanto local
.
Etapa 2 :
Adicione seu novo nome de domínio ao arquivo HOSTS. Agora precisamos adicionar o nome de domínio que usamos na definição do Host Virtual ao arquivo HOSTS para que o Windows saiba onde encontrá-lo. Isso é semelhante à criação de um registro DNS A, mas só é visível neste caso neste PC específico.
Editar C:\windows\system32\drivers\etc\hosts
O arquivo não tem extensão e deve permanecer assim. Cuidado com o bloco de notas, pois ele pode tentar adicionar uma .txt
extensão se você não tiver um editor melhor. Eu sugiro que você baixe o Notepad ++, é um editor gratuito e muito bom.
Além disso, este é um arquivo protegido, portanto, você deve editá-lo com privilégios de administrador, portanto, inicie seu editor usando a opção de menu Executar como Administrador .
O arquivo de hosts deve ficar assim quando você tiver concluído essas edições
127.0.0.1 localhost
127.0.0.1 project1
::1 localhost
::1 project1
Observe que você deve ter definições aqui para o endereço de loopback de IPV4 127.0.0.1
e também o endereço de loopback de IPV6, ::1
já que o Apache agora reconhece IPV6 e o navegador usará IPV4 ou IPV6 ou ambos. Não tenho ideia de como ele decide qual usar, mas pode usar qualquer um dos dois se você tiver a pilha IPV6 ativada e a maioria dos sistemas operacionais de janela o fizer a partir do XP SP3.
Agora devemos dizer ao Windows para atualizar seu cache de nome de domínio, então abra uma janela de comando novamente usando a opção de menu Executar como Administrador e faça o seguinte.
net stop dnscache
net start dnscache
Isso força o Windows a limpar seu cache de nome de domínio e recarregá-lo; ao recarregá-lo, ele relerá o arquivo HOSTS, então agora ele saberá sobre o domínio project1
.
Etapa 3 : Remova o comentário da linha em httpd.conf que inclui o arquivo de definição de Hosts Virtuais.
Edite seu httpd.conf, use os menus wampmanager.exe para certificar-se de editar o arquivo correto.
Encontre esta linha em httpd.conf
E apenas remova o #
para descomentar essa linha.
Para ativar essa mudança na execução do Apache, devemos agora parar e reiniciar o serviço Apache.
wampmanager.exe -> Apache -> Service -> Restart Service
Agora, se o ícone WAMP na bandeja do sistema não ficar VERDE novamente, significa que provavelmente você fez algo errado no \wamp\bin\apache\apache2.4.9\conf\extra\httpd-hosts.conf
arquivo.
Nesse caso, aqui está um mecanismo útil para descobrir o que está errado. Ele usa um recurso do Apache exe (httpd.exe) para verificar seus arquivos de configuração e relatar erros por nome de arquivo e números de linha.
Abra uma janela de comando.
cd \wamp\bin\apache\apache2.4.9\bin
httpd -t
Então, corrija os erros e teste novamente até obter o resultado
Syntax OK
Agora, há mais uma coisa.
Na verdade, existem 2 novos itens de menu no sistema de menus do wampmanager. Um denominado 'Meus Projetos' que é ativado por padrão. E um segundo, chamado 'My Virtual Hosts' , que não é ativado por padrão.
'Meus projetos' listará qualquer subdiretório do diretório \ wamp \ www e fornecerá um link para lançar o site nesse subdiretório. Como eu disse antes, ele inicia 'project1` e não' localhost / project1 ', então para fazer o link funcionar, devemos criar uma definição de Host Virtual para fazer com que esse link realmente inicie aquele site em seu navegador, sem a definição de Host Virtual é provável Inicie uma pesquisa na web pelo nome do site como uma palavra-chave ou apenas retorne uma condição de site não encontrado.
O item de menu 'Meus hosts virtuais' é um pouco diferente. Ele pesquisa o arquivo que é usado para definir Hosts Virtuais (veremos isso em um minuto) e cria links de menu para cada parâmetro ServerName que encontra e cria um item de menu para cada um. Isso pode parecer um pouco confuso, pois depois de criarmos uma definição de Host Virtual para os subdiretórios da pasta \ wamp \ www, alguns itens aparecerão tanto no menu 'Meus Projetos' quanto no menu 'Meus Hosts Virtuais'.
Como faço para ativar esse outro menu 'Meus hosts virtuais'?
- Faça um backup do arquivo \ wamp \ wampmanager.tpl, caso se engane, é um arquivo muito importante.
- Edite o \ wamp \ wampmanager.tpl
- Encontre este parâmetro
;WAMPPROJECTSUBMENU
na seção '[Menu.Left]'.
- Adicione este novo parâmetro
;WAMPVHOSTSUBMENU
antes ou depois do ;WAMPPROJECTSUBMENU
parâmetro.
- Salve o arquivo.
- Agora clique com o botão direito no ícone do gerenciador de wamp e selecione 'Atualizar'. Se isso não adicionar o menu, 'saia' e reinicie o wampmanager.
Nota importante
O novo menu só aparecerá se você já tiver alguns hosts virtuais definidos! Caso contrário, você não verá nenhuma diferença até definir um VHOST.
Agora, se você levar isso à sua extensão lógica
Agora você pode mover o código do seu site completamente para fora da \wamp\
estrutura de pastas, simplesmente alterando o parâmetro DocumentRoot na definição VHOST. Então, por exemplo, você pode fazer isso:
Crie uma pasta no disco wamp ou em qualquer outro disco (cuidado com a unidade de rede, eles são um pouco mais complicados)
D:
MD websites
CD websites
MD example.com
CD example.com
MD www
Agora você copia o código do seu site ou começa a criá-lo na \websites\example.com\www
pasta e define o seu VHOST assim:
<VirtualHost *:80>
DocumentRoot "d:/websites/example.com/www"
ServerName example.dev
ServerAlias www.example.dev
<Directory "d:/websites/example.com/www">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
php_flag display_errors Off
php_flag log_errors On
php_value max_upload_size 40M
php_value max_execution_time 60
php_value error_log "d:/wamp/logs/example_com_phperror.log"
</VirtualHost>
Em seguida, adicione este novo domínio de desenvolvimento ao arquivo HOSTS:
127.0.0.1 localhost
::1 localhost
127.0.0.1 project1
::1 project1
127.0.0.1 example.dev
::1 example.dev
NOTA: Não é uma boa ideia usar um ServerName ou ServerAlias que seja igual ao seu nome de domínio ativo, pois se tivéssemos usado example.com como o ServerName, isso significaria que não poderíamos mais acessar o site real ao vivo a partir deste PC, pois direcionaria example.com para 127.0.0.1, ou seja, este PC e não para a Internet.
TAMBÉM: Veja que permiti que este site fosse acessado da internet a partir das definições do VHOST, esta mudança se aplicará apenas a este site e a nenhum outro. Muito útil para permitir que um cliente visualize suas alterações por uma hora ou mais sem ter que copiá-las para o servidor ativo. Isso significa que temos que editar esse arquivo manualmente para ativar e desativar esse acesso, em vez de usar o item de menu Colocar online / offline no wampmanager.
Além disso, adicionei algumas modificações à configuração do PHP, mais uma vez, que só se aplicam a este site. Muito útil ao manter um site com requisitos específicos, ao contrário de todos os outros sites que você mantém. Acho que podemos presumir a partir dos parâmetros usados que ele tem uma página de longa execução em algum lugar e está muito mal escrito e não será executado com erros sendo exibidos no navegador sem fazer uma bagunça horrível da página. Acredite em mim, sites como este existem e as pessoas ainda querem que eles sejam mantidos mal . Mas isso significa que só temos que alterar esses parâmetros para este site específico e não globalmente para todos os sites virtuais em execução no WampServer.