Instalacion de Servidor Web en Centos 7 con virtualhost multidominios

Instalación de un servidor web con Apache, MariaDb Server, PHP 5en un servidor Centos 7 e instalación y configuración de modulo itk de apache para permitir que cada usuario de sistema tenga un virtualhost y corra cada uno con su respectivo usuario ya no con www-data ni apache como propietario sino el respectivo usuario. Esto tiene enormes ventajas en seguridad y para poder realizar actualizaciones de sus sitios web dinámicos hechos con CMS de manera sencilla.

Bien sin mas preámbulos procedamos

Agregando repositorios EPEL

Una vez instalado Centos 7 (Ver Instalación de Centos 7) debe instalarse el repositorio EPEL para poder instalar modulo itk de apache
yum install epel-release
Una vez instalado
yum update

Instalación de Apache, MariaDb,php,modulo itk, ssh y nano

Procederemos inmediatamente después a instalar todos los paquetes necesarios. Agregare nano que es mi editor favorito pero usted puede usar vi o vim si se siente mas cómodo con esos editores. Asimismo el servidor ssh openssh-server
yum install httpd mariadb-server php httpd-itk nano openssh-server
Y saldrá un mensaje para confirmar si acepta la llave o clave de autenticidad por el nuevo repositorio EPEL Release a lo cual deberá responder s o si para continuar.

Listo ahora queda configurar los servicios

Configuración de IP estática

Para este ejemplo vamos a cambiar la ip del tutorial de Instalación de Centos 7, le asignaremos 192.168.122.220
nano /etc/sysconfig/network-scripts/ifcfg-ens3
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.122.220
GATEWAY=192.168.122.1
NETWORK=192.168.122.0
NETMASK=255.255.255.0
NAME=ens3
ONBOOT=yes

Habilitando SSH Server

Primero verifique el estado del servicio ssh
systemctl status sshd.service
Si dentro del resultado arroja la palabra enabled entoces omita este paso y siga con los siguientes.
chkconfig sshd on
systemctl start sshd.service

Deshabilitando Selinux y firewalld

Para facilitar este proceso deshabilitaremos Selinux y firewalld.
nano /etc/sysconfig/selinux
Verá algo similar a esto:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - SELinux is fully disabled.
SELINUX=enforcing
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
#       strict - Full SELinux protection.
SELINUXTYPE=targeted

# SETLOCALDEFS= Check local definition changes
SETLOCALDEFS=0
Lo que debe hacer es cambiar
SELINUX=enforcing
por
SELINUX=disabled
Guardar ya se desactivo selinux pero para que se vean los efectos se debe reiniciar el sistema. Antes de eso tambien deshabilitaremos el firewall
systemctl stop firewalld.service
chkconfig firewalld off
Una vez terminado:
reboot

Activando el servidor apache

Habiendo desactivado selinux y el firewall, ahora queda activar y configurar los demás servicios. En éste caso servidor apache
chkconfig httpd on

systemctl start httpd.service
Activando y configurando servidor de base de datos MariaDB
chkconfig mariadb on

systemctl start mariadb.service
Y para activar el password del servidor MariaDb:
mysql_secure_installation
Aparecerá una serie de preguntas y contestartalas de acuerdo a su necesidad pero puede dejarlas por defecto y solo presionar enter.

La primera pregunta es asignar una contraseña o password a su base de datos como root

ingrese la clave dos veces como le pide el proceso y listo deja las demas opciones por defautl.

Al final le indicara si desea continuar o salir y coloca salir.

Activando modulo itk de apache

nano  /etc/httpd/conf.modules.d/00-mpm-itk.conf
# ITK MPM (Multi-Processing Module). Mpm-itk allows you to run each of your
# vhost under a separate uid and gid - in short, the scripts and configuration
# files for one vhost no longer have to be readable for all the other vhosts.
# LoadModule mpm_itk_module modules/mod_mpm_itk.so
Quitar el comentario # al final quedando
# ITK MPM (Multi-Processing Module). Mpm-itk allows you to run each of your
# vhost under a separate uid and gid - in short, the scripts and configuration
# files for one vhost no longer have to be readable for all the other vhosts.
LoadModule mpm_itk_module modules/mod_mpm_itk.so

Creación de Usuario

Para poder usar un virtualhost dentro de la carpeta de un usuario hay que crearlo.

Crearemos un usuario llamado word
adduser word
Ahora le asignaremos un password
password word 
 Le asignamos una clave para poder acceder via ftp o sftp. En éste tuturial el acceso será via sftp con filezilla u otro cliente similar.

También se crea la carpeta donde se subirán los archivos para el sitio web o DocumentRoot
mkdir /home/word/public_html
Como ha sido creado por el usuario root o supeusuario hay que cambiar de propietario a word
chown word:word -Rf /home/word
Y cambiamos los permisos
chmod 755 -Rf /home/word

Activamos el servicio Dnsmasq

chkconfig dnsmasq on
Luego iniciamos el servicio
systemctl start dnsmasq.service

Configuración de Host con el VirtualHost

Para éste tutorial se esta usando DNSMASQ para facilidad ya que automáticamente asigna los DNS del fichero /etc/hosts

El dominio centos7.con obviamente no existe se ha creado para el servidor local para muestra del presente tutorial. Con un dominio real no hay diferencia en el procedimiento simplemente se reemplaza el valor, los dominios ya cuentan con su respectivo servidor de dominio y el proveedor de servicio internet le configura apropiadamente la inversa de dominio para su IP Pública fija.
nano /etc/hosts
127.0.0.1   pccentos7.centos.con centos7.con localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.122.220 pccentos7.centos7.con pccentos7 www.centos.con centos.con
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
En la ip se asigna los virtualhost para el presente tutorial se agrega www.centos.con y centos.con.

Configuración VirtualHost

Vamos a crear y configurar los VirtualHost en éste caso es uno de muestra con el usuario "word" creado para la muestra.

Debe crease un fichero
nano /etc/httpd/conf.d/vhost.conf
Se abrirá una pantalla vacía y deberá llenarlo de la siguiente manera:
<VirtualHost *:80>
ServerName pccentos7.centos7.con
ServerAlias *.centos7.con
DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost *:80>
ServerName www.centos.con
ServerAlias *.centos.con
DocumentRoot /home/word/public_html
<Directory "/home/word/">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog /home/word/error.log
CustomLog /home/word/access.log combined
AssignUserId word word
</VirtualHost>
Se puede observar que el primer virualhost es destinado al localhost por lo cual el Servername debe ser exactamente igual al que registro en el proceso de instalación

Para ver dicho valor 
cat  /etc/hosts
En el presente tutorial tenemos
127.0.0.1   pccentos7.centos.con centos7.con localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.122.220 pccentos7.centos7.con pccentos7 www.centos.con centos.con
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

Configuración DNS Resolución de Dominios

La resolución de dominio la dejaremos como estaba 192.168.122.1
cat /etc/resolv.conf
# Generated by NetworkManager
search centos7.con
nameserver 192.168.122.1 
Reiniciando Servicios

Para activar los servicios
systemctl restart httpd.service
systemctl restart mariadb.service

Probando VirtualHost

Desde terminal creamos un archivo index.html y lo editamos

Pero primero debemos cambiar de usuario
su word
nano /home/word/prueba.html
Y en la pantalla en blanco:
esta es la prueba de que el virtual host esta corriendo en /home/word/public_html
Listo

Verificar en el navegador

www.centos.con/prueba.html

En el proximo tutorial

Instalación de Wordpress en un virtualhost


Comentarios