Instalación, configuración de Apache con php-fpm, con MariaDB 10.5 y el nuevo PHP 8.0

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

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:

apt install software-properties-common

apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirror.lstn.net/mariadb/repo/10.5/ubuntu focal main'
sudo apt install mariadb-server

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

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

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

Ajustes en el archivo de configuración php.ini

# nano /etc/php/8.0/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

Configurar Apache para usar PHP-FPM

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

# a2enmod proxy_fcgi setenvif
# a2enconf php8.0-fpm

Configurando un Virtual Host

# 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:/var/run/php/php8.0-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