Cómo instalar Flarum Forum con Nginx y LE SSL en CentOS 8

Flarum es un software de foros gratuito, de código abierto y de última generación que te facilita la creación y el crecimiento de una comunidad online de éxito. Es un software sencillo, ligero, rápido y apto para móviles, basado en PHP. Viene con un rico conjunto de características que incluyen: una interfaz elegante, una interfaz de dos paneles, desplazamiento infinito, un compositor flotante, una respuesta completa y muchas más.

En este tutorial, explicaremos cómo instalar el foro Flarum en un servidor CentOS 8.

Requisitos

  • Un servidor con CentOS 8.
  • Un nombre de dominio válido apuntado con la IP de tu servidor
  • Una contraseña de root configurada en el servidor.

Cómo empezar

Antes de empezar, necesitarás instalar el repositorio EPEL y Remi en tu sistema. Primero, instala el repositorio EPEL con el siguiente comando:

dnf install epel-release -y

A continuación, descarga e instala el repositorio Remi con el siguiente comando:

wget http://rpms.remirepo.net/enterprise/remi-release-8.rpm
rpm -Uvh remi-release-8.rpm

Instala Nginx, MariaDB y PHP

Primero, instala el servidor web Nginx y el servidor MariaDB con el siguiente comando:

dnf install nginx mariadb-server -y

Una vez instalados ambos paquetes, tendrás que habilitar el módulo php:remi-7.3 para instalar PHP 7.3. Puedes habilitarlo con el siguiente comando:

dnf module enable php:remi-7.3

A continuación, instala PHP con otras dependencias necesarias con el siguiente comando:

dnf install php php-fpm php-common php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml -y

Una vez instalados todos los paquetes, inicia el servicio Nginx, MariaDB y PHP-FPM y habilítalos para que se inicien tras el reinicio del sistema con el siguiente comando:

systemctl start nginx
systemctl start mariadb
systemctl start php-fpm
systemctl enable nginx
systemctl enable mariadb
systemctl enable php-fpm

Una vez que hayas terminado, puedes pasar al siguiente paso.

Configurar la base de datos MariaDB

Por defecto, MariaDB no está protegida. Puedes asegurarla con el siguiente script:

mysql_secure_installation

Responde a todas las preguntas como se muestra a continuación:

Enter current password for root (enter for none):
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Una vez que hayas terminado, entra en el shell de MariaDB con el siguiente comando:

mysql -u root -p

Proporciona tu contraseña de root cuando se te pida y luego crea una base de datos y un usuario para Flarum con el siguiente comando:

MariaDB [(none)]> CREATE DATABASE flarumdb;
MariaDB [(none)]> GRANT ALL PRIVILEGES on flarumdb.* to 'flarum'@'localhost' identified by 'password';

A continuación, vacía los privilegios y sal del shell de MariaDB con el siguiente comando:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Una vez que hayas terminado, puedes pasar al siguiente paso.

Configurar PHP-FPM para Nginx

A continuación, tendrás que configurar PHP-FPM para que funcione con Nginx. Puedes hacerlo editando el archivo www.conf:

nano /etc/php-fpm.d/www.conf

Cambia el nombre de usuario y grupo de apache a nginx como se muestra a continuación:

user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx

A continuación, busca la siguiente línea:

;listen = /run/php-fpm/www.sock

Y sustitúyela por la siguiente línea:

listen = 127.0.0.1:9000

Guarda y cierra el archivo cuando hayas terminado. A continuación, reinicia el servicio PHP-FPM para aplicar los cambios:

systemctl restart php-fpm

Instalar Flarum

Antes de instalar el Flarum, tendrás que instalar Composer en tu sistema.

Puedes instalarlo con el siguiente comando:

curl -sS https://getcomposer.org/installer | php

Una vez instalado, deberías obtener la siguiente salida:

All settings correct for using Composer
Downloading...

Composer (version 1.9.2) successfully installed to: /root/composer.phar
Use it: php composer.phar

A continuación, mueve el archivo binario de Composer al directorio /usr/local/bin y dale el permiso adecuado:

mv composer.phar /usr/local/bin/composer
chmod 755 /usr/local/bin/composer

A continuación, cambia el directorio a la raíz del documento Nginx y crea un proyecto Flarum con el siguiente comando:

cd /var/www/html
composer create-project flarum/flarum . --stability=beta

A continuación, da los permisos adecuados al directorio raíz de la web Nginx con el siguiente comando:

chown -R nginx:nginx /var/www/html
chmod -R 755 /var/www/html
chown -R nginx:nginx /var/lib/php

Una vez que hayas terminado, puedes pasar al siguiente paso.

Configurar Nginx para Flarum

A continuación, tendrás que crear un archivo de configuración de host virtual Nginx para Nginx. Puedes crearlo con el siguiente comando:

nano /etc/nginx/conf.d/flarum.conf

Añade las siguientes líneas:

server {
    listen   80;
    server_name  flarum.example.com;

# note that these lines are originally from the "location /" block
root   /var/www/html/public;
index index.php index.html index.htm;

location / { try_files $uri $uri/ /index.php?$query_string; }
location /api { try_files $uri $uri/ /api.php?$query_string; }
location /admin { try_files $uri $uri/ /admin.php?$query_string; }

location /flarum {
    deny all;
    return 404;
}

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

location ~* \.html$ {
    expires -1;
}

location ~* \.(css|js|gif|jpe?g|png)$ {
    expires 1M;
    add_header Pragma public;
    add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
gzip on;
gzip_http_version 1.1;
gzip_vary on;
gzip_comp_level 6;
gzip_proxied any;
gzip_types application/atom+xml
           application/javascript
           application/json
           application/vnd.ms-fontobject
           application/x-font-ttf
           application/x-web-app-manifest+json
           application/xhtml+xml
           application/xml
           font/opentype
           image/svg+xml
           image/x-icon
           text/css
           #text/html -- text/html is gzipped by default by nginx
           text/plain
           text/xml;
gzip_buffers 16 8k;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
   }

Guarda y cierra el archivo cuando hayas terminado. A continuación, tendrás que aumentar el tamaño de hash_bucket en el archivo nginx.conf.

Puedes hacerlo editando el archivo /etc/nginx/nginx.conf:

nano /etc/nginx/nginx.conf

Añade la siguiente línea exactamente encima de la última línea:

server_names_hash_bucket_size 64;

Guarda y cierra el archivo. A continuación, comprueba si Nginx tiene algún error de sintaxis con el siguiente comando:

nginx -t

Deberías ver la siguiente salida:

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

Por último, reinicia el servicio Nginx y PHP-FPM para aplicar los cambios:

systemctl restart php-fpm
systemctl restart nginx

Configurar SELinux y el cortafuegos

En primer lugar, tendrás que crear una regla de firewall para permitir el servicio HTTP y HTTPS desde redes externas. Puedes permitirlo con el siguiente comando:

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

Por defecto, SELinux está activado en CentOS 8. Así que tendrás que configurar SELinux para que Flarum funcione correctamente. Puedes configurar SELinux con el siguiente comando:

setsebool httpd_can_network_connect on -P

Una vez que hayas terminado, puedes pasar al siguiente paso.

Accede a la interfaz web de Flarum

Ahora, abre tu navegador web y escribe la URL http://flarum.example.com. Serás redirigido a la siguiente página:

Instalador del Foro Flarum

Proporciona el nombre de tu foro, los detalles de la base de datos, el nombre de usuario y la contraseña del administrador y haz clic en el botón Instalar Flarum. Una vez que la instalación se haya completado con éxito, deberías ver el panel de control de Flarum en la siguiente página:

Foro Flarum

Asegura Flarum con Let’s Encrypt SSL

Ahora Flarum está instalado y configurado. Es hora de asegurarlo con el SSL gratuito de Let’s Encrypt.

Para ello, necesitarás descargar el cliente certbot en tu servidor. Puedes descargarlo y establecer el permiso correcto ejecutando el siguiente comando:

wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

Ahora, ejecuta el siguiente comando para obtener e instalar un certificado SSL para tu sitio web de flarum.

certbot-auto --nginx -d flarum.example.com

El comando anterior instalará primero todas las dependencias necesarias en tu servidor. Una vez instalado, se te pedirá que proporciones una dirección de correo electrónico y que aceptes las condiciones del servicio, como se muestra a continuación:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y 


Obtaining a new certificate
Performing the following challenges:
http-01 challenge for flarum.example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/flarum.conf

A continuación, tendrás que elegir si quieres redirigir el tráfico HTTP a HTTPS, como se muestra a continuación:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Escribe 2 y pulsa Enter para continuar. Una vez terminada la instalación, deberías ver la siguiente salida:

Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/flarum.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://flarum.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=flarum.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/flarum.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/flarum.example.com/privkey.pem
   Your cert will expire on 2020-03-23. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again with the "certonly" option. To non-interactively renew *all*
   of your certificates, run "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

¡Ya está! Ahora puedes acceder a tu sitio web de Flarum utilizando la URL segura https://flarum.example.com.

También te podría gustar...