Vamos a preparar nuestro ordenador para trabajar en el desarrollo de un proyecto web usando XAMPP, no importa si es para un Symfony PHP, Laravel, WordPress, Joomla, u otro proyecto PHP. Tenemos versiones de XAMPP para Windows, OSX, o como en este caso, un Ubuntu 16.04 Desktop.

Podemos preparar nuestro ordenador para desarrollar en local un proyecto web de varias formas.

  • Instalando y configurando todos los servicios de un servidor web en local (Apache, PHP, MySQL, y extras). Tiene el inconveniente de que nos llevará unas horas configurarlo todo, y la máquina queda un tanto “sucia”, al estar siempre ejecutando esos servicios, consumiendo memoria, se hace difícil probar una actualización del PHP ya que esto afecta a todos los proyectos. Por suerte, hay alternativas.
  • Usando una máquina virtual, con VirtualBox o VM Ware, configurada con todos los servicios. Es mejor opción que la anterior, el SO anfitrión queda más limpio, se pueden tener varias máquinas virtuales con diferentes versiones de PHP, MySQL o servidor web. Sus inconvenientes, que la máquina virtual consume bastante memoria y procesador, la velocidad de respuesta es peor, por ejemplo, si usas VirtualBox se relentiza mucho si compartes una carpeta con muchos archivos entre el anfitrión y la máquina virtual, lo cual afecta mucho a la respuesta del Apache (ya hablaremos en otro post sobre esta prueba), tarda un poco más en arrancar, los discos virtuales suelen ocupar varios Gb, lo que puede ser un inconveniente si queremos tener muchas máquinas distintas. Aun así, es una opción interesante. Si quieres probarlo, te recomiendo que veas el proyecto Vagrant y la máquina Homestead permite descargar y arrancar una máquina completamente configurada con Ubuntu 14.04, Git, PHP 7.0, HHVM, Nginx, MySQL, MariaDB, Sqlite3, Postgres, Composer, Node (con PM2, Bower, Grunt, and Gulp), Redis, Memcached y Beanstalkd.
  • Instalar XAMPP, un paquete preparado por Apache con los servicios necesarios para tener un entorno de desarrollo en PHP (o Perl) en local, configurado y listo para ejecutarse standalone. Las ventajas, ocupa poco, sólo se arranca cuando se necesita, al no ejecutarse en un entorno virtual su rendimiento es mejor al de la máquina virtual.

Tras haber probado las tres, sin duda me decanto por utilizar XAMPP, así que vamos a describir los pasos a seguir para su instalación en un Ubuntu 16.04.

(Extra) Está surgiendo una nueva manera de distribuir aplicaciones a través de Docker, un sistema a base de contenedores donde no sólo está el código fuente, sino cada uno de los servicios que necesita (servidor web, de base de datos, etc), de forma que tanto en local como en producción se trabaja exactamente con el mismo entorno (adiós al “en mi máquina funciona” :)). Esto también facilita el cambiar de proveedor de Hosting. Parece un sistema muy prometedor. Hablaremos en el futuro.

La instalación no puede ser más sencilla:

Pasos para instalar XAMPP

  • Descargarlo de la página de Apache. Hay varias versiones de PHP y MySQL para elegir, tanto para Windows, OSX como para Linux. En este momento, la versión con PHP7 para para Linux, nos descarga este archivo:
    xampp-linux-x64-7.0.6-0-<wbr />installer.run

    Contiene:
    Apache 2.4.18, MariaDB 10.1.13, PHP 7.0.6 + SQLite 2.8.17/3.7.17 + multibyte (mbstring) support, Perl 5.16.3, ProFTPD 1.3.4c, phpMyAdmin 4.5.2, OpenSSL 1.0.2h, GD 2.0.35, Freetype2 2.4.8, libpng 1.5.26, gdbm 1.8.3, zlib 1.2.8, expat 2.0.1, Sablotron 1.0.3, libxml 2.0.1, Ming 0.4.5, Webalizer 2.23-05, pdf class 0.11.7, ncurses 5.9, pdf class 0.11.7, mod_perl 2.0.8-dev, FreeTDS 0.91, gettext 0.18.1.1, IMAP C-Client 2007e, OpenLDAP (client) 2.4.21, mcrypt 2.5.8, mhash 0.9.9.9, cUrl 7.45.0, libxslt 1.1.28, libapreq 2.12, FPDF 1.7, ICU4C Library 4.8.1, APR 1.5.2, APR-utils 1.5.4

  • Marcar el archivo descargado como archivo ejecutable, bien sea desde las preferencias del archivo:

    captura-de-pantalla-de-2016-06-10-114208

    Dar permisos de ejecución a fichero en nautilus

    o mediante la consola de comandos:

    chmod +x xampp-linux-x64-7.0.6-0-<wbr />installer.run

    asistente-instalador-xampp

  • Ejecutarlo con privilegios de root, por lo tanto, usaremos sudo:
    sudo ./xampp-linux-x64-7.0.6-0-<wbr />installer.run

    Nos dirá que va a instalar los paquetes XAMPP Core Files, y nos pregunta si queremos instalar los XAMPP Developers Files. Por defecto instala los dos. Continuamos.
    Nos informa de que será instalado en la carpeta /opt/lampp.

    captura-de-pantalla-de-2016-06-10-115142

  • En apenas 1 minuto nos informará de que tenemos el XAMPP instalado y configurado. Nos preguntará si queremos arrancarlo (ya que arrancamos y apagamos a demanda). Si le indicas que si, te abrirá el navegador publicando una página de bienvenida:

    captura-de-pantalla-de-2016-06-10-115847

    Ejemplo página bienvenida XAMPP

¡¡ Listo !! Ya tienes un servidor web preparado para trabajar en local :). ¿Sencillo, verdad?. Ya puedes comenzar con tu proyecto Symfony, Laravel, WordPress, o lo que tengas pensado.

Algunos trucos

Ahora vamos a hacer algunas mejoras, para tenerlo todo un poco más cómodo.

Hacer accesible el intérprete de comandos PHP en todo el sistema operativo

De esta forma, el comando php estará disponible desde cualquier parte. Lo haremos creando un enlace simbólico:

sudo ln -s /opt/lampp/bin/php /usr/local/bin/php

Instalar XDEBUG

Un imprescindible, para poder debuguear vuestro código.
La forma de instalarlo varía dependiendo de la versión de XAMPP elegida, por lo que os remito al asistente de su página oficial donde os dirá los pasos a seguir, a partir de la información que os da el phpinfo().

Activar los Virtual Host de Apache (VHosts)

Los Virtual Host nos permiten tener mejor organizados los proyectos, cada uno con su dominio propio, cada uno apuntando a su carpeta propia, con ficheros de log separados, por ejemplo que nuestro “proyecto1” se publique en el dominio “proyecto1.dev”, y el “proyecto2” se publique en el dominio “proyecto2.dev”. (No mas proyectos publicados directamente en localhost :))

Editar el archivo httpd.conf:

sudo gedit /opt/lampp/etc/httpd.conf

y descomentar la línea:

Include etc/extra/httpd-vhosts.conf

Ahora, editar el archivo:

/opt/lampp/etc/extra/httpd-<wbr />vhosts.conf

… y configurar cada uno de los proyectos. Por ejemplo, digamos que queremos trabajar en un proyecto con WordPress en local, que ubicaremos en la carpeta /home/mi-usuario/sites/mi-wordpress, y que responda en la URL http://mi-wordpress.dev/. Añadiremos en el httpd-vhosts.conf:


    ServerAdmin admin@mi-wordpress.dev
    DocumentRoot /home/mi-usuario/sites/mi-<wbr />wordpress
    ServerName mi-wordpress.dev
    ServerAlias www.mi-wordpress.dev
    ErrorLog logs/mi-wordpress.dev-error_<wbr />log
    CustomLog logs/mi-wordpress.dev-access_<wbr />log common
    
       AllowOverride all
       Require all granted
    

Vamos a dar de alta en local el dominio mi-wordpress.dev para que apunte a la máquina local. Editamos el archivo hosts:

sudo gedit /etc/hosts

Y añadimos un nuevo dominio local:

127.0.0.1   mi-wordpress.dev
En este momento, el nuevo dominio debe responder a un ping:
PING mi-wordpress.dev (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.036 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.064 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.030 ms

Reiniciamos el xampp (cada vez que se cambie el vhost, es necesario reiniciar el Apache para que surja efecto):

sudo /opt/lampp/lampp restart

¡¡ Ya está !!. Para probarlo, creemos el fichero /home/mi-usuario/sites/mi-wordpress/phpinfo.php, con:

Hola mundo

Y escribamos en el navegador http://mi-wordpress.dev/phpinfo.php

Ejemplo sitio vhost apache funcionando phpinfo

Ejemplo sitio vhost apache funcionando phpinfo

Comandos que debes tener a mano

Arrancar los servicios (apache, mysql, ftp):

sudo /opt/lampp/lampp start

Parar los servicios:

sudo /opt/lampp/lampp stop

Reiniciar los servicios:

sudo /opt/lampp/lampp restart

Ficheros que puedes necesitar tocar

Configuración del PHP:

/opt/lampp/etc/php.ini

Configuración del Apache:

/opt/lampp/etc/httpd.conf
/opt/lampp/etc/extra/httpd-<wbr />xampp.conf

Configuración de los Virtual Host de Apache (VHosts):

/opt/lampp/etc/extra/httpd-<wbr />vhosts.conf

Desinstalación

Basta con borrar la carpeta:

sudo rm -rf /opt/lampp

Si conoces algún otro truco para hacer el entorno más cómodo, por favor, compártelo en los comentarios. 🙂