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