Servidor LAMP en Gnu/Linux

LAMP (Linux Apache MySQL PHP) consiste en el sistema operativo Gnu/Linux como entorno, Apache (Servidor HTTP) como servidor web, el sistema de gestión de bases de datos relacionales MySQL (Ahora MariaDB) como sistema BD (Base de datos),

y el lenguaje de programación PHP como lenguaje de programación del lado del servidor (Back End).

LAMP se utiliza como una solución de fuente abierta de tecnologías para el área de desarrollo web. La versión Windows de esto se llama WAMP (Windows Apache MySQL PHP).

Instalando LAMP en Arch Linux
Primero necesitaremos instalar los paquetes necesarios para trabajar en nuestra instalación de Arch Linux.

Ejecutamos el siguiente comando como superusuario para instalar los paquetes necesarios en la última versión estable:

pacman -Syu apache php php-apache mariadb

1. Servidor HTTP

Primero necesitaremos configurar el servidor HTTP, para ello modificaremos el archivo /etc/httpd/httpd.conf y cambiaremos la opción ServerAdmin you@example.com a nuestro gusto. 

El directorio para las páginas Web por defecto es el ServerRoot "/etc/httpd". La opción del directorio debe de apuntar a esa ruta, por lo que tendremos que cambiarla para que quede así: <Directory "/etc/httpd">

Este directorio deberá tener permisos de ejecución (Aunque no es recomendado, pues en un fallo de seguridad podría ser que un tercero ejecute código arbitrario en nuestro servidor).  Para lograr esto tendremos que ejecutar la siguiente orden como superusuario:

chmod o+x /etc/httpd

También cambiaremos la opción AllowOverride All cambiando la palabra “default” a “All” para que el archivo .htaccess funcione.

Es recomendable crear un usuario por sitio desplegado, de esta forma la naturaleza de Gnu/Linux nos dará una ventaja si alguien logra ingresar al sitio, pues solo se verá afectado el usuario del sitio y sus privilegios. Protegiendo cualquier otro despliegue que podamos tener en nuestro servidor. 

Para lograr esto primero tendremos que crear el directorio ~/public_html para cada usuario. Estando en un servidor local con los ajustes por defecto podemos ingresar a la carpeta raíz de los sitios bajo la dirección: http://localhost/~yourusername/ 

También es necesario descomentar la línea Include conf/extra/httpd-userdir.conf 

Ahora como superusuario asignaremos los permisos al directorio ~/public_html anteriormente mencionado para cada usuario de la siguiente manera:

chmod 755 /home/username
chmod 755 /home/username/public_html

# O si nos sentimos aventureros podemos usar la forma recursiva

chmod 755 -R /home # No recomendado

Si desea usar SSL en su sitio podemos comentar la línea: LoadModule ssl_module modules/mod_ssl.so

Y descomentar la línea Include conf/extra/httpd-vhosts.conf  si queremos usar los hosts virtuales de Apache, como paso extra en el archivo /etc/hosts  tendremos que añadir dichos hosts virtuales si queremos probar su funcionamiento.

Seguridad básica del servidor

En el archivo /etc/httpd/conf/extra/httpd-default.conf cambiamos las opciónes de manera que queden como ServerSignature Off  y  ServerToken Prod para ocultar detalles importantes del servidor como el sistema operativo o la versión de apache que se está ejecutando en el mismo.

2. PHP (Configuración rápida)

Edite el archivo: /etc/httpd/conf/httpd.conf

Comente lo siguiente: LoadModule mpm_event_module modules/mod_mpm_event.so

Descomente lo siguiente: LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

Como final de la lista LoadModule, añada:  LoadModule php7_module modules/libphp7.so

Como elemento final de la lista include, añada: Include conf/extra/php7_module.conf

Edite el archivo:  /etc/php/php.ini

Descomente el apartado extension=mysqli.so  y extension=pdo_mysql.so

Cambie la zona horaria del sistema a su gusto:

date.timezone = America/Argentina/Buenos_Aires, date.default_latitude = 0.0, date.default_longitude = 0.0

3. MySQL (MariaDB)

Ejecute como superusuario la siguiente orden:

mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql

Esto le dará el superusuario de MySQL el cual necesitaremos para ejecutar los siguientes pasos.

Inicie el demonio de MySQL (Systemd):

systemctl enable mysqld && systemctl start mysqld

Finalmente ejecute como superusuario:

sh /usr/bin/mysql_secure_installation

Con esto deberíamos tener un servidor LAMP funcionando en nuestra instalación de Arch Linux sin problema alguno. 

Instalación en Ubuntu / Debian

Los paquetes de apache en Ubuntu y Debian vienen pre-configurados de forma distinta a la descrita en esta entrada, por lo que solo mostraremos el proceso de instalación realizado con:

sudo apt install apache2 mariadb-server php libapache2-mod-php

Para verificar que la instalación de PHP fue exitosa debemos ejecutar el siguiente comando:

php -r 'echo "\n\nSaludos desde PHP :D.\n\n\n";'

Instalación en CentOS / RHEL

El manejo de LAMP en CentOS es muy similar al escrito en Arch Linux por lo que muchos de esos consejos y tips funcionarán sin problema en un servidor CentOS/RHEL.

El primer paso es instalar apache desde yum en CentOS:

sudo yum -y install httpd

Una vez instalado apache es momento de encender el servicio con systemd

sudo systemctl enable --now httpd

Para verificar que nuestro servidor apache está funcionando correctamente podemos visitar la siguiente dirección, suponiendo que estamos en un servidor local: http://localhost

Seguido de apache necesitamos instalar MariaDB con la orden:

sudo yum -y install mariadb-server

# Encendemos el servicio posteriormente

sudo systemctl enable --now mariadb

Al igual que en la sección de Arch Linux, debemos de ejecutar el comando mysql_secure_installation para instalar, inicializar y asegurar nuestra base de datos. Con el podremos cambiar la contraseña del usuario root, eliminar las bases de datos de prueba y deshabilitar el acceso remoto de ser requerido.

Finalmente instalaremos y habilitaremos PHP en nuestro servidor con las siguientes órdenes:

sudo yum -y install php php-common
# Habilitamos el servicio
sudo systemctl restart httpd

Para revisar si PHP se instaló de manera satisfactoria podemos ejecutar la orden:

PHP 5.4.16 (cli) (built: Nov 6 2016 00:29:02) Copyright (c) 1997-2013 The PHP Group

Si recibimos una pantalla con información parecida a la siguiente: 

PHP 7.4.5 (cli) (built: Apr 16 2020 22:37:19) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.5, Copyright (c), by Zend Technologies

Enhorabuena, hemos instalado PHP de forma satisfactoria en nuestro servidor.

Conclusión

Ahora que tenemos el stack LAMP instalado, tenemos varias formas para explotarlo. Básicamente, ya contamos con una plataforma que nos permitirá instalar la mayoría de tipos de sitios web, así como aplicaciones web en nuestro servidor.

Como siguiente paso inmediato, debes asegurarte que que la conexión a tu servidor web es segura, tu servidor debería manejar sus peticiones mediante HTTPS. La manera más sencilla es usando CERTBOT, el cual nos facilitará certificados SSL gratuitos de Let’s Encrypt.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

A %d blogueros les gusta esto: