Cómo instalar ExpressionEngine CMS en CentOS 8
ExpressionEngine es un sistema de gestión de contenidos (CMS) de código abierto, maduro, flexible y seguro, escrito en PHP. Su código fuente está alojado en Github. Con ExpressionEngine, puedes construir sitios web con todas las funciones, crear una aplicación web o servir contenido a aplicaciones móviles. Todo ello sin requerir complejos conocimientos de programación. Esta guía te guiará a través del proceso de instalación de ExpressionEngine en un CentOS 8 fresco utilizando PHP, MariaDB como base de datos y Nginx como servidor web.
Requisitos
ExpressionEngine requiere un servidor web con PHP y MySQL/MariaDB. La pila de software y las versiones recomendadas son
- PHP versión 7.0 o superior, funcionando con PHP-FPM y con las siguientes extensiones de PHP (
gd
,fileinfo
,intl
,mbstring
). - MySQL versión 5.6 o superior o Percona versión 5.6 o superior. Estetutorial utilizará MariaDB.
- Un servidor web como Nginx o Apache. Este tutorial utilizará Nginx.
Pasos iniciales
Comprueba tu versión de CentOS:
cat /etc/centos-release
# CentOS Linux release 8.0.1905 (Core)
Configura la zona horaria:
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'
Actualiza los paquetes de tu sistema operativo (software). Este es un primer paso importante porque garantiza que tienes las últimas actualizaciones y correcciones de seguridad de los paquetes de software por defecto de tu sistema operativo:
sudo yum update -y
Instala algunos paquetes esenciales que son necesarios para la administración básica del sistema operativo CentOS:
sudo yum install -y curl wget vim git unzip socat bash-completion epel-release
Paso 1 – Instalar PHP
Instala PHP, así como las extensiones PHP necesarias:
sudo yum install -y php-cli php-fpm php-common php-mbstring php-gd php-intl php-mysql php-json php-zip
Comprueba la versión de PHP:
php --version
# PHP 7.2.19 (cli) (built: Jun 2 2019 09:49:05) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
Para mostrar el PHP compilado en módulos, puedes ejecutar:
php -m
ctype
curl
exif
fileinfo
. . .
. . .
Iniciar y habilitar el servicio PHP-FPM:
sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.service
Paso 2 – Instalar MariaDB
Instala el servidor de bases de datos MariaDB:
sudo yum install -y mariadb-server
Comprueba la versión de MariaDB:
mysql --version
# mysql Ver 15.1 Distrib 10.3.11-MariaDB, for Linux (x86_64) using readline 5.1
Inicia y habilita el servicio MariaDB:
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service
Ejecuta el script mysql_secure_installation
para mejorar la seguridad de tu instalación de MariaDB:
sudo mysql_secure_installation
Accede a MariaDB como usuario root:
sudo mysql -u root -p
# Enter password:
Crea una nueva base de datos MariaDB y un usuario de base de datos, y recuerda las credenciales:
CREATE DATABASE dbname;
GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
quit
NOTA: Sustituye dbname
y username
por los nombres adecuados para tu instalación. Sustituye password
por una contraseña fuerte.
Paso 3 – Instalar el cliente Acme.sh y obtener el certificado Let’s Encrypt (opcional)
Asegurar tu sitio web con HTTPS no es necesario, pero es una buena práctica para asegurar el tráfico de tu sitio. Para obtener un certificado SSL de Let’s Encrypt utilizaremos el cliente Acme.sh. Acme.sh es un software de shell Unix puro para obtener certificados TLS de Let’s Encrypt con cero dependencias.
Descarga e instala acme.sh:
sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail [email protected]
source ~/.bashrc
cd ~
Comprueba la versión de acme.sh:
acme.sh --version
# v2.8.3
Obtén los certificados RSA y ECC/ECDSA para tu dominio/nombre de host:
# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256
Si quieres certificados falsos para hacer pruebas, puedes añadir --staging flag to the above commands.
Después de ejecutar los comandos anteriores, tus certificados y claves estarán dentro:
- Para RSA:
/home/username/example.com directory.
- Para ECC/ECDSA:
/home/username/example.com_ecc directory.
Para listar tus certificados emitidos puedes ejecutar:
acme.sh --list
Crea un directorio para almacenar tus certificados. Utilizaremos un directorio /etc/letsencrypt.
mkdir -p /etc/letsecnrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc
Instala/copia los certificados en /etc/letsencrypt directorio:
# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
Todos los certificados se renovarán automáticamente cada 60 días.
Tras obtener los certs sal del usuario root y vuelve al usuario sudo normal:
exit
Paso 4 - Instalar Nginx
Instala el servidor web Nginx:
sudo yum install -y nginx
Comprueba la versión de Nginx:
nginx -v
# nginx version: nginx/1.12.2
Inicia y habilita Nginx:
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
Configura Nginx para ExpressionEngine. Ejecuta sudo vi /etc/nginx/conf.d/expressionengine.conf
y rellena el archivo con la siguiente configuración.
server {
listen 443 ssl;
listen 80;
server_name example.com;
root /var/www/expressionengine;
# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;
index index.php;
location / {
index index.php;
try_files $uri $uri/ @ee;
}
location @ee {
rewrite ^(.*) /index.php?$1 last;
}
location ~* \.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Comprueba que la configuración de NGINX no tiene errores de sintaxis:
sudo nginx -t
Recarga el servicio NGINX:
sudo systemctl reload nginx.service
Paso 5 - Instalar ExpressionEngine
Crea un directorio raíz de documentos en el que deba residir ExpressionEngine:
sudo mkdir -p /var/www/expressionengine
Navega hasta la carpeta raíz del documento:
cd /var/www/expressionengine
Descarga la última versión de ExpressionEngine y descomprime los archivos en una carpeta de tu servidor:
sudo wget -O ee.zip --referer https://expressionengine.com/ 'https://expressionengine.com/?ACT=243'
sudo unzip ee.zip
sudo rm ee.zip
Cambia la propiedad del directorio /var/www/expressionengine
a nginx:
sudo chown -R nginx:nginx /var/www/expressionengine
Ejecuta sudo vim /etc/php-fpm.d/www.conf
y establece el usuario y el grupo como nginx
. Inicialmente, estarán establecidos como apache:
sudo vi /etc/php-fpm.d/www.conf
# user = nginx
# group = nginx
Reinicia el servicio PHP-FPM:
sudo systemctl restart php-fpm.service
Dirige tu navegador a la URL del archivo admin.php
que has subido. Por ejemplo: http://example.com/admin.php
. Sigue las instrucciones en pantalla para instalar ExpressionEngine. Una vez que el asistente de instalación haya terminado, deberás cambiar el nombre o eliminar el directorio system/ee/installer/
de tu servidor.
Paso 6 - Completa la instalación de ExpressionEngine
Completa la instalación de ExpressionEngine introduciendo los datos de la base de datos y de la cuenta de administrador:
Después, verás la página de inicio de sesión por defecto:
Este es el panel de administración de ExpressionEngine:
Y esta es la página del frontend:
¡Ya está! La instalación de ExpressionEngine se ha completado.