Cómo instalar Fuel CMS con Nginx en Fedora 31

Fuel CMS es un sistema de gestión de contenidos de código abierto para sitios web y blogs de calidad superior. Está basado en CodeIgniter, un popular framework web PHP. Este tutorial explica cómo instalar Fuel CMS en un servidor basado en Fedora 31.

Requisitos previos

  • Un servidor con Fedora 31 configurado con LEMP Stack.
  • Un usuario sudo no root.
  • Asegúrate de que todo está actualizado.
    $ sudo dnf upgrade
    

Configurar MariaDB para Fuel CMS

En primer lugar, tenemos que configurar una base de datos para utilizarla en Fuel CMS. Para ello, accede al prompt de MySQL.

$ sudo mysql

Una vez en el prompt, introduce los siguientes comandos que configurarán una base de datos llamada fuelcms y un usuario de base de datos llamado fueluser y le darán acceso a la base de datos.

mysql> CREATE DATABASE fuelcms;
mysql> CREATE USER 'fueluser'@'localhost' IDENTIFIED BY 'yourpassword';
mysql> GRANT ALL PRIVILEGES ON fuelcms.* TO 'fueluser'@'localhost';
mysql> exit

Configurar PHP para Fuel CMS

En nuestra guía, instalamos PHP 7.4 pero Fuel CMS aún no es compatible con él en el momento de realizar este tutorial. Cuando sea compatible, podrás saltarte este paso.

Ahora, necesitamos instalar PHP 7.3 junto con PHP 7.4. Esto se puede hacer fácilmente utilizando el siguiente comando.

$ sudo dnf install php73-php-fpm php73-php-mysqlnd php73-php-cli -y

Esto instala PHP 7.3 como una colección que te permite ejecutarlo simultáneamente con PHP 7.4.

Inicia y activa el servicio PHP 7.3.

$ sudo systemctl start php73-php-fpm
$ sudo systemctl enable php73-php-fpm

Para comprobar si se ha instalado correctamente, ejecuta el siguiente comando.

$ php73 --version
PHP 7.3.16 (cli) (built: Mar 17 2020 10:18:38) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.16, Copyright (c) 1998-2018 Zend Technologies

Abre el archivo /etc/opt/remi/php73/php-fpm.d/www.conf.

$ sudo nano /etc/opt/remi/php73/php-fpm.d/www.conf

Necesitamos establecer el usuario/grupo Unix de los procesos PHP en nginx. Busca las líneas user=apache y group=apache en el archivo y cámbialas a nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Además, localiza la variable listen .acl_users y cambia su valor como se indica a continuación.

listen.acl_users = nginx

Anota también la variable listen. Te dará la ruta sobre dónde escuchar el proceso PHP-FPM. En nuestro caso, muestra lo siguiente.

listen = /var/opt/remi/php73/run/php-fpm/www.sock

Copia la ruta porque la necesitaremos.

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.

Reinicia el proceso PHP-fpm.

$ sudo systemctl restart php73-php-fpm

Configurar Nginx

Ejecuta el siguiente comando para añadir un archivo de configuración para Fuel CMS.

$ sudo nano /etc/nginx/sites-available/fuel.conf

Pega el siguiente código en el editor.

server {
  listen 80;
  listen [::]:80;
  root /var/www/fuel;
  index index.php index.html index.htm;
  server_name fuel.example.com;
    
  client_max_body_size 100M;

  location / {
    try_files $uri $uri/ /index.php?q=$uri&$args;
  }

access_log /var/log/nginx/fuel.example.com.access.log;
error_log /var/log/nginx/fuel.example.com.error.log; location ~ \.php$ { fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }

Este archivo asume que instalaremos Fuel CMS en el dominio example.com y en el directorio /var/www/fuel. También utilizamos el valor de la variable listen de más arriba para especificar un valor para fastcgi_pass.

Activa este archivo de configuración vinculándolo al directorio sites-enabled.

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

Prueba la configuración de Nginx.

$ sudo nginx -t

Deberías ver la siguiente salida indicando que tu configuración es correcta.

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

Recarga el servicio Nginx.

$ sudo systemctl reload nginx

Instalar Fuel CMS

Crea una carpeta raíz de documentos vacía para Fuel CMS.

$ sudo mkdir -p /var/www/fuel

El argumento -p garantiza que los directorios padre var y www se creen automáticamente si no existen.

Navega hasta la carpeta raíz de documentos.

$ cd /var/www/fuel

Obtén la última versión de Fuel CMS de su repositorio Git.

$ sudo wget https://github.com/daylightstudio/FUEL-CMS/archive/master.zip

Extrae el archivo a la carpeta /var/www/fuel.

$ sudo unzip master.zip
$ sudo rm master.zip
$ sudo mv FUEL-CMS-master/* .
$ sudo rm -r FUEL-CMS-master

Crea el directorio sessions.

$ sudo mkdir /var/www/fuel/fuel/application/sessions

Abre el archivo /var/www/fuel/application/config/database.php.

$ sudo nano /var/www/fuel/fuel/application/config/database.php

Configura los parámetros de la base de datos que hemos creado antes.

$db['default'] = array(
        'dsn'   => '',
        'hostname' => 'localhost',
        'username' => 'fueluser',
        'password' => 'yourpassword',
        'database' => 'fuelcms',
        'dbdriver' => 'mysqli',

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.

Importa el archivo /var/www/fuel/install/fuel_schema.sql a la base de datos recién creada.

$ mysql -u fueluser -p fuelcms < /var/www/fuel/fuel/install/fuel_schema.sql

Genera una clave de encriptación aleatoria utilizando OpenSSL. Puedes utilizar cualquier número en lugar de 20.

$ openssl rand -base64 20

Obtendrás una clave aleatoria como salida. Cópiala.

Abre el archivo /var/www/fuel/fuel/application/config/config.php.

$ sudo nano /var/www/fuel/fuel/application/config/config.php

Cambia el valor de $config [‘clave_de_cifrado’] por la clave que obtuviste en el paso anterior.

$config['encryption_key'] = 'nisT56baLm+U24ZYFRvVbVKIdOE=';

A continuación, localiza el valor $ config[‘sess_save_path’] y cambia su valor de NULL a la ruta de la sesión que creamos anteriormente.

$config['sess_save_path'] = APPPATH.'sessions/';

APPPATH se refiere aquí al directorio /var/www/fuel/fuel/applications/. Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.

A continuación, tenemos que activar el panel de administración. Para ello, abre el archivo /var/www/fuel/fuel/application/config/MY_fuel.php.

$  sudo nano /var/www/fuel/fuel/application/config/MY_fuel.php

Realiza el siguiente cambio.

// whether the admin backend is enabled or not
$config['admin_enabled'] = TRUE;
....
$config['fuel_mode'] = 'auto';

Establecer el fuel_mode en auto permite a Fuel CMS buscar primero la página en su base de datos y, si no la encuentra, la recogerá de su carpeta de vista. Puedes cambiar otros ajustes como el nombre del sitio en el panel de Administración, el tamaño de la subida de imágenes, establecer un correo electrónico, el tamaño de la subida de archivos, seleccionar un editor de texto, establecer un motor analizador y su configuración y establecer una lista de módulos permitidos.

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.

El último paso es dar los permisos adecuados al directorio /var/www/fuel.

sudo chown -R nginx:nginx /var/www/fuel

La configuración se ha completado. Abre fuel.example.com/fuel en tu navegador e inicia sesión con las credenciales que creaste anteriormente y empieza a desarrollar.

Configurar Fuel CMS

Una vez que accedas al panel de administración, se te pedirá que cambies la contraseña. Haz clic en Cambiar contraseña para continuar.

Configurar Fuel CMS

En la página que se abre, puedes cambiar tu contraseña. También deberás cambiar tu nombre de usuario predeterminado y añadir una dirección de correo electrónico. También tendrás que rellenar tu nombre para continuar. Guarda para continuar cuando hayas terminado.

Para más información, consulta la documentación oficial de Fuel CMS.

Configurar HTTPS usando Let’s Encrypt

Para utilizar Let’s encrypt, necesitamos instalar el paquete Certbot.

Instala Certbot.

$ sudo dnf install certbot certbot-nginx -y

Instala el certificado.

$ sudo certbot --nginx -d fuel.example.com

Si es la primera vez que utilizas la herramienta en este servidor, tienes que aceptar las condiciones e introducir tu dirección de correo electrónico. Di no cuando te pregunten si quieres compartir tu correo electrónico con la fundación EFF.

Si lo consigues, certbot te preguntará cómo quieres configurar tus ajustes HTTPS.

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

Selecciona 2 y pulsa ENTER. Tu certificado ya está instalado y activado.

Ejecuta el siguiente comando para configurar la renovación automática.

$ echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew" | sudo tee -a /etc/crontab > /dev/null

Ejecuta https://fuel.example.com en tu navegador para comprobarlo.

Protege Fuel CMS con un certificado SSL gratuito Let's encrypt

Conclusión

Con esto concluye nuestro tutorial. Ya puedes utilizar Fuel CMS para crear tus sitios web . Si tienes alguna pregunta, publícala en los comentarios.

Scroll al inicio