Cómo instalar phpBB con Nginx en Debian 12, 11 o 10 Linux

phpBB es un software de foro de código abierto altamente personalizable y ampliamente utilizado que proporciona una plataforma sólida para crear comunidades en línea. Cuando se combina con NGINX, MariaDB y PHP, obtiene una pila potente y eficiente que garantiza un alto rendimiento y escalabilidad para su foro. NGINX actúa como servidor web, MariaDB como sistema de gestión de bases de datos y PHP como lenguaje de programación del lado del servidor, formando una base sólida para phpBB.

Siga los pasos descritos en esta guía para instalar phpBB en Debian 12, 11 o 10 con NGINX, MariaDB y PHP. Esta configuración proporcionará un entorno seguro y de alto rendimiento para su foro en línea.

Instalar LEMP (Nginx, MariaDB, PHP)

Actualice Debian antes de la instalación de phpBB

Asegúrese de que su sistema Debian esté actualizado antes de instalar la pila LEMP. Este paso ayuda a evitar conflictos de paquetes y garantiza una ejecución fluida de los procesos posteriores. También alinea su sistema con los últimos parches de seguridad y mejoras de software.

Para actualizar su sistema, ejecute el siguiente comando:

sudo apt update && sudo apt upgrade

El comando sudo apt update actualiza la lista de paquetes disponibles y sus versiones, mientras que sudo apt update instala las últimas versiones de sus paquetes.

Instalar NGINX (pila LEMP, parte 1)

NGINX, un servidor HTTP y proxy inverso de alto rendimiento y código abierto, es la piedra angular de la pila LEMP. Para instalar NGINX, ejecute el siguiente comando:

sudo apt install nginx

Después de la instalación de NGINX, el servicio suele iniciarse automáticamente. Sin embargo, es una buena práctica confirmar esto y asegurarse de que funciona como se esperaba. Puede verificar el estado del servicio NGINX emitiendo el siguiente comando:

systemctl status nginx

Debería ver un resultado que indica el estado activo (en ejecución) del servicio NGINX, lo que confirma el inicio exitoso de NGINX. Si el servidor no se ha iniciado por algún motivo, el siguiente comando puede iniciarlo y también configurar NGINX para que se inicie automáticamente al reiniciar el sistema:

sudo systemctl enable nginx --now

Este comando garantiza que el servicio NGINX pueda iniciarse en el arranque (habilitar) e inmediatamente (ahora).

Opcionalmente, puede visitar la dirección IP del servidor para verificar que Nginx esté instalado; Deberías ver una página de prueba similar:

Instale MariaDB (pila LEMP, parte 2)

La instalación del módulo de base de datos es el siguiente paso para configurar la pila LEMP. MariaDB, conocida por su rendimiento y varios atributos complementarios, se prefiere a MySQL dentro de la pila LEMP. Para instalar MariaDB, ejecute el siguiente comando:

sudo apt install mariadb-server mariadb-client

Paso 4: verificar el servicio MariaDB

Una vez instalado MariaDB, es fundamental confirmar el estado del servicio MariaDB. Es importante asegurarse de que el servicio MariaDB esté habilitado y funcionando correctamente. El comando para inspeccionar el estado del servicio es el siguiente:

systemctl status mariadb

Puede ejecutar el siguiente comando si el servidor no ha sido activado. Esto garantizará que MariaDB se inicie inmediatamente y esté configurado para iniciarse automáticamente cada vez que reinicie el sistema.

sudo systemctl enable mariadb --now

Instalación segura de MariaDB (Security Run-Script)

Proteger su base de datos es fundamental para configurar un sistema robusto y confiable; MariaDB no es una excepción. Después de la instalación, se recomienda encarecidamente ejecutar el script de seguridad que viene con la instalación. Este script fortalece la instalación de MariaDB modificando su configuración predeterminada, a menudo considerada insegura, protegiendo así el sistema de posibles accesos no autorizados o explotación.

Para ejecutar el script de seguridad MariaDB, conocido como mysql_secure_installation, emita el siguiente comando:

sudo mysql_secure_installation

Una vez que se ejecuta el script de seguridad, el siguiente paso consiste en ajustar varias configuraciones para mejorar la seguridad de su instalación de MariaDB. Estos cambios incluyen configurar la contraseña de root, restringir el acceso remoto, eliminar cuentas de usuarios anónimos y eliminar la base de datos de prueba. Cada uno de estos ajustes agrega una capa de seguridad a su instalación de MariaDB, ayudando a protegerla de posibles amenazas a la seguridad.

Profundicemos en cada uno de estos ajustes:

  • Configurar la contraseña de root: Esta es la contraseña para el usuario root de su instalación de MariaDB. Es fundamental elegir una contraseña segura para evitar el acceso no autorizado.
  • Restringir el acceso remoto: El usuario root puede acceder a la base de datos desde cualquier ubicación de forma predeterminada. Restringir el acceso remoto garantiza que el usuario root solo pueda acceder a la base de datos desde la máquina local, lo que reduce el riesgo de ataques remotos.
  • Eliminación de cuentas de usuarios anónimos: Las cuentas de usuarios anónimos no tienen nombre. Estas cuentas suponen un riesgo para la seguridad, ya que pueden utilizarse para obtener acceso no autorizado a la base de datos. El script de seguridad le permite eliminar estas cuentas.
  • Eliminando la base de datos de prueba: MariaDB tiene una base de datos de prueba a la que cualquier usuario puede acceder. Esta base de datos no es necesaria para uso en producción y se puede eliminar de forma segura para reducir la superficie de ataque.

Al tomarse el tiempo para proteger su instalación de MariaDB, está dando un paso importante para garantizar la integridad y seguridad de sus datos.

Instalar PHP (pila LEMP, parte 3)

El componente final de la pila LEMP es el servicio PHP, que actúa como puente entre Nginx y MariaDB. Este puente se logra mediante el servicio PHP-FPM y los módulos adicionales requeridos por phpMyAdmin. Para instalar PHP, PHP-FPM y los módulos necesarios en su sistema Debian, ejecute el siguiente comando:

sudo apt install php-fpm php php-cli php-mysql php-curl php-common php-mbstring php-xml

Verificar el estado del servicio PHP

Después de la instalación, es fundamental confirmar el estado del servicio PHP. Esta validación garantiza que PHP esté habilitado y funcione perfectamente sin errores. El comando depende de la versión de PHP instalada; en nuestro caso, fue PHP 8.2.

systemctl status php8.2-fpm

Activando el servicio PHP

Si el servicio PHP está inactivo, el siguiente comando lo habilita y garantiza que se inicie automáticamente con cada reinicio.

sudo systemctl enable php-fpm --now

Este comando activará el servicio PHP-FPM y garantizará que se inicie automáticamente durante cada inicio del sistema.

Instalación del backend de phpBB

Es hora de instalar los foros phpBB con la pila LEMP instalada correctamente. Al momento de este tutorial, la última versión es phpBB 3.3.10. Sin embargo, esto puede cambiar con el tiempo, ya que normalmente se lanzan nuevas versiones cada seis meses. Para verificar la versión actual, visite el página de descargas de phpBB.

Nota: No olvide obtener el último phpBB-xxxzip y ajustar los comandos a continuación; esto es crítico.

Descargar phpBB y configurar directorios

Primero, descargue el paquete phpBB:

cd /tmp && wget https://download.phpbb.com/pub/release/3.3/3.3.10/phpBB-3.3.10.zip
unzip phpBB-3.3.10.zip
sudo mv phpBB3 /var/www/html/phpbb

A continuación, modifique los permisos del directorio para NGINX:

sudo chown -R www-data:www-data /var/www/html/phpbb
sudo chmod -R 755 /var/www/html/phpbb

Configurando MariaDB para phpBB

Ahora, crea una base de datos para tu instalación de phpBB. Primero, abra la terminal MariaDB como root:

sudo mysql -u root -p

Crea la base de datos para tus foros:

CREATE DATABASE phpbb;

Crear un nuevo usuario de base de datos llamado phpbbuser con una nueva contraseña:

CREATE USER 'phpbbuser'@'localhost' IDENTIFIED BY 'new_password_here';

Otorgue al usuario acceso completo a la base de datos:

GRANT ALL ON phpbb.* TO 'phpbbuser'@'localhost' IDENTIFIED BY 'user_password_here' WITH GRANT OPTION;

Elimine los privilegios para aplicar los cambios:

FLUSH PRIVILEGES;

Salga de la terminal MariaDB:

EXIT;

Su base de datos phpBB ya está lista. Ingresará estos detalles durante la parte de instalación de la interfaz de usuario web del tutorial.

Configurando PHP para phpBB

Para garantizar una instalación exitosa de phpBB y su funcionamiento óptimo, debe ajustar algunas opciones en el php.ini archivo de configuración.

Abre el php.ini archivo:

sudo nano /etc/php/{version}/fpm/php.ini

Por favor recuerde reemplazar {version} con la versión específica de PHP-FPM que instaló, como 83., 8.2, 8.1, 8.0 o 7.4.

Localice las siguientes configuraciones y ajústelas de la siguiente manera:

max_execution_time = 180 max_input_time = 90 límite de memoria = 256 M upload_max_filesize = 64 M

Estas configuraciones son generalmente estándar, pero si está utilizando un VPS con recursos limitados o alojamiento compartido, es posible que deba ajustarlas a un nivel más bajo. Recuerda que cada instalación de phpBB, como cualquier otro sistema CMS, puede variar.

Una vez hecho esto, guarde y salga del archivo. Deberá reiniciar PHP FPM para que los cambios surtan efecto:

sudo systemctl restart php8.2-fpm

Configurando Nginx para phpBB

En el bloque de su servidor Nginx, declare el PHP ascendente y luego las ubicaciones de PHP. La mejor manera de hacer esto es crear un nuevo bloque de servidor usando un subdominio como forums o community.

Primero, crea el bloque del servidor:

sudo nano /etc/nginx/sites-available/phpbb.conf

Copie y pegue lo siguiente en el bloque del servidor, modificando el nombre de dominio, SSL, ruta raíz y cualquier otra cosa que se adapte a sus necesidades. No toques las ubicaciones ni PHP a menos que sepas lo que estás haciendo.

Atención: La siguiente reducción de sintaxis de configuración de Nginx incluye comentarios anotados para guiarlo en la personalización de la configuración de acuerdo con sus requisitos específicos. Recomendamos encarecidamente examinar detenidamente cada segmento y realizar los ajustes adecuados para adaptarse a la configuración de su sistema. Se agradece enormemente su atención a estos detalles.

# Upstream to abstract backend connection(s) for PHP
upstream phpbb {
    # Path to PHP 8.2 FPM socket, replace this with your own socket path
    server unix:/run/php/php8.2-fpm.sock;
}

server {
    listen 80;
    listen [::]:80;

    # Change these to your main server name(s)
    server_name www.example.com example.com;

    # Replace this with your site root directory
    root /var/www/html/example.com-root/;
    index index.php index.html index.htm index.nginx-debian.html;

    # Change this to your specific server name
    server_name forums.linuxcapable.com;

    # Replace this with your site root directory
    root /var/www/html/phpbb/;
    index index.php index.html index.htm index.nginx-debian.html;

    # Log files, replace these paths if you have different log file paths
    access_log /var/log/nginx/forums-access.log;
    error_log /var/log/nginx/forums-error.log;

    location / {
        try_files $uri $uri/ @rewriteapp;

        # PHP processing, make sure to use your own upstream name if different
        location ~ \.php(/|$) {
            include fastcgi.conf;
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
            fastcgi_param DOCUMENT_ROOT $realpath_root;
            try_files $uri $uri/ /app.php$is_args$args;
            fastcgi_pass phpbb;
            fastcgi_intercept_errors on;    
        }

        # Deny access to certain PHPBB files
        location ~ /(config\.php|common\.php|cache|files|images/avatars/upload|includes|(?<!ext/)phpbb(?!\w+)|store|vendor) {
            deny all;
            internal;
        }
    }

    location @rewriteapp {
        rewrite ^(.*)$ /app.php/$1 last;
    }

    location /install/ {
        try_files $uri $uri/ @rewrite_installapp =404;

        # PHP processing for installer
        location ~ \.php(/|$) {
            include fastcgi.conf;
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
            fastcgi_param DOCUMENT_ROOT $realpath_root;
            try_files $uri $uri/ /install/app.php$is_args$args =404;
            fastcgi_pass phpbb;
            fastcgi_intercept_errors on;    
        }
    }

    location @rewrite_installapp {
        rewrite ^(.*)$ /install/app.php/$1 last;
    }

    # Deny access to version control system directories
    location ~ /\.svn|/\.git {
        deny all;
        internal;
    }

    gzip on; 
    gzip_comp_level 6;
    gzip_min_length 1000;
    gzip_proxied any;
    gzip_disable "msie6";

    # Gzip compression types
    gzip_types
        application/atom+xml
        application/geo+json
        application/javascript
        application/x-javascript
        application/json
        application/ld+json
        application/manifest+json
        application/rdf+xml
        application/rss+xml
        application/xhtml+xml
        application/xml
        font/eot
        font/otf
        font/ttf
        image/svg+xml
        text/css
        text/javascript
        text/plain
        text/xml;

    # Static assets, media
    location ~* \.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ {
        expires    90d;
        access_log off;
    }

    # SVG, fonts
    location ~* \.(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
        add_header Access-Control-Allow-Origin "*";
        expires    90d;
        access_log off;
    }
}

Después de la configuración, habilite el nuevo bloque del servidor:

sudo ln -s /etc/nginx/sites-available/phpbb.conf /etc/nginx/sites-enabled/

Ahora puedes comprobar la configuración:

sudo nginx -t 

Si todo está configurado correctamente, verá:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Reinicie el servicio Nginx para que phpBB sea accesible a través de la interfaz de usuario web:

sudo systemctl restart nginx

Esto completa la instalación backend de phpBB.

Implementación de cifrado SSL con Let's Encrypt (opcional)

Si tiene la intención de proteger su servidor Nginx con HTTPS, una opción inteligente sería utilizar Let's Encrypt. Let's Encrypt es una autoridad de certificación acreditada, gratuita y totalmente automatizada gobernada por el Internet Security Research Group (ISRG), una organización sin fines de lucro.

Instalación de Certbot

Nuestro primer paso consiste en instalar el paquete Certbot. Certbot es un cliente eficiente para Let's Encrypt que puede automatizar la emisión e instalación de certificados sin tiempo de inactividad. También tiene una interfaz de línea de comandos bastante rica.

Para instalar el paquete Certbot, use el siguiente comando:

sudo apt install python3-certbot-nginx -y

Creando su certificado

Con Certbot instalado, ahora podemos generar su certificado SSL. Este procedimiento implica ejecutar el siguiente comando:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d forums.example.com

El comando que hemos emitido facilita una configuración óptima, que incluye redireccionamientos HTTPS 301 forzados, un encabezado Strict-Transport-Security y OCSP Stabling. Cada uno de estos elementos contribuye a la seguridad de su servidor.

Reemplazar 'tú@ejemplo.com' y 'foros.ejemplo.com' con tu correo electrónico y nombre de dominio es crucial.

Transición a HTTPS

Al ejecutar con éxito estos comandos, ahora debería poder accederse a su foro a través de HTTPS en https://forums.example.com en lugar del anterior http://forum.example.com. Cualquier intento de acceder a la antigua URL HTTP será redirigido sin problemas a la versión HTTPS segura.

Para obtener más información sobre cómo proteger Nginx, consulte nuestra guía detallada sobre Cómo proteger Nginx con Let's Encrypt en Debian Linux.

Complete la instalación de la interfaz de usuario web de phpBB

Habiendo configurado exitosamente el backend, ahora pasaremos al frontend para completar la instalación de phpBB. Puede acceder a la página de instalación visitando la URL designada del foro phpBB. Con fines ilustrativos, utilizamos https://forums.linuxcapable.com.

Iniciando la instalación

Al visitar la URL especificada, accederá a la página de instalación de phpBB. Inicie el proceso haciendo clic en el botón de instalación en la esquina superior izquierda de la página.

Luego será dirigido a una página que detalla los requisitos mínimos del sistema y otras especificaciones técnicas esenciales para phpBB.

Una vez que su sistema cumpla con estos requisitos previos, haga clic en Instalar en la parte inferior de la página.

Configurar la cuenta de administrador

La siguiente etapa consiste en crear su cuenta de administrador de phpBB. Una contraseña segura para esta cuenta es vital para la recuperación y la seguridad general.

Configurar detalles de la base de datos

Después de establecer su cuenta de administrador, se le pedirá que proporcione los detalles de la base de datos. Mantenga el valor predeterminado 'MySQL con extensión MySQLi' e ingrese 'localhost' a menos que su base de datos resida en un servidor diferente. En ese caso, ingrese la IP y el puerto del servidor (si no es el predeterminado).

Nuestro tutorial utiliza una base de datos llamada 'phpbb', con 'phpbbuser' como el usuario al que se le otorga acceso (junto con la raíz) a la base de datos phpBB. Conserve el prefijo predeterminado 'phpbb_', a menos que planee albergar varios foros, en cuyo caso, modificar el prefijo puede ayudar a diferenciarlos.

Finalizando la configuración del servidor

A continuación, tendrá la oportunidad de configurar los ajustes de su servidor. Las configuraciones predeterminadas deberían ser suficientes si no estás ejecutando SSL. Sin embargo, si ha implementado SSL, ajuste la configuración para alinearla con sus requisitos específicos.

Configuración SMTP

Después de la configuración del servidor, puede establecer la configuración SMTP, si corresponde. De lo contrario, puede omitir este paso y continuar con la configuración predeterminada.

Establecer detalles del foro

Finalmente, designa el título de tu foro y elige el idioma deseado. Si no estás seguro del título del foro, utiliza la opción predeterminada por ahora; siempre puedes revisarlo más tarde.

Al completar estos pasos, debería llegar a una pantalla final que confirma la instalación exitosa de su foro phpBB, junto con un enlace que lo dirige al ACP (Panel de control de administración). Si encuentra algún error, es posible que deba volver a revisar los pasos anteriores para asegurarse de que no se haya pasado por alto ningún paso o permiso.

Finalización de la instalación y configuración de phpBB

Eliminar el directorio de instalación de phpBB

Felicitaciones por llegar a esta etapa. Al iniciar sesión por primera vez en el Panel de control de administración (ACP) de phpBB, será recibido con una alerta roja prominente que le indicará que cambie el nombre o elimine su directorio de instalación. Se recomienda encarecidamente que elimine este directorio en lugar de simplemente moverlo. Para lograr esto, ejecute el siguiente comando en su terminal:

sudo rm -R /var/www/html/phpbb/install

Si no hace esto, lo más probable es que su foro no se pueda utilizar hasta que haya eliminado el directorio de instalación:

Configuración de los permisos CHMOD correctos (paso vital)

Mientras trabajamos con los comandos de la terminal, es crucial asignar los permisos CHMOD apropiados después de la instalación. Omitir este paso podría exponer su sistema a importantes vulnerabilidades de seguridad, así que ejecútelo exactamente o utilice su método si cree que es superior, ¡pero evite mantener los permisos predeterminados!

Ejecute los siguientes comandos:

sudo find /var/www/html/phpbb -type d -exec chmod 755 {} \;
sudo find /var/www/html/phpbb -type f -exec chmod 644 {} \;

Posteriormente, debemos otorgar algunos permisos especiales a ciertos directorios y archivos:

sudo chmod 777 -R /var/www/html/phpbb/files
sudo chmod 777 -R /var/www/html/phpbb/cache
sudo chmod 777 -R /var/www/html/phpbb/store
sudo chmod 777 -R /var/www/html/phpbb/images/avatars/upload

Si no hace esto, se interrumpirán las funciones de su tablero. Asegúrese de seguir estrictamente estos caminos; de lo contrario, puede otorgar sin darse cuenta a todo el directorio phpBB acceso de lectura y escritura sin restricciones, reintroduciendo un problema de seguridad.

Instituir un Cronjob para phpBB (recomendado)

El último paso de esta guía es establecer un cronjob. En foros con mucho tráfico o tiempos de respuesta lentos, se recomienda configurar trabajos cron para que se ejecuten cada 5 minutos, según las pautas de phpBB. Aquí se explica cómo hacer esto.

Inicie crontab con este comando:

sudo crontab -e

Opción para el primer cronjob:

*/5 * * * * /usr/bin/php /var/www/html/phpbb/bin/phpbbcli.php cron:run > /dev/null 2>&1

Para guardar, presione CTRL+O y para salir, presione CTRL+X. Si lo hace correctamente, verá la siguiente respuesta en su terminal:

crontab: installing new crontab

Esta respuesta indica que el cronjob está activo y funcionando. Aunque phpBB recomienda ejecutar cronjobs cada 5 minutos, puedes ajustar la frecuencia según tus necesidades.

Finalmente, regrese a su Panel de administración de phpBB y habilite el trabajo cron del servidor en la configuración de su servidor.

Con estos pasos, habrá completado la fase posterior a la instalación de su instalación de phpBB en Debian.

Conclusión

Con phpBB instalado exitosamente en su sistema Debian usando NGINX, MariaDB y PHP, ahora puede crear y administrar una sólida comunidad en línea. Asegúrese de actualizar periódicamente todos los componentes para mantener la seguridad y el rendimiento. Disfrute de la flexibilidad y el poder que esta configuración brinda a su foro phpBB, brindando una experiencia fluida y atractiva para sus usuarios.

Joshua James
Sígueme
Últimas entradas de Joshua James (ver todo)

Deja un comentario