sql >> Base de Datos >  >> RDS >> Mysql

Los enlaces del proyecto no funcionan en el servidor Wamp

Cómo crear un host virtual en WampServer

¡WAMPServer 3 ha hecho que este proceso sea mucho más fácil!

Puede hacer casi todo desde una utilidad provista como parte de WAMPServer.

  • Cree una carpeta dentro para contener su proyecto.sitio. 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 haya elegido, por ejemplo, C:\websites\project1\www o bajo c:\wamp\www\project1\www

  • Ahora abre localhost wampmanager->localhost y haga clic en el enlace Add a Virtual Host en la sección HERRAMIENTAS en la página de inicio.

Verá una página como esta:

  • Rellene los campos como se especifica en las instrucciones encima de cada campo

  • La configuración del host virtual se habrá creado para usted.

  • Ahora debe reiniciar el caché de DNS. Puede hacer esto desde los menús de wampmanager como este right click wampmanager->Tools->Restart DNS . La caché de DNS se reiniciará y luego Apache también se detendrá y reiniciará. Cuando el ícono de wampmanager se vuelve verde nuevamente, todo está completo.

  • Ahora debes crear un index.php simple archivo o instale su sitio en la carpeta que creó anteriormente.

  • Suponiendo que su VH se llamara project.dev Debería ver ese nombre debajo de Sus hosts virtuales Sección 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, por ejemplo, project1.dev y el sitio debería lanzarse.

Antiguo mecanismo 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 que cree un host virtual para cada uno de sus proyectos, incluso si los guarda en una \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

Para facilitar la vida de los principiantes que utilizan WampServer para aprender PHP Apache y MySQL, se sugirió que creara subcarpetas en \wamp\www\ carpeta.

wamp
  |-- www
       |-- Chapter1
       |-- Chapter2
       |-- etc

Estas subcarpetas luego se mostrarían 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 sencillos

Esto hizo la vida más fácil para el principiante completo, y fue perfectamente aceptable, por ejemplo, para los siguientes tutoriales para aprender a codificar 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 usaba este mecanismo, a menudo causaba problemas ya que la configuración de los sitios en vivo no coincidía con su configuración de desarrollo.

El problema para el 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 de cómo se llamara su subcarpeta. Esta mención 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 de la jerarquía de archivos del sitio web. 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 proyecto1 en wamp\www\project1 y se ejecuta incorrectamente como localhost/project1/index.php

Esto es lo que informarían algunos de los comandos de PHP en cuestión:

$_SERVER['HTTP_HOST'] = localhost
$_SERVER['SERVER_NAME'] = localhost
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www

Ahora, si hubiéramos definido correctamente ese sitio usando una definición de host virtual y lo hubiésemos ejecutado como http://project1 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, 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 Windows, con diferencias solo en dónde puede encontrar los archivos de configuración de Apache.

Hay 3 pasos para crear tu primer Virtual Host en Apache, y solo 2 si ya tienes uno definido.

  1. Cree las definiciones de host virtual
  2. Agregue su nuevo nombre de dominio al archivo HOSTS.
  3. Elimine el comentario de la línea en httpd.conf que incluye el archivo de definición de Virtual Hosts.

Paso 1 , Cree la(s) definición(es) de host virtual

Edite el archivo llamado httpd-hosts.conf que para WampServer vive en

\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 aún funcione, por lo que esa es la primera definición de VHOST que pondremos 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 haces para cada uno de tus proyectos cuando comienzas 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:Cada host virtual como su propio DocumentRoot definido. También hay muchos otros parámetros que puede agregar a una definición de Virtual Hosts, consulte la documentación de Apache.

Pequeño aparte

La forma en que funcionan los hosts virtuales en Apache:la primera definición en 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, hacer que localhost sea el primer dominio en el archivo hará que 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 EN

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 DNS A, pero solo es visible en este caso en esta PC específica.

Edite C:\windows\system32\drivers\etc\hosts

El archivo no tiene extensión y debe permanecer así. Tenga cuidado con el bloc de notas, ya que puede intentar agregar un .txt extensión si no tiene un editor mejor. Le sugiero que descargue 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 Ejecutar como administrador opción de menú.

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 loopback IPV4 127.0.0.1 y también la dirección de loopback IPV6 ::1 ya que Apache ahora es compatible con IPV6 y el navegador usará IPV4 o IPV6 o ambos. No tengo idea de cómo decide cuál usar, pero puede usar cualquiera si tiene activada la pila IPV6 y la mayoría de los sistemas operativos de Windows funcionan con XP SP3.

Ahora debemos decirle a Windows que actualice su caché de nombre de dominio, así que inicie una ventana de comando nuevamente usando Ejecutar como administrador opción de menú 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 recargarlo volverá a leer el archivo HOSTS, por lo que ahora sabe 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.

Encuentra esta línea en httpd.conf

# Virtual hosts
#Include conf/extra/httpd-vhosts.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 bien, si el ícono de WAMP en la bandeja del sistema no se vuelve VERDE nuevamente, significa que probablemente haya hecho algo mal en \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úmero de línea.

Inicie una ventana de comandos.

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 nuevos elementos de menú en el sistema de menús de wampmanager. Uno llamado 'Mis proyectos' que está activado de forma predeterminada. Y un segundo, llamado 'Mis servidores 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, inicia 'proyecto1' y no 'localhost/proyecto1' para que el enlace funciona, debemos crear una definición de host virtual para que este enlace realmente inicie ese sitio en su navegador, sin la definición de host virtual, es probable que inicie una búsqueda web del 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 (lo abordaremos 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
  • Encuentre este parámetro ;WAMPPROJECTSUBMENU , está en la sección '[Menu.Left]'.
  • Agregue este nuevo parámetro ;WAMPVHOSTSUBMENU ya sea antes o después del ;WAMPPROJECTSUBMENU parámetro.
  • Guarde el archivo.
  • Ahora haga clic derecho en el icono de wampmanager y seleccione 'Actualizar'. Si esto no agrega el menú, 'salir' y reinicie wampmanager.

Nota grande ¡El nuevo menú solo aparecerá si ya tiene definidos algunos hosts virtuales! De lo contrario, no notará 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 de \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 (cuidado con la unidad de red, son un poco más complicadas)

D:
MD websites
CD websites
MD example.com
CD example.com
MD www

Ahora copie el código de su sitio o comience a crearlo en \websites\example.com\www carpeta y defina su 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 llegar a la vida real. sitio desde esta PC, ya que dirigiría 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 las definiciones de VHOST, este cambio se aplicará solo a este sitio y a ningún otro. Muy útil para permitir que un cliente vea sus cambios durante una hora más o menos sin tener que copiarlos en el servidor en vivo. Esto significa que tenemos que editar este archivo manualmente para activar y desactivar este acceso en lugar de usar Poner en línea/ Elemento de menú sin conexión 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. una página de larga duración en alguna parte y está muy mal escrita y no se ejecutará con errores que se muestran en el navegador sin hacer un lío horrible de la página. Créanme, sitios como este existen y la gente todavía quiere que se mantengan mal . 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.