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;
http://php.net/manual/es/install.fpm.ph
– 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
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-commonadd-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