Cómo instalar ExpressionEngine CMS con Nginx en FreeBSD 12

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

Requisitos previos

  • Un sistema operativo con FreeBSD 12.
  • Un usuario no root con privilegios sudo.

En este tutorial utilizaré el nombre de dominio ejemplo.com. Por favor, sustituye la palabra ejemplo.com por tu propio nombre de dominio siempre que aparezca en los comandos y archivos de configuración que aparecen a continuación (especialmente en el archivo de configuración de Nginx y en los comandos de Let’s encrypt).

Pasos iniciales

Comprueba tu versión de FreeBSD:

uname -ro
# FreeBSD 12.0-RELEASE

Configura la zona horaria:

tzsetup

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:

freebsd-update fetch install
pkg update && pkg upgrade -y

Instala algunos paquetes esenciales que son necesarios para la administración básica del sistema operativo FreeBSD 12.0:

pkg install -y sudo vim unzip wget bash socat

Instalar PHP

Instala PHP, así como las extensiones PHP necesarias:

sudo pkg install -y php72 php72-mbstring php72-tokenizer php72-pdo php72-pdo_mysql php72-openssl php72-hash php72-json php72-phar php72-filter php72-zlib php72-dom php72-xml php72-xmlwriter php72-xmlreader php72-curl php72-session php72-ctype php72-iconv php72-gd php72-simplexml php72-zip php72-filter php72-tokenizer php72-calendar php72-fileinfo php72-intl php72-phar php72-soap php72-xmlrpc

Para mostrar el PHP compilado en módulos, puedes ejecutar:

php -m

ctype
curl
exif
fileinfo
. . .
. . .

Comprobar la versión de PHP:

php --version

# PHP 7.2.16 (cli) (built: Apr 30 2019 08:37:17) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.3.5, Copyright (c) 1998-2018 Zend Technologies
# with Zend OPcache v7.3.5, Copyright (c) 1999-2018, by Zend Technologies

Iniciar y habilitar el servicio PHP-FPM:

sudo sysrc php_fpm_enable=yes
sudo service php-fpm start

Instalar MariaDB

Instala el servidor de bases de datos MariaDB:

sudo pkg install -y mariadb102-client mariadb102-server

Comprueba la versión de MariaDB:

mysql --version
# mysql  Ver 15.1 Distrib 10.2.23-MariaDB, for Linux (x86_64) using readline 5.1

Inicia y habilita el servicio MariaDB:

sudo sysrc mysql_enable="yes"
sudo service mysql-server start

Ejecuta el scriptmysql_secure installation para mejorarla seguridad de MariaDB y establece la contraseña del usuario de MariaDB root

sudo mysql_secure_installation

Responde a cada una de las preguntas:

Would you like to setup VALIDATE PASSWORD plugin? N
New password: your_secure_password
Re-enter new password: your_secure_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

Conéctate al shell de MariaDB como usuario root:

sudo mysql -u root -p
# Enter password

Crea una base de datos MariaDB vacía y un usuario para Shopware y recuerda las credenciales:

mysql> CREATE DATABASE dbname;
mysql> GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;

Sal de MariaDB:

mysql> exit

Sustituye dbname, username y password por tus propios nombres.

Instala el cliente Acme.sh y obtén 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 TLS 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 pkg install -y acme.sh

Comprueba la versión de acme.sh:

acme.sh --version
# v2.8.2

Obtén 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 --staginga los comandos anteriores.

Después de ejecutar los comandos anteriores, tuscertificados y claves estarán en:

  • Para RSA: /home/username/example.com directorio.
  • Para ECC/ECDSA: directorio /home/username/example.com_ecc.

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

Instalar/copiar los certificados en/etc/letsencryptdirectorio.

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

Después de obtener los certificados sal del usuario root y vuelve al usuario sudo normal:

exit

Instalar Nginx

Instala el servidor web NGINX:

sudo pkg install -y nginx

Comprueba la versión de NGINX:

nginx -v
# nginx version: nginx/1.14.2

Inicia y habilita el servicio NGINX:

sudo sysrc nginx_enable=yes
sudo service nginx start

Configura Nginx para ExpressionEngine ejecutando:

sudo vim /usr/local/etc/nginx/expressionengine.conf

Y rellena el archivo con la siguiente configuración:

server {

listen 443 ssl; listen 80; server_name example.com; root /usr/local/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.php5; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }

Ejecuta sudo vim /usr/local/etc/nginx/nginx.conf y añade la siguiente línea al bloque http {} para incluir la configuración de Shopware.

include expressionEngine.conf;

Comprueba que la configuración de Nginx no tiene errores de sintaxis:

sudo nginx -t

Recarga el servicio Nginx:

sudo service nginx reload

Instala ExpressionEngine

Crea un directorio raíz de documentos en el que deba residir ExpressionEngine:

sudo mkdir -p /usr/local/www/expressionengine

Navega hasta la carpeta raíz del documento:

cd /usr/local/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 /usr/local/www/expressionengine a www:

sudo chown -R www:www /usr/local/www/expressionengine

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.

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:

Configuración de la cuenta de administrador

Después, verás la página de inicio de sesión por defecto:

Primero inicia sesión en ExpressionEngine

Este es el panel de administración de ExpressionEngine:

Panel de control de ExpressionEngine

Y esta es la página del frontend:

Sitio web en ExpressionEngine CMS

¡Ya está! La instalación de ExpressionEngine se ha completado.

También te podría gustar...