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 actuar como comandos, uno que habilita y otro que deshabilita virtual especificado hosts: a2ensite y a2dissite . Este enfoque tiene algunas ventajas porque 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, lo que hace que el proceso de habilitar, deshabilitar, crear o eliminándolos muy manejable.

  1. LAMP Basic Installation on 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: También asegúrese 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.

puede usar cualquier ruta ejecutable que /usr/local/bin:/usr/local/sbin:/usr/bin:/opt/cuda/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl salidas de variables del sistema.

Cree un archivo siguiente con el editor que elija.

# 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 que elija.

# 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.