Cómo crear un host virtual en WampServer
¡WAMPServer 3 ha facilitado mucho este proceso!
Puede hacer casi todo desde una utilidad proporcionada como parte de WAMPServer.
Cree una carpeta dentro para contener su project.site. Esto puede estar bajo el C:\wamp\www\
directorio o en una carpeta completamente separada como C:\websites
.
Cree una carpeta dentro de la ubicación que ha elegido EG C:\websites\project1\www
o debajo delc:\wamp\www\project1\www
Ahora abra localhost wampmanager->localhost
y haga clic en el enlace Add a Virtual Host
debajo de la sección HERRAMIENTAS en la página de inicio.
Verá una página como esta:
Complete los campos como se especifica en las instrucciones sobre cada campo
La configuración del host virtual se habrá creado para usted.
Ahora debes reiniciar la caché de DNS. Puedes hacer esto desde los menús de wampmanager como esteright click wampmanager->Tools->Restart DNS
. La caché de DNS se reiniciará y luego Apache también se detendrá y reiniciará. Cuando el icono de wampmanager se vuelve verde nuevamente, todo está completo.
Ahora debe crear un index.php
archivo simple o instalar su sitio en la carpeta que creó anteriormente.
Suponiendo que se haya llamado a su VH, project.dev
debería ver ese nombre en la sección Sus hosts virtuales de la página de inicio de WAMPServer.
Puede iniciar el sitio desde este menú, o simplemente usar el nuevo nombre de dominio en la barra de direcciones EG project1.dev
y el sitio debe iniciarse.
Mecanismo antiguo de WAMPServer 2.5, o si desea hacerlo todo manualmente
¡Ha habido un cambio de concepto en WampServer 2.5 y superior y hay una buena razón para este cambio!
En WampServer ahora se recomienda ENCARECIDAMENTE crear un host virtual para cada uno de sus proyectos, incluso si los mantiene en un \wamp\www\subfolder
estructura.
Documentación de hosts virtuales
Ejemplos de host virtual
La página de inicio de WampServer ( \wamp\www\index.php
) ahora espera que haya creado un host virtual para todos sus proyectos y, por lo tanto, funcionará correctamente solo si lo hace.
Historia
Con el fin de hacer la vida más fácil a los principiantes que usan WampServer para aprender PHP Apache y MySQL, se sugirió que creara subcarpetas debajo de la \wamp\www\
carpeta.
wamp
|
|
|
|
Estas subcarpetas se mostrarían entonces como enlaces en la página de inicio de WampServer en un menú llamado 'Sus proyectos' y estos enlaces contendrían un enlace a localhost/subfoldername
.
Aceptable solo para tutoriales simples
Esto facilitó la vida al principiante completo y fue perfectamente aceptable, por ejemplo, para aquellos que siguen tutoriales para aprender la codificación PHP. Sin embargo, nunca fue diseñado para usarse al desarrollar un sitio web real que luego desearía copiar a su servidor alojado en vivo. De hecho, si utilizara este mecanismo, a menudo causaba problemas, ya que la configuración de los sitios en vivo no coincidiría con la configuración de desarrollo.
El problema del desarrollo de sitios web reales.
La razón de esto es, por supuesto, que la configuración predeterminada de DocumentRoot para wamp es
DocumentRoot "c:/wamp/www/"
independientemente del nombre de su subcarpeta. Este mensaje que a menudo usaba código PHP que consultaba la estructura o su sitio recibía información diferente cuando se ejecutaba en su WampServer de desarrollo a la que recibiría cuando se ejecutaba en un servidor alojado en vivo, donde la configuración de DocumentRoot apunta a la carpeta en la parte superior del sitio web jerarquía de archivos. Este tipo de código existe en muchos marcos y CMS, por ejemplo, WordPress y Joomla, etc.
Por ejemplo
Digamos que tenemos un proyecto llamado project1 retenido wamp\www\project1
y ejecutado incorrectamente comolocalhost/project1/index.php
Esto es lo que reportarían algunos de los comandos PHP en cuestión:
$_SERVER['HTTP_HOST'] = localhost
$_SERVER['SERVER_NAME'] = localhost
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www
Ahora bien, si hubiéramos definido correctamente ese sitio utilizando una definición de host virtual y lo http://project1
ejecutáramos, los resultados en el sitio de desarrollo de WAMPServer coincidirán con los recibidos en un entorno alojado en vivo.
$_SERVER['HTTP_HOST'] = project1
$_SERVER['SERVER_NAME'] = project1
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www/project1
Ahora bien, esta diferencia puede parecer trivial al principio, pero si usara un marco como WordPress o uno de los CMS como Joomla, por ejemplo, esto puede causar problemas cuando mueve su sitio a un servidor en vivo.
Cómo crear un host virtual en WampServer
En realidad, esto debería funcionar básicamente igual para cualquier servidor Apache de wndows, con diferencias solo en el lugar donde puede encontrar los archivos de configuración de Apache.
Hay 3 pasos para crear su primer host virtual en Apache, y solo 2 si ya tiene uno definido.
- Cree las definiciones de host virtual
- Agregue su nuevo nombre de dominio al archivo HOSTS.
- Quite el comentario de la línea en httpd.conf que incluye el archivo de definición de Virtual Hosts.
Paso 1 , crear las definiciones de host virtual
Edite el archivo llamado en el httpd-hosts.conf
que reside WampServer
\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf
(Los números de versión de Apache pueden diferir, active el cerebro antes de continuar)
Si es la primera vez que edita este archivo, elimine el código de ejemplo predeterminado, no sirve de nada.
Supongo que queremos crear una definición para un sitio llamado proyecto1 que vive en
\wamp\www\project1
Muy importante, primero debemos asegurarnos de que localhost todavía funciona, por lo que es la primera definición de VHOST que colocaremos en este archivo.
<VirtualHost *:80>
DocumentRoot "c:/wamp/www"
ServerName localhost
ServerAlias localhost
<Directory "c:/wamp/www">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
Ahora definimos nuestro proyecto: y esto, por supuesto, lo hace para cada uno de sus proyectos cuando comienza uno nuevo.
<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 como propio DocumentRoot
definido. También hay muchos otros parámetros que puede agregar a una definición de hosts virtuales, consulte la documentación de Apache.
Pequeño aparte
La forma en que funcionan los hosts virtuales en Apache: la primera definición de este archivo también será el sitio predeterminado, por lo que, si el nombre de dominio utilizado en el navegador no coincide con ningún dominio alojado virtualmente definido, lo que hará que localhost sea el primer dominio del archivo. es el sitio que se carga si un intento de pirateo solo usa su dirección IP. Entonces, si nos aseguramos de que la seguridad de Apache para este dominio esté SIEMPRE CONFIGURADA
Require local
cualquier pirateo casual desde una dirección externa recibirá un error y no entrará en su PC, pero si escribe mal un dominio, se le mostrará la página de inicio de WampServer, porque está en la misma PC que WampServer y por lo tanto local
.
Paso 2 :
Agregue su nuevo nombre de dominio al archivo HOSTS. Ahora necesitamos agregar el nombre de dominio que hemos usado en la definición de Virtual Host al archivo HOSTS para que Windows sepa dónde encontrarlo. Esto es similar a crear un registro A de DNS, pero solo es visible en este caso en esta PC específica.
Editar C:\windows\system32\drivers\etc\hosts
El archivo no tiene extensión y debería permanecer así. Tenga cuidado con el bloc de notas, ya que puede intentar agregar una .txt
extensión si no tiene un editor mejor. Te sugiero que descargues Notepad ++, es gratis y es un muy buen editor.
Además, este es un archivo protegido por lo que debe editarlo con privilegios de administrador, así que inicie su editor usando la opción de menú Ejecutar como administrador .
El archivo de hosts debería verse así cuando haya completado estas ediciones
127.0.0.1 localhost
127.0.0.1 project1
::1 localhost
::1 project1
Tenga en cuenta que debe tener definiciones aquí para la dirección de bucle invertido IPV4 127.0.0.1
y también la dirección de bucle invertido IPV6::1
ya que Apache ahora es compatible con IPV6 y el navegador utilizará IPV4 o IPV6 o ambos. No tengo idea de cómo decide cuál usar, pero puede usarlo si tiene la pila IPV6 encendida, y la mayoría de los sistemas operativos de ventanas lo hacen a partir de XP SP3.
Ahora debemos decirle a Windows que actualice su caché de nombre de dominio, así que inicie una ventana de comando nuevamente usando la opción de menú Ejecutar como administrador nuevamente, y haga lo siguiente.
net stop dnscache
net start dnscache
Esto obliga a Windows a borrar su caché de nombre de dominio y volver a cargarlo, al volver a cargarlo, volverá a leer el archivo HOSTS para que ahora sepa sobre el dominio. project1
.
Paso 3 : Quite el comentario de la línea en httpd.conf que incluye el archivo de definición de Virtual Hosts.
Edite su httpd.conf, use los menús de wampmanager.exe para asegurarse de editar el archivo correcto.
Encuentre esta línea en httpd.conf
Y simplemente elimine el #
para descomentar esa línea.
Para activar este cambio en su ejecución de Apache, ahora debemos detener y reiniciar el servicio de Apache.
wampmanager.exe -> Apache -> Service -> Restart Service
Ahora, si el ícono de WAMP en la bandeja del sistema no se vuelve VERDE nuevamente, significa que probablemente ha hecho algo mal en el \wamp\bin\apache\apache2.4.9\conf\extra\httpd-hosts.conf
archivo.
Si es así, aquí hay un mecanismo útil para averiguar qué está mal. Utiliza una función de Apache exe (httpd.exe) para verificar sus archivos de configuración e informar errores por nombre de archivo y números de línea.
Inicie una ventana de comando.
cd \wamp\bin\apache\apache2.4.9\bin
httpd -t
Así que corrija los errores y vuelva a probar hasta que obtenga el resultado
Syntax OK
Ahora hay una cosa más.
En realidad, hay 2 elementos de menú nuevos en el sistema de menús de wampmanager. Uno llamado 'Mis proyectos' que está activado de forma predeterminada. Y un segundo, llamado 'Mis hosts virtuales' , que no está activado por defecto.
'Mis proyectos' enumerará cualquier subdirectorio del directorio \ wamp \ www y proporcionará un enlace para iniciar el sitio en ese subdirectorio. Como dije anteriormente, lanza 'project1` y no' localhost / project1 ', por lo que para que el enlace funcione debemos crear una definición de host virtual para que este enlace lance realmente ese sitio en su navegador, sin la definición de host virtual es probable que Inicie una búsqueda web para el nombre del sitio como palabra clave o simplemente devuelva una condición de sitio no encontrado.
El elemento del menú "Mis hosts virtuales" es un poco diferente. Busca el archivo que se utiliza para definir los hosts virtuales (llegaremos a eso en un minuto) y crea enlaces de menú para cada parámetro ServerName que encuentra y crea un elemento de menú para cada uno. Esto puede parecer un poco confuso, ya que una vez que creamos una definición de host virtual para los subdirectorios de la carpeta \ wamp \ www, algunos elementos aparecerán tanto en el menú 'Mis proyectos' como en el menú 'Mis hosts virtuales'.
¿Cómo activo este otro menú "Mis hosts virtuales"?
- Haga una copia de seguridad del archivo \ wamp \ wampmanager.tpl, en caso de que cometa un error, es un archivo muy importante.
- Edite \ wamp \ wampmanager.tpl
- Encuentra este parámetro
;WAMPPROJECTSUBMENU
, está en la sección '[Menu.Left]'.
- Agregue este nuevo parámetro
;WAMPVHOSTSUBMENU
antes o después del;WAMPPROJECTSUBMENU
parámetro.
- Guarda el archivo.
- Ahora haga clic derecho en el icono de wampmanager y seleccione 'Actualizar'. Si esto no agrega el menú, 'salga' y reinicie wampmanager.
Gran nota
El nuevo menú solo aparecerá si ya tiene definidos algunos hosts virtuales! De lo contrario, no verá ninguna diferencia hasta que defina un VHOST.
Ahora, si llevas esto a su extensión lógica
Ahora puede mover el código de su sitio web completamente fuera del \wamp\
estructura de carpetas simplemente cambiando el parámetro DocumentRoot en la definición de VHOST. Entonces, por ejemplo, podrías hacer esto:
Cree una carpeta en el disco wamp o en cualquier otro disco (tenga cuidado con la unidad de red, son un poco más complicados)
D:
MD websites
CD websites
MD example.com
CD example.com
MD www
Ahora copia el código de tu sitio o comienza a crearlo en la \websites\example.com\www
carpeta y define tu VHOST así:
<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>
Luego agregue este nuevo dominio de desarrollo al archivo 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: No es una buena idea usar un ServerName o ServerAlias que sea el mismo que su nombre de dominio en vivo, ya que si hubiéramos usado example.com como ServerName, significaría que ya no podríamos acceder al sitio real en vivo desde este PC, ya que dirigiría example.com a 127.0.0.1, es decir, a esta PC y no a Internet.
TAMBIÉN: Vea que he permitido que se acceda a este sitio desde Internet desde dentro de las definiciones de VHOST, este cambio se aplicará solo a este sitio y no a otro. Muy útil para permitir que un cliente vea sus cambios durante aproximadamente una hora sin tener que copiarlos al servidor en vivo. Esto significa que tenemos que editar este archivo manualmente para activar y desactivar este acceso en lugar de usar el elemento de menú Poner en línea / fuera de línea en wampmanager.
También agregué algunas modificaciones a la configuración de PHP, nuevamente, eso solo se aplicará a este sitio. Muy útil cuando se mantiene un sitio con requisitos específicos a diferencia de todos los otros sitios que mantiene. Supongo que podemos suponer, a partir de los parámetros utilizados, que tiene una página de larga ejecución en algún lugar y que está muy mal escrita y no se ejecutará con errores que se muestren en el navegador sin hacer un desastre horrible en la página. Créame, existen sitios como este y la gente todavía quiere que se mantengan con urgencia . Pero esto significa que solo tenemos que cambiar estos parámetros para este sitio específico y no globalmente para todos los sitios virtuales que se ejecutan en WampServer.