Instalación, configuración de Apache 2.4 con php-fpm, con MariaDB 10.10 y el nuevo PHP 8

Amigos en este post explicaré cómo instalar PHP-FPM (Fast CGI Process Manager), esto nos permitirá mejorar el rendimiento de la ejecución de nuestro código. PHP-FPM solo interpreta una vez el código PHP, después de esto se reutiliza el código almacenado en la memoria cache.

¿Qué es PHP-FPM?

FPM (FastCGI Process Manager) es una implementación alternativa al PHP FastCGI con algunas características adicionales (la mayoría) útiles para sitios web con mucho tráfico.

Sus características incluyen:

– Manejo avanzado para detener/arrancar procesos de forma fácil;
– Posibilidad de iniciar hilos de procesos con diferentes uid/gid/chroot/environment, escuchar en diferentes puertos y usar distintos php.ini (remplazando); safe_mode
– Registro stdout y stderr;
– Reinicio de emergencia en caso de destrucción accidental del caché opcode;
– Soporte acelerado de subidas;
– «slowlog» – scripts de registro de procesos (no sólo sus nombres, sin sus backtraces también, usando ptrace y similares para leer procesos execute_data remotos) que son inusualmente lentos;
– fastcgi_finish_request() – Función especial para detener y descargar todos los datos mientras continua haciendo algún proceso más largo (conversión de vídeos, procesamiento de estadísticas, etc.);
– Creación dinámico/estático de hilos;
– Información básica del status SAPI (similar al mod_status de Apache);
– Basado en archivos de configuración php.ini

http://php.net/manual/es/install.fpm.ph

Instalar MariaDB 10.10

MariaDB es un sistema de gestión de bases de datos derivado de MySQL con licencia GPL, para su instalación bastará ejecutar lo siguiente:

sudo apt-get install apt-transport-https curl

sudo curl -o /etc/apt/trusted.gpg.d/mariadb_release_signing_key.asc 'https://mariadb.org/mariadb_release_signing_key.asc'

sudo sh -c "echo 'deb https://mirror1.cl.netactuate.com/mariadb/repo/10.10/ubuntu jammy main' >>/etc/apt/sources.list"

Para otras versiones se puede consultar el siguiente enlace: otros instaladores de MariaDB

sudo apt update

sudo apt install mariadb-server mariadb-backup

Ejecutar el siguiente comando para cambiar la configuración por defecto:

mysql_secure_installation

Instalar Apache 2.4

Para instalar la última versión disponible de apache para Ubuntu 18.04 debemos ejecutar lo siguiente:

apt -y install apache2

apt -y install libapache2-mod-fcgid

Verificar que la configuración del servidor es correcta:

apache2ctl configtest

En caso de que se muestre este error:

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

Se debe adicionar la siguiente línea al archivo apache2.conf

nano /etc/apache2/apache2.conf
ServerName MyServidor

Comandos básicos

Detener el servicio

systemctl stop apache2.service

Iniciar el servicio

systemctl start apache2.service

Reiniciar el servicio

systemctl restart apache2.service

Recargar el servicio

systemctl reload apache2.service

Seguridad en Apache 2

Tomar en cuenta este post: https://guidocutipa.blog.bo/apache-2-4-hardening/

Instalar PHP 8 como php-fpm

Para instalar PHP 8 se debe habilitar el repositorio

apt install -y software-properties-common

add-apt-repository ppa:ondrej/php

Para instalar PHP-FPM ejecutar lo siguiente:

apt install -y php8.0-fpm libapache2-mod-fcgid

# o

apt install -y php8.1-fpm libapache2-mod-fcgid

# o

apt install -y php8.2-fpm libapache2-mod-fcgid

Instalar componentes adicionales adicionales

apt install -y php8.0-gd php8.0-mysql php8.0-intl php8.0-imagick php8.0-zip php8.0-xml php8.0-mbstring

# o

apt install -y php8.1-gd php8.1-mysql php8.1-intl php8.1-imagick php8.1-zip php8.1-xml php8.1-mbstring

# o

apt install -y php8.2-gd php8.2-mysql php8.2-curl php8.2-mbstring php8.2-intl php8.2-gmp php8.2-bcmath php8.2-xml php8.2-imagick php8.2-zip

Ajustes en el archivo de configuración php.ini

nano /etc/php/8.0/fpm/php.ini

# o

nano /etc/php/8.1/fpm/php.ini

# o

nano /etc/php/8.2/fpm/php.ini
file_uploads = On
allow_url_fopen = On
memory_limit = 512M
upload_max_filesize = 200M
post_max_size = 200M
max_execution_time = 360
max_input_time = 360
date.timezone = America/La_Paz

Configuraciones adicionales del servidor Ubuntu Server

Configurar la zona horaria del servidor:

timedatectl list-timezones

timedatectl set-timezone America/La_Paz

Configurar Idioma del servidor:

apt install locales

Verificar si el idioma es soportado por el sistema operativo:

more /usr/share/i18n/SUPPORTED | grep es_ES

Instalar el idioma requerido:

locale-gen es_ES.UTF-8 es_ES

Configurar Apache para usar PHP-FPM

Habilitar algunos módulos para que Apache pueda ejecutar PHP-FPM

a2dismod mpm_prefork
a2enmod mpm_event proxy_fcgi setenvif


a2enconf php8.0-fpm
# o

a2enconf php8.1-fpm

# o

a2enconf php8.2-fpm

Configurando un Virtual Host

Primero se debe revisar el archivo de configuración de php fpm:

nano /etc/php/8.1/fpm/pool.d/www.conf

# o

nano /etc/php/8.2/fpm/pool.d/www.conf

Buscar una línea similar a:

listen = /run/php/php8.1-fpm.sock

# o

listen = /run/php/php8.2-fpm.sock

Reemplazar su valor en el siguiente archivo de configuración:

nano /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
   ServerAdmin webmaster@localhost
   DocumentRoot /var/www/html
   
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined

   <FilesMatch .php$>
        SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost/"
   </FilesMatch>

</VirtualHost>

Reiniciar Apache

systemctl restart apache2.service

Prueba de la configuración

Para la verificación ejecutaremos la función phpinfo();

nano /var/www/html/info.php
<?php 
phpinfo(); 
?>

Una vez creado el archivo accedemos a él mediante un navegador web para obtener el siguiente resultado:

http://<IP del servidor>/info.php

Entradas relacionadas