Introducción

Esta es una guía actualizada para instalar Apache 2.4 con Event MPM, PHP 8.3 vía PHP-FPM y MariaDB 11 en FreeBSD 14. Todos los paquetes se instalan con pkg, el gestor de paquetes binarios — sin necesidad de compilar desde ports.

Si buscás la guía antigua con FreeBSD 10 y PHP 5.6, todavía está aquí, pero las versiones que cubre ya no tienen soporte.

Actualizar el sistema

Antes de instalar, actualizá el índice de paquetes y el sistema base:

freebsd-update fetch install
pkg update && pkg upgrade

Instalar Apache 2.4

pkg install apache24

Habilitarlo para que arranque al inicio:

sysrc apache24_enable="YES"

Activar Event MPM

Editá /usr/local/etc/apache24/httpd.conf y asegurate de que solo esté cargado el módulo Event MPM:

#LoadModule mpm_prefork_module libexec/apache24/mod_mpm_prefork.so
#LoadModule mpm_worker_module libexec/apache24/mod_mpm_worker.so
LoadModule mpm_event_module libexec/apache24/mod_mpm_event.so

Descomentá también los módulos de proxy necesarios para PHP-FPM:

LoadModule proxy_module libexec/apache24/mod_proxy.so
LoadModule proxy_fcgi_module libexec/apache24/mod_proxy_fcgi.so

Agregá un nombre de servidor para evitar el aviso al iniciar:

ServerName localhost

Instalar PHP 8.3 con FPM

pkg install php83 php83-extensions mod_php83

Habilitá PHP-FPM:

sysrc php_fpm_enable="YES"

Copiá la configuración por defecto:

cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

El pool por defecto de PHP-FPM escucha en 127.0.0.1:9000. Inicialo:

service php-fpm start

Instalar MariaDB 11

pkg install mariadb1011-server

Habilitalo e inicialo:

sysrc mysql_enable="YES"
service mysql-server start

Asegurá la instalación:

mysql_secure_installation

Establecé una contraseña para root y aceptá el resto de los valores por defecto.

Configurar un virtual host

Creá el directorio /usr/local/etc/apache24/conf.d/ si no existe y agregá un include al final de httpd.conf:

Include etc/apache24/conf.d/*.conf

Creá los directorios del sitio:

mkdir -p /usr/local/www/misitio/{public_html,logs}
chown -R www:www /usr/local/www/misitio/

Creá /usr/local/etc/apache24/conf.d/misitio.conf:

<VirtualHost *:80>
    ServerName misitio.ejemplo.com
    DocumentRoot "/usr/local/www/misitio/public_html"

    <FilesMatch "\.php$">
        SetHandler "proxy:fcgi://127.0.0.1:9000"
    </FilesMatch>

    <Directory "/usr/local/www/misitio/public_html">
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog "/usr/local/www/misitio/logs/error.log"
    CustomLog "/usr/local/www/misitio/logs/access.log" common
</VirtualHost>

Iniciar Apache y verificar

service apache24 start

Verificá el MPM en uso:

httpd -V | grep MPM

Resultado esperado:

Server MPM: event

Creá un archivo de prueba:

echo "<?php phpinfo();" > /usr/local/www/misitio/public_html/info.php

Abrí http://misitio.ejemplo.com/info.php en el navegador y buscá:

Server API    FPM/FastCGI

Eso confirma que PHP-FPM está procesando las solicitudes. Borrá el archivo una vez verificado:

rm /usr/local/www/misitio/public_html/info.php

Resumen

Componente Versión
FreeBSD 14
Apache 2.4 Event MPM
PHP 8.3 FPM
MariaDB 11