Muchos de nosotros trabajamos con un servidor web local para nuestros proyectos, por lo general tenemos más de un proyecto en desarrollo, sea de trabajo o personal. En sistemas Unix la carpeta raíz del servidor se encentra en /var/www/ , al empezar en un nuevo proyecto creamos una nueva carpeta en la raíz del servidor /var/www/mi_blog/ accediendo a este desde la dirección http://localhost/mi_blog/ , trabajar de esta manera no es la más cómoda posible, configurando la directiva VirtualHost del servidor Apache podríamos usar http://mi_blog.com/ dando la sensación de trabajar con un dominio real.
Existen muchos tutoriales acerca de como configurar un VirtualHost en Apache, lo que yo vengo a mostrarles cómo crear un script que nos cree automáticamente un VirtualHost y la estructura de carpetas para todos los proyectos que nosotros deseemos, así ahorrándonos tiempo al tener que configurar manualmente cada VirtualHost para cada proyecto.
Script Bash para crear VirtualHost
Antes que nada es importante saber que es Bash.
Bash es un programa informático, cuya función consiste en interpretar órdenes, y un lenguaje de programación de consola. [Wikipedia]
Básicamente lo que queremos hacer es un script bash que nos cree un virtualhost, y la estructura de carpetas, para un proyecto. Entonces nuestro script tendrá que recibir como parámetros: el nombre del proyecto y el usuario al cuál pertenecerá el proyecto.
sudo vh miblog.com $USER
Donde vh será el nombre del script que crearemos, miblog.com es el nombre del proyecto y $USER es el usuario que ejecuta el script, esto es necesario para poder ponernos como propietario de la carpeta del proyecto y podamos escribir en la carpeta.
Bien teniendo en claro lo que nuestro script debe hacer y como funcionar, vamos a crearlo.
Lo primero que tenemos que hacer es crear nuestro script en la dirección /usr/local/bin/ para poder ejecutarlo desde cualquier parte de nuestro sistema.
Abrimos una terminal y escribimos el siguiente comando:
sudo touch /usr/local/bin/vh
Con esto habremos creado nuestro script, pero ahora tenemos que darle permisos para que pueda ejecutarse, lo hacemos con el siguiente comando:
sudo chmod +x /usr/local/bin/vh
Muy bien ahora nuestro script puede ejecutarse, pero aún no tiene ninguna instrucción dentro por lo que lo abriremos en un editor para poder escribir en ella:
sudo nano /usr/local/bin/vh
Se nos abrirá un editor de texto en la consola, estará vacío porque como dijimos aún no tiene ninguna instrucción, copiamos las siguientes instrucciones que serán las que realicen la creación del virtualhost y la estructura de archivos.
#!/bin/bash RED='\033[0;31m' NC='\033[0m' # No Color BLUE='\033[0;34m' printf "\n\t\t${BLUE}[CREANDO VIRTUAL HOST]${NC}\n\n" if [ $# -lt 2 ]; then printf "${RED}[ERROR]\t${NC}Parametros Incompletos\n" printf "${BLUE}[USO]\t${NC}sudo vh web.site \$USER\n" exit 1 fi if ! [ $(id -u) = 0 ]; then printf "${RED}[ERROR]\tPermisos denegados${NC}\n" printf "${BLUE}[USO]\t${NC}sudo vh web.site \$USER\n" exit 1 fi printf "\n${BLUE}>> Creando carpetas para [$1] ${NC}\n" mkdir -p /var/www/$1/public_html printf "\n${BLUE}>> Estableciendo permisos para usuario [$2] en sitio [$1] ${NC}\n" chown -R $2:$2 /var/www/$1/ chmod -R 755 /var/www printf "\n${BLUE}>> Creando archivos de configuracion para sitio [$1] ${NC}\n" touch /etc/apache2/sites-available/$1.conf echo "ServerAdmin admin@$1 ServerName $1 ServerAlias www.$1 DocumentRoot /var/www/$1/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined " > /etc/apache2/sites-available/$1.conf printf "\n${BLUE}>> Habilitando sitio [$1] ${NC}\n\n" a2ensite $1.conf printf "\n${BLUE}>> Reiniciando apache2 ${NC}\n" /etc/init.d/apache2 restart printf "\n${BLUE}>> Añadiendo sitio [$1] a host[local]${NC}\n" echo "127.0.0.1 $1" >> /etc/hosts printf "\n${BLUE}>> VIRTUALHOST PARA SITIO [http://$1] HABILITADO${NC}\n"
Una vez tengamos copiado las instrucciones, tenemos que guardar el archivo para ello presionamos la combinación de teclas Ctrl + o, luego presionamos Enter, y finalmente presionamos Ctrl + x para cerrar el archivo.
Con esto ya tenemos nuestro script listo para poder ser usado, abrimos la terminal y escribimos el comando:
sudo vh miblog.com $USER
Al ejecutar nos pedirá la contraseña(root), pues necesita permisos para poder crear los archivos de configuración del virtualhost. Si todo nos salio bien veremos una pantalla similar a esta:
- Es importante también especificar que el script nos resaltará error en dos situaciones, primero si no ejecutamos el script como root (con el comando sudo), segundo si no pasamos los 2 parámetros necesarios para la ejecución del script.
Error: Parámetros incompletos. |
Error: Falta comando sudo. |
Con esto tendremos nuestro sitio en funcionamiento en la dirección http://miblog.com, Es importante recalcar que nuestros archivos "index.html" o "index.php" tienen que ir en la carpeta:
/var/www/miblog.com/public_html/
➜ Aquí pueden descargar el script en GitHub: Script-VirtualHost
➜ Aquí tienen la documentación de bash: GNU-Bash
Comentarios
Publicar un comentario