Instalar Drupal con Drush y un archivo por lotes
Uno de los procesos que más tiempo me ahorra en mi día a día es este. Consiste en un archivo por lotes de Ubuntu que me crea un Virtual Host de apache, un dominio en local y me instala Drupal 7 para hacer pruebas. Vamos a ver el código. Cómo sabéis siempre guardo mis scripts en /opt/scripts, y este lo he llamado install_drupal.sh. Así que sin más, ya podéis crearlo:
1 |
nano /opt/scripts/install_drupal.sh |
El código
Ahora voy a explicaros el funcionamiento. En primer lugar voy a obligar al usuario a meter un parámetro en el script, que va a ser el nombre del proyecto. Si no lo pasa, le diremos que ejecute de nuevo el proceso con el parámetro:
1 2 3 4 5 |
#!/bin/bash if [[ $# -eq 0 ]] ; then echo 'ERROR. Pasa como parámetro el nombre del proyecto.' exit 1 fi |
Si el proyecto ya existe es porque ya tenemos una carpeta con ese nombre en /var/www, así que le vamos a dar la posibilidad de borrarlo por completo, y si dice que no lo quiere borrar terminaremos la ejecución sin hacer nada. En caso contrario vamos a eliminar la carpeta del proyecto, desactivar su virtualhost de apache (cuyo nombre es el del proyecto también) y reiniciar apache. Después vamos a eliminar su nombre de dominio del archivo /etc/hosts (siempre responden al patron NOMBRE_DE_PROYECTO.ext) y vamos a eliminar su base de datos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
if [ -d "/var/www/$1" ] ; then echo 'ERROR. El proyecto ya existe. ¿Borrar (b)?' read BORRAR if [[ "$BORRAR" = "b" ]]; then rm /var/www/$1 -R a2dissite $1.conf rm /etc/apache2/sites-available/$1.conf /etc/init.d/apache2 restart sed -i "/^127\.0\.0\.1[[:space:]]$1.ext/d" /etc/hosts mysqladmin -uroot -pCONTRASEÑA drop $1 echo 'Proyecto borrado' fi exit 1 fi |
Lo siguiente va a ser utilizar drush para descargar la última versión de Drupal 7 en la carpeta /var/www/PROYECTO, colocarnos en ese directorio y realizar la instalación. Una vez finalizada vamos a instalar los módulos que me resultan imprescindibles, también mediante drush:
1 2 3 4 5 6 7 8 9 10 |
drush dl drupal-7 --destination=/var/www --drupal-project-rename=$1 cd /var/www/$1 drush site-install standard --db-url="mysql://root:CONTRASEÑA@localhost/$1" --account-name=admin --account-pass=$1 --site-name=$1 drush en admin_menu --y drush en admin_menu_toolbar --y drush dis toolbar --y drush en coffee --y drush en admin_views --y drush en fpa --y drush en module_filter --y |
Cómo podéis observar, tanto la base de datos, como la carpeta de instalación, como el nombre del sitio y la contraseña van a coger el nombre del proyecto que hemos pasado como parámetro. Para finalizar, voy a coger un virtualhost que ya tengo funcionando en apache para un proyecto llamado ‘proyectoinicial’ y lo voy a copiar con el nombre del proyecto, y después voy a sustituir todas las ocurrencias de ‘proyectoinicial’ en ese archivo por el nombre de mi nuevo proyecto. Después activo el nuevo virtualhost, y añado al archivo de hosts locales el nombre de mi nuevo dominio. Reinicio apache y ya lo tenemos.
1 2 3 4 5 6 |
cp /etc/apache2/sites-available/proyectoinicial.conf /etc/apache2/sites-available/$1.conf sed -i -- "s/proyectoinicial/$1/g" /etc/apache2/sites-available/$1.conf a2ensite $1.conf echo "127.0.0.1 $1.ext" >> /etc/hosts /etc/init.d/apache2 restart echo "EXITO. Prueba en tu navegador $1.ext" |
He terminado dejando un mensaje al usuario explicándole que utilice el nombre de su proyecto.ext en el navegador para acceder a su nueva instalación de Drupal 7. Ya solo nos queda guardar con CTRL+O y salir con CTRL+X.
Ahora le damos permiso de ejecución al archivo creado y lo ejecutamos para crear nuestro primer proyecto de forma automática:
1 |
/opt/scripts/install_drupal.sh miprimerproyecto |