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