Creación de hosts virtuales Apache con opciones de habilitar/deshabilitar Vhosts en RHEL/CentOS 7.0


Alojamiento virtual permite a Apache Weberver ofrecer contenido diferente según la dirección IP, el nombre de host o el número de puerto utilizado. Esta guía utilizará un enfoque similar a Debian para habilitar y administrar hosts virtuales en Red Hat Enterprise Linux/CentOS 7.0 mediante la creación de dos directorios en la ruta /etc/httpd/, que mantener todas las configuraciones de archivos de sitios web habilitadas y deshabilitadas: sitios disponibles y sitios habilitados , y dos tipos de scripts para que actúen como comandos, uno que habilita y otro que deshabilita virtual especificado hosts: a2ensite y a2dissite . Este enfoque tiene algunas ventajas porque ya no tiene que meterse con el archivo de configuración httpd y cada host virtual tiene su propio archivo de configuración que se puede encontrar en una sola ubicación (los hosts habilitados son solo enlaces simbólicos) que hacen que el proceso de habilitar, deshabilitar, crear o eliminándolos muy manejable.

  1. Instalación básica de LAMP en RHEL/CentOS 7.0

Crear y administrar hosts virtuales Apache en RHEL/CentOS 7

1. Para comenzar, comience ingresando la ruta /etc/httpd/, cree directorios de sitios disponibles y habilitados para sitios y edite el archivo Apache httpd.conf para aplicar el nuevo ubicación de sitios web habilitados.

# cd /etc/httpd/
# mkdir sites-available sites-enabled
# nano conf/httpd.conf

2. En el archivo httpd.conf , agregue la siguiente línea de directiva en la parte inferior del archivo, que hará que Apache lea y analice todos los archivos ubicados en /etc/httpd/sites-enabled/ terminó en la extensión .conf .

IncludeOptional sites-enabled/*.conf

3. En el siguiente paso, cree un nuevo host virtual en la ubicación de sitios disponibles con un nombre descriptivo (en este caso, he usado rheltest.lan.conf ) y use el siguiente archivo como plantilla.

# nano /etc/httpd/sites-available/rheltest.lan.conf

Utilice esta configuración como guía.

<VirtualHost *:80>
        ServerName rheltest.lan
        DocumentRoot "/var/www/rheltest.lan"
                <Directory "/var/www/rheltest.lan">
                Options Indexes FollowSymLinks MultiViews
         # AllowOverride controls what directives may be placed in .htaccess files.      
                        AllowOverride All
        # Controls who can get stuff from this server file
                        Order allow,deny
                        Allow from all
           </Directory>
        <IfModule mpm_peruser_module>
                ServerEnvironment apache apache
        </IfModule>
        ErrorLog  /var/log/httpd/rheltest.lan-error.log
        CustomLog /var/log/httpd/rheltest.lan-access.log combined
</VirtualHost>

4. Si cambió la ubicación de DocumentRoot en su host virtual de la predeterminada /var/www/html a otra ruta, asegúrese de crear también esta ruta.

# mkdir -p /var/www/rheltest.lan

NOTA: Asegúrese también de que el host de ServerName sea un registro DNS válido o que se agregue al archivo de hosts de su máquina local, desde donde planea visitar el sitio web.

5. Ahora es el momento de crear scripts bash a2ensite y a2dissite en una ruta de sistema ejecutable - en este caso es /usr/local/bin/- pero
puede utilizar cualquier ruta ejecutable que genere la variable de sistema $PATH .

Cree un archivo siguiente con el editor de su elección.

# nano /usr/local/bin/a2ensite

Agregue la siguiente secuencia de comandos.

#!/bin/bash
if test -d /etc/httpd/sites-available && test -d /etc/httpd/sites-enabled  ; then
echo "-----------------------------------------------"
else
mkdir /etc/httpd/sites-available
mkdir /etc/httpd/sites-enabled
fi

avail=/etc/httpd/sites-available/$1.conf
enabled=/etc/httpd/sites-enabled/
site=`ls /etc/httpd/sites-available/`

if [ "$#" != "1" ]; then
                echo "Use script: a2ensite virtual_site"
                echo -e "\nAvailable virtual hosts:\n$site"
                exit 0
else

if test -e $avail; then
sudo ln -s $avail $enabled
else

echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi
if test -e $enabled/$1.conf; then

echo "Success!! Now restart Apache server: sudo systemctl restart httpd"
else
echo  -e "Virtual host $avail does not exist!\nPlease see available virtual hosts:\n$site"
exit 0
fi
fi

Cree un archivo siguiente con el editor de su elección.

# nano /usr/local/bin/a2dissite

Agregue el siguiente script completo al archivo.

#!/bin/bash
avail=/etc/httpd/sites-enabled/$1.conf
enabled=/etc/httpd/sites-enabled
site=`ls /etc/httpd/sites-enabled/`

if [ "$#" != "1" ]; then
                echo "Use script: a2dissite virtual_site"
                echo -e "\nAvailable virtual hosts: \n$site"
                exit 0
else

if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail virtual host does not exist! Exiting!"
exit 0
fi

if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo  -e "Success! $avail has been removed!\nPlease restart Apache: sudo systemctl restart httpd"
exit 0
fi
fi

6. Después de que se hayan creado ambos archivos de script, asegúrese de que sean ejecutables y comience a usarlos para habilitar o deshabilitar hosts virtuales agregando el nombre de vhost como parámetro de comando.

# chmod +x /usr/local/bin/a2*
# a2ensite vhost_name
# a2disite vhost_name

7. Para probarlo, habilite el host virtual creado anteriormente, reinicie el servicio Apache y dirija el navegador al nuevo host virtual, en este caso http://rheltest.lan .

# a2ensite rheltest.lan
# systemctl restart httpd

¡Eso es! Ahora puede usar los scripts bash a2eniste y a2dissite como comandos del sistema para administrar el archivo Apache Vhosts en RHEL/CentOS 7.0.