miércoles, 12 de febrero de 2014

Vagrant LAMP

Vagrant LAMP


Mi PC corre Windows 7. Me gustaría tener un entorno LAMP donde hacer desarrollo web cómodamente.

Instalo Vagrant de modo que comparta el directorio www (para el host, /vagrant/www para el guest), y sea /vagrant/www un virtualhost de apache2.
Edit (20140219): Los pasos que vienen a continuación se pueden automatizar. Por ejemplo, usando el mecanismo de Vagrant para provision mediante shell, como se muestra en este proyecto: https://github.com/akobashikawa/vagrant-shell-lamp

L

  1. Instalar Vagrant. Se puede descargar de http://www.vagrantup.com/
  2. En algún directorio crear el directorio precise32 (pudo haber sido otro nombre) y situarse en él.
  3. Ejecutar el comando:

    vagrant init precise32 http://files.vagrantup.com/precise32.box
    

    Si es la primera vez que se usa precise32.box, hay que esperar unos minutos mientras lo descarga. Luego de eso aparecerá el archivo Vagrantfile.
  4. Modificar Vagrantfile para que el puerto 80 del guest sea visible por el host y para que la carpeta /vagrant/www del guest sea escribible por apache2 y además visible por el host como www:
    ...
    config.vm.network :private_network, ip: "192.168.33.10"
    config.vm.synced_folder ".", "/vagrant", mount_options: ['dmode=777','fmode=666']
    ...
    
    
  5. Levantar el box:
    vagrant up
  6. Entrar al box:
    vagrant ssh

A

  1. En el box, actualizar los repositorios de instalación:
    $ sudo apt-get update
  2. Instalar apache2 (y curl):
    $ sudo apt-get install apache2
    $ sudo apt-get install curl
    $ curl http://localhost
  3. Crear el virtualhost host.dev:
    $ cd /etc/apache2/sites-available
    $ sudo cp default development
    $ sudo apt-get install vim
    $ sudo vim development

    <VirtualHost *:80>
      ServerAdmin webmaster@localhost
      ServerName host.dev
      DocumentRoot /vagrant/www
      <Directory />
        Options FollowSymLinks
        AllowOverride None
      </Directory>
      <Directory /vagrant/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
      </Directory>
    </VirtualHost>
    
    
    $ sudo a2ensite development
    $ sudo vim /etc/apache2/conf.d/fqdn

    ServerName localhost
    
    
    $ sudo service apache2 reload
    $ echo "Hello Vagrant!" > /vagrant/www/index.html
  4. Agregar el nuevo ServerName al hosts list del guest (/etc/hosts)
    ...
    127.0.0.1 host.dev
    ...
    
  5. Comprobar el acceso desde el guest:
    $ curl http://host.dev
  6. Agregar el nuevo ServerName al hosts list del host (C:/Windows/System32/drivers/etc/hosts)
    ...
    192.168.33.10 host.dev
    ...
    
  7. Comprobar el acceso desde el host, abriendo en un browser http://host.dev

P

  1. En el box, instalar el módulo php5 para apache2:
    $  sudo apt-get install libapache2-mod-php5
    Eso instala también php5 y los demás paquetes necesarios.
  2. Es posible que el paso anterior habilite automáticamente el módulo php5. Haga la prueba del paso 3. Si no funcionara, se puede ejecutar:
    $ sudo a2enmod php5
    $ sudo service apache2 restart
  3. Probar el módulo php5:
    $ echo "<?php phpinfo(); ?>" > /vagrant/www/phpinfo.php
    En el browser, acceder a http://host.dev/phpinfo.php

M

  1. En el box, instalar mysql y sus módulos para php5 y apache2:
    $ sudo apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql
    Aparecerá luego un diálogo solicitando ingresar un password para el usuario root.
  2. Para comprobar que se instaló mysql, ingresar a la consola:
    $ mysql -u root -p
    Ingresar con el password que se indicó para root. Para salir, ordene exit
  3. Para comprobar que se instaló el módulo php5-mysql, reiniciar apache:
    $ sudo service apache restart
  4. Revisar en el phpinfo la información del nuevo módulo instalado, accediendo a http://host.dev/phpinfo.php
  5. Instalar phpmyadmin:
    $ sudo apt-get install phpmyadmin
    Aparecerá luego un diálogo solicitando indicar el webserver que se usará. Indicar apache.
    Después, aparecerán otros diálogos para preguntar si se desea hacer la configuración, y para que se ingrese el password del usuario mysql root y también para el administrador de phpmyadmin.
  6. Para comprobar la instalación de phpmyadmin, en un browser, ingresar a http://host.dev/phpmyadmin, con el nombre de usuario root y el password que se le definió.