2008-09-23 18 views
10

Me han impresionado los screencasts para Rails que demuestran el servidor web incorporado y la base de datos para permitir el desarrollo y las pruebas en la máquina local. ¿Cómo puedo obtener una instancia de Apache para ejecutar un directorio de proyecto como DocumentRoot, y tal vez servir los archivos en el puerto 8080 (o algo similar)?¿Configura Apache para desarrollo/pruebas locales?

La razón por la que estoy preguntando es porque voy a probar CodeIgniter, y me gustaría usarlo para múltiples proyectos. Prefiero no ocupar el DocumentRoot de mi máquina con cada uno. También son bienvenidas las sugerencias sobre cómo hacer migraciones de bases de datos.


Gracias por su respuesta hasta el momento. Debo aclarar que estoy en Mac OS X. Parece que WAMP es solo para Windows. Además, XAMPP parece una gran manera de instalar Apache y muchas otras herramientas web, pero no veo una forma de cargar una instancia para servir un directorio de proyecto. Mac OS X tiene tanto Apache como PHP instalados. Solo estoy buscando la forma de que sirva un proyecto en un puerto no estándar.

Acabo de encontrar MAMP Pro que hace lo que quiero, pero un enfoque más minimalista sería mejor si es posible. ¿Alguien tiene un archivo httpd.conf que se puede editar y soltar en un directorio de proyecto?

Además, lamento haber publicado esa pregunta sobre la migración de la base de datos. Lo que espero encontrar es algo que me permitirá impulsar los cambios de esquema en un servidor en vivo sin perder los datos existentes. Sospecho que esto es difícil y altamente dependiente de los factores ambientales.

Respuesta

24

Tu Mac incluye tanto un servidor Web Apache y una acumulación de PHP. Es una de las grandes razones por las que los desarrolladores web aman a la plataforma.

Dado que está utilizando Code Igniter, querrá PHP 5, que es la versión predeterminada de PHP incluida con 10.5. Si está en una versión anterior del sistema operativo, vaya al entropy.ch e instale el paquete PHP5 proporcionado.

A continuación, tendrá que activar Apache. En el panel de preferencias para compartir, activa el uso compartido de la web personal. Esto iniciará Apache en su máquina local.

A continuación, deberá configurar algunas URL de desarrollo falsas para usar en sus sitios. Utilizo el falso TLD .dev para esto (por ejemplo, stackoverflow.dev). Edite su archivo/etc/hosts y agregue las siguientes líneas

127.0.0.1 www.example.dev 
127.0.0.1 example.dev 

Esto apunta a las URL anteriores en su máquina local. El último paso es configurar apache. Específicamente, habilitando el hosting virtual con nombre, habilitando PHP y configurando algunos hosts virtuales. Si usó el paquete PHP de entropía, habilitar PHP ya estará hecho. De lo contrario, deberá editar su archivo http.conf como se describe en here. Básicamente, estás eliminando las líneas que cargarán el módulo PHP.

Cada vez que realice un cambio en la configuración de Apache, deberá reiniciar Apache para que los cambios surtan efecto. En una ventana de terminal, escriba el siguiente comando

sudo apachectl graceful 

Esto reiniciará con gracia apache. Si ha cometido un error de sintaxis en el archivo de configuración, apache no se reiniciará. Se pueden destacar los problemas de configuración con

sudo apachectl configtest 

Así, con PHP habilitado, tendrá que activar el NamedVirtualHosts. Esto permitirá que apache responda a múltiples URL. Busque la siguiente línea (o similar) en su archivo http.conf y descomentela.

#NameVirtualHost * 

Finalmente, tendrá que decirle a apache dónde debería buscar los archivos para sus nuevos hosts virtuales. Puede hacerlo agregando lo siguiente a su archivo http.conf. NOTA: Creo que es una buena práctica establecer reglas de configuración como esta en un archivo separado y usar la directiva include para incluir los cambios. Esto evitará que las actualizaciones automáticas eliminen sus cambios.

<VirtualHost *> 
    DocumentRoot /Users/username/Sites/example.dev 
    ServerName example.dev 
    ServerAlias www.example.dev  
</VirtualHost> 

se puede especificar cualquier carpeta que el DocumentRoot, pero me resulta conveniente utilizar la carpeta de sitios personales, como ya se ha configurado con los permisos correctos para incluir archivos.

+0

Creo que este es el mejor enfoque, ya que no tiene que meterse con DNS, preocuparse por su dirección IP dinámica, ni nada. Puede ejecutar su servidor web local y escribir sus URL 'dev' al igual que son sitios web reales. – JayTee

+0

Este es el enfoque más simple, y el que recomiendo sinceramente también :) – Aeon

+0

buen pensamiento. También me gusta la tuya mejor –

0

Puede usar un paquete de instalación inicial bajo como XAMPP y ejecutarlo como una instancia separada. Hay muchos otros proyectos similares también.

0

Para PHP tiene varios paquetes de alta calidad para implementar Apache + Mysql + PHP, como WAMP y XAMPP. Personalmente, descargo los últimos binarios de cada uno e instalo manualmente para tener un control más detallado. Hay muchos tutoriales en línea sobre cómo manejar eso.

Las migraciones de bases de datos deberían ser sencillas: volcar la base de datos en el servidor, ya sea en la línea de comandos o a través de una interfaz como PHPMyAdmin, y exportarla de forma similar (se recomienda PHPMyAdmin si no tiene experiencia con el comando Mysql línea).

2

También descargo los últimos binarios para cada uno y los configuro manualmente. He descubierto que es un proceso sencillo, siempre que sepa un poco sobre la configuración de Apache.

En mi máquina de desarrollo, tengo la configuración de Apache con name-based virtual hosting. También tengo una cuenta dyndns.org que asigna mi dominio de desarrollo a mi máquina local. DynDNS proporciona un dominio comodín y, por lo tanto, utilizando hosts virtuales basados ​​en nombres, puedo crear fácilmente tantos sitios (con raíces de documentos independientes) para tantos dominios de desarrollo como quiera, todos ejecutándose fuera de la instancia de Apache.

p. Ej. configuración de Apache para los anfitriones virtuales podría ser algo como

NameVirtualHost *:80 

<virtualhost *:80> 
ServerName site1.mydyndns.dyndns.org 
DocumentRoot /site1/documentroot 
</virtualhost> 

<virtualhost *:80> 
ServerName site2.mydyndns.dyndns.org 
DocumentRoot /site2/documentroot 
</virtualhost> 

Ésta ha sido la forma más rápida y más fácil para mí mantener fácilmente a muchos sitios de desarrollo en mi máquina local.

Espero que tenga sentido.

Cheers, Kelly.


+0

Esa es una buena idea y tiene sentido; sin embargo, mi máquina de desarrollo es una computadora portátil y cambia de IP con demasiada frecuencia para que DNS se mantenga al día. Sin embargo, podría ser posible configurar mi propio servidor DNS en mi máquina y usarlo en su lugar. –

1

No uso Macos, pero sí uso Apache. En mi archivo de configuración de apache (en linux normalmente está en /etc/apache2/apache2.conf), busque una referencia a un archivo llamado ports.conf. Encontrar este archivo y agregue la línea

Escuchar 8080

A continuación, reinicie el proceso de Apache. Después de eso deberías estar en el negocio. Me disculpo por adelantado si esto no funciona en un Mac :)

+0

Eso funcionaría también en Mac OS X, pero solo cambiaría el puerto al que sirve el proceso httpd predeterminado. Mi objetivo es tener un puerto separado para cada proyecto. Sospecho que implicará un httpd.conf por separado para cada proyecto también. –

6

Lo siento Kyle, no tengo suficiente credibilidad para responder directamente a su comentario. Pero si desea que cada proyecto se publique en un puerto diferente, intente configurar su configuración de host virtual exactamente como la anterior de Kelly (sin las cosas dns), excepto que en lugar de 80, otorgue a cada host virtual su propio número de puerto, suponiendo que tiene agregado este puerto a su archivo ports.conf

NameVirtualHost * 

<virtualhost *:80> 
DocumentRoot /site1/documentroot 
</virtualhost> 

<virtualhost *:81> 
DocumentRoot /site2/documentroot 
</virtualhost> 

<virtualhost *:82> 
DocumentRoot /site3/documentroot 
</virtualhost> 

<virtualhost *:83> 
DocumentRoot /site4/documentroot 
</virtualhost> 

Esperamos que ayuda:/

+0

No es exactamente lo que esperaba, pero es lo suficientemente bueno. Creo que lo usaré cuando mi prueba de MAMP Pro se agote. PD ahora debería tener suficientes representantes para comentar :) –

0

Podría recomendar el uso de un dispositivo virtual LAMP separado para cada entorno de desarrollo con el que desee experimentar. Ejecútelos en el servidor VMware o VirtualBox.

Cuestiones relacionadas