CentOs Instalación y configuración de un servidor L.A.M.P. (Servidor Linux Apache Mysql) con varios hosts virtuales

Hay un montón de paneles de control que pueden configurar un servidor LAMP genérico con cualquier distribución linux o casi linux. Otros de pago también son compatibles con otras plataformas como Windows.

Muchos comandos de esta guía se pueden agregar en uno, sin embargo, prefiero dividirlos para ayudarle a identificar cualquier error. Esta guía se ha probado paso a paso y asume que ha instalado un sistema limpio de centos 7 con la red configurada.

Si tiene instalado el comando sudo y ha iniciado sesión como usuario normal, simplemente puede introducir la palabra “sudo” antes de los comandos. Pero ahora estamos empezando a configurar nuestro “servidor de prueba”.

Configurar el cortafuegos

En primer lugar, debe asegurarse de que el servidor acepta ciertas solicitudes en determinados puertos. Si el firewall no está instalado, no lo instale a menos que sepa lo que está haciendo o si tiene la máquina física delante de usted. Si tiene un enrutador o una red más complejos, le recomiendo que lea un artículo sobre la teoría de red o un artículo sobre cómo configurar servidores virtuales en un enrutador para enrutar el tráfico a determinados puertos. Aquí asumo que tiene una dirección pública en un servidor disponible en Internet. Por lo tanto, usted debe escribir estos comandos en su prompt (shell).


firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --runtime-to-permanent
firewall-cmd --reload

Instalar Apache2

Abrimos puertos para aceptar conexiones tcp en los puertos http (80) y httpd (443) predeterminados de apache. Ahora necesitamos instalar apache2 como un simple servidor web escribiendo este comando:

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch-rpm
yum -y install epel-release
yum -y install httpd

Inicio y Habilitar Apache2

Después de instalar apache, debe utilizar y habilitar el servicio (demonio) con este comando

systemctl start httpd
systemctl enable httpd

Si pone la dirección IP del servidor en un navegador debería ver la página de bienvenida de apache y centos.

Configurar hosts virtuales

Para configurar hosts virtuales en CentOS debe deshabilitar el selinux o recibirá un error. Para desactivarlo temporalmente, evitando así tener que reiniciar el sistema, puede escribir

setenforce 0
echo 0 > /sys/fs/selinux/enforce

Para asegurarse de que este cambio persiste incluso después del reinicio, debe editar el archivo /etc/sysconfig/selinux y asegurarse de que la línea con respecto a selinux está deshabilitada como se muestra en este ejemplo:

SELINUX=disabled

Ahora sólo tenemos que crear el archivo de configuración para el host virtual que vamos a poner dentro de la carpeta


/etc/httpd/conf.d/

En este artículo, usaremos el dominio example.com como ejemplo. Deberá reemplazar el nombre de dominio example.com por su nombre de dominio.

A continuación, cree el archivo de configuración e introduzca las siguientes líneas:

ServerName www.example.com
DocumentRoot /var/www/example.com
ServerAlias example.com
ErrorLog /var/log/httpd/www.example.com.error.log
CustomLog /var/log/httpd/www.example.com.requests.log combined

Options FollowSymLinks MultiViews
AllowOvverride All
Order allow,deny
allow from all

Por supuesto, también debe crear el sitio y la carpeta de destino de registro si no existe:

mkdir -p /var/www/example.com
mkdir -p /var/log/httpd

En este punto es necesario reiniciar apache

apachectl restart

Si su dominio apunta al servidor correctamente, debería ver la página de bienvenida.

Consideraciones: He leído en muchos artículos sobre la configuración de hosts virtuales con CentOS que recomiendan la creación de una carpeta específica que contenga los sitios disponibles y otra que contenga los sitios habilitados. Este método se utiliza en implementaciones basadas en debian y le permite deshabilitar y habilitar un sitio simplemente actuando en vínculos simbólicos. Pero este artículo trata sobre CentOS y por lo tanto seguiremos la ruta de las distribuciones basadas en RedHat.

Instalación y configuración de Certbot (letsencrypt) para soporte https (opcional pero recomendado)

Si el sitio es dinámico, normalmente podría llevar información confidencial y por lo que es una buena idea cifrarlo. La compra de un certificado válido fue una vez una operación costosa, pero ahora hay un sistema para adquirir uno completamente gratis.

Asegúrese de que su DNS apunte a su servidor.

Lo primero que debe hacer es instalar módulos apache para el soporte ssl

yum -y install mod_ssl
yum -y install openssl

E instalar el programa certbot

yum -y install python-certbot-apache

Para trabajar, al inicio, el protocolo https debe tener un certificado válido. Podemos crear este certificado de la siguiente manera

mkdir -p /etc/ssl/private
chmod 700 /etc/ssl/private
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out
/etc/ssl/certs/apache-selfsigned.crt

Para este tiempo, puede dejar todas las respuestas en blanco y tendrá que esperar hasta el final de la generación del certificado. Puesto que certbot comprueba si la configuración de apache es consistente, necesitamos agregar instrucciones para el host virtual también para el protocolo https al final del archivo

/etc/httpd/conf.d/example.com.conf

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
ServerName www.example.com
DocumentRoot /var/www/example.com
ServerAlias example.com
ErrorLog /var/log/httpd/www.example.com.error.ssl.log
CustomLog /var/log/httpd/www.example.com.requests.ssl.log combined

Opciones FollowSymLinks MultiViews
AllowOverride All
Ordenar permitir, negar
permitir de todos

Ahora podemos crear el certificado con certbot. Mantenga en mí que si utiliza un servicio como Cloudflare, tendrá que pausarlo temporalmente.

apachectl stop
certbot certonly --standalone -d example.com -d
www.example.com
apachectl start

Tu dominio http://www.example.com ahora debería estar visible desde . Si desea que los usuarios sean redirigidos automáticamente a https, tendrá que cambiar las instrucciones de su host virtual para el protocolo http agregando la línea

Redirect "/" "https://www.example.com"

archivo de configuración

/etc/httpd/conf.d/example.com.conf

como se muestra en este ejemplo

ServerName www.example.com
DocumentRoot /var/www/example.com
ServerAlias example.com
Redirect "/" "https://www.example.com"
ErrorLog /var/log/httpd/www.example.com.error.log
CustomLog /var/log/httpd/www.example.com.requests.log combined

Opciones FollowSymLinks MultiViews
PermitirOvverride Todo
Ordenar permitir, negar
permitir de todos

Si utiliza servicios como cloudflare u otros métodos de redirección, no insertará esta línea o generará un bucle interminable de direccionamiento que finalmente devolverá un error en el navegador.

Instalación MariaDB (para Mysql)

Para instalar el servidor mysql MariaDB, debe escribir este comando

yum -y install mariadb-server mariadb

Así que tendrá que iniciar y habilitar el servidor

systemctl start mariadb
systemctl enable mariadb

Ahora mariadb está instalado, pero debe proceder a la seguridad automática básica porque, por así decirlo, el servicio está configurado con el menor número de limitaciones posible para que sea más conveniente para los desarrolladores. Puede hacer esto con el comando

mysql_secure_installation

Tendrá que elegir todas las opciones recomendadas y tendrá que introducir una contraseña para su cuenta raíz mysql.

Consideraciones: CentOS optó por usar MariaDB como servidor mysql predeterminado. Sin embargo, tengo que decirle que se trata de una bifurcación del servidor mysql clásico y puede haber problemas de incompatibilidad al importar datos. Si no conoce la diferencia entre mariadb y mysql community edition, le recomiendo que lea un artículo sobre cómo migrar datos de un servidor de lanzamiento de la comunidad mysql a un servidor mariadb o cómo migrar datos de un servidor mariadb a un servidor de versión de la comunidad mysql.

Instalación de PHPs y módulos utilizados por CMS comunes

Para usar mysql, apache necesita un programa intermedio que en nuestro caso es php. Para instalar php con soporte mysql y sus módulos más utilizados de CMS popular, escriba estos comandos

yum -y install php
yum -y install php-opcache
yum -y install php-common
yum -y install php-fpm
yum -y install php-pear
yum -y install php-mysql
yum -y install php-cli
yum -y install php-gd
yum -y install php-odbc
yum -y install php-xml
yum -y install php-xmlrpc
yum -y install php-mbstring
yum -y install php-snmp
yum -y install php-soap
yum -y install php-mcrypt

Si necesita instalar otros módulos, puede buscarlos utilizando el comando

yum search php-

También puede filtrar los resultados con el comando grep. Si por ejemplo, quiero mostrar los módulos con pecl escrito dentro del nombre sólo tengo que escribir

yum search php- | grep pecl

Consideraciones: CenOS es una distribución linux estable y conservadora. Se prueban los paquetes que se pueden instalar con repositorios tradicionales. Para instalar las versiones más recientes, debe importar otros repositorios. Si no necesitas instalar la última versión de php, te recomiendo que respetes la elección de centOS. Si necesita instalar la versión 7 de php, le recomiendo que lea un artículo sobre la instalación y configuración de un servidor LAMP (Linux Apache Mysql Php 7) con varios hosts virtuales en CentOS 7.


Es posible dejar un comentario como usuario registrado del sitio, accediendo a través de las redes sociales, la cuenta de wordpress o como usuarios anónimos. Si desea dejar un comentario como usuario anónimo, se le notificará por correo electrónico una posible respuesta sólo si introduce su dirección de correo electrónico (opcional). La inclusión de cualquier dato en los campos de comentario es totalmente opcional. Quien decida introducir algún dato acepta el tratamiento de los mismos para las finalidades inherentes al servicio o la respuesta a los comentarios y comunicaciones estrictamente necesarias.


Deja un comentario