Cómo instalar Fork CMS con NGINX en Debian 9

Fork es un CMS de código abierto fácil de usar que utiliza componentes Symfony. Tiene una interfaz intuitiva y fácil de usar, potentes aplicaciones que puedes descargar para ampliar tu sitio, yuna amplia colección de hermosos temas. En este tutorial, recorreremos la instalación y configuración del CMS Fork en el sistema Debian 9 utilizando Nginx como servidor web, MariaDB como motor de base de datos, y opcionalmente puedes asegurar la capa de transporte utilizando el cliente Acme.sh y la autoridad de certificados Let’s Encrypt para añadir soporte SSL.

Requisitos

Los requisitos para instalar y ejecutar Fork CMS son

  • PHP versión 7.1 o superior.
  • Deben estar instaladas y habilitadas las siguientes extensiones de PHP: cURL, libxml, DOM, SimpleXML, SPL, PDO (con controlador MySQL), mb_string, iconv, biblioteca gráfica GD2, JSON, PCRE, intl.
  • MySQL 5.0 o superior.
  • NGINX o Apache con .htaccess, mod_rewrite, mod_expires (opcional pero recomendado), mod_deflate(opcional) habilitados.

Requisitos previos

  • Un sistema operativo con Debian 9.
  • Un usuario no root con privilegios sudo.

Pasos iniciales

Comprueba tu versión de Debian:

lsb_release -ds
# Debian GNU/Linux 9.9 (stretch)

Configura la zona horaria:

dpkg-reconfigure tzdata

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:

apt update && apt upgrade -y

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

apt install -y curl wget vim git sudo unzip socat bash-completion dirmngr apt-transport-https

Paso 1 – Instalar PHP y las extensiones de PHP

Debian no proporciona la última versión de PHP en sus repositorios de software por defecto. Tendremos que añadir una comunidad mantenida en el repositorio de terceros.

sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
sudo apt update

Instala PHP, así como las extensiones PHP necesarias para Fork CMS:

sudo apt install -y php7.2 php7.2-cli php7.2-fpm php7.2-common php7.2-mysql php7.2-curl php7.2-json php7.0-zip php7.2-gd php7.2-xml php7.2-mbstring php7.2-opcache php7.2-intl

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.19-1+0~20190531112637.22+stretch~1.gbp75765b (cli) (built: May 31 2019 11:26:38) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
# with Zend OPcache v7.2.19-1+0~20190531112637.22+stretch~1.gbp75765b, Copyright (c) 1999-2018, by Zend Technologies

El servicio PHP-FPM se inicia y habilita automáticamente al reiniciar el sistema Debian 9, por lo que no es necesario iniciarlo y habilitarlo manualmente. Podemos pasar al siguiente paso, que es la instalación y configuración de la base de datos.

Paso 2 – Instalar MariaDB y crear una base de datos para Fork CMS

Instala el servidor de base de datos MariaDB:

sudo apt install -y mariadb-server

Comprueba la versión de MariaDB:

mysql --version
# mysql Ver 15.1 Distrib 10.1.38-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Ejecuta el script mysql_secure installation para mejorar la seguridad de MariaDB y establecer la contraseña del usuario raíz de MariaDB:

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 Fork CMS y recuerda las credenciales:

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

Sustituye la palabra mypassword por una contraseña segura de tu elección. Sal de MariaDB:

mysql> exit

Sustituye dbname, username and password with your own names.

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

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.

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

exit

Paso 4 - Instalar y configurar NGINX

Instala el servidor web NGINX:

sudo apt install -y nginx

Comprueba la versión de NGINX:

sudo nginx -v
# nginx version: nginx/1.10.3

Configura NGINX para Fork CMS. Ejecuta sudo vim /etc/nginx/sites-available/fork.conf y añade la siguiente configuración:

server {
    listen 80;
    listen 443 ssl;
root /var/www/fork; index index.php index.html; server_name example.com;

ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key; location / { # Checks whether the requested url exists as a file $uri or directory $uri/ in the root, else redirect to /index.php. try_files $uri $uri/ @redirects; } location @redirects { rewrite ^ /index.php; } location ~ \.php$ { try_files $uri =404; include fastcgi_params; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; fastcgi_index index.php; fastcgi_read_timeout 60; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } # Don't pollute the logs with common requests location = /robots.txt { access_log off; log_not_found off; } location = /favicon.ico { access_log off; log_not_found off; } # As Fork CMS has the app_root as doc_root, we need to restrict access to a few things for security purposes! location ~* ^/(composer\..*|vendor\/.*|Procfile$|\.git\/.*|src\/Console.*|.*\.gitignore|\.editorconfig|\.travis.yml|autoload\.php|bower\.json|phpunit\.xml\.dist|.*\.md|app\/logs\/.*|app\/config\/.*|src\/Frontend\/Cache\/CompiledTemplates.*|src\/Frontend\/Cache\/Locale\/.*\.php|src\/Frontend\/Cache\/Navigation\/.*\.php|src\/Frontend\/Cache\/Search\/.*|src\/Backend\/Cache\/CompiledTemplates\/.*|src\/Backend\/Cache\/Locale\/.*\.php)$ { deny all; access_log off; log_not_found off; } # Deny access to dot-files. location ~ /\. { deny all; access_log off; log_not_found off; } }

Activa la nueva configuración de fork.conf vinculando el archivo alsites-enabled directorio:

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

Comprueba que la configuración de NGINX no tenga errores de sintaxis:

sudo nginx -t

Recarga el servicio NGINX:

sudo systemctl reload nginx.service

Paso 5 - Instalar Composer

Instala Composer, el gestor de dependencias de PHP de forma global:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

php composer-setup.php

php -r "unlink('composer-setup.php');"

sudo mv composer.phar /usr/local/bin/composer

Comprueba la versión de Composer:

composer --version
# Composer version 1.8.5 2019-04-09 17:46:47

Paso 6 - Instalar Fork CMS

Crea un directorio raíz de documentos.

sudo mkdir -p /var/www/fork

Cambia la propiedad del directorio /var/www/fork al usuario con el que estés conectado actualmente, en mi caso, este nombre de usuario es johndoe.

sudo chown -R johndoe:johndoe /var/www/fork

Sustituye johndoe por tu nombre de usuario en el comando anterior. Descarga la última versión estable de Fork CMS desde la línea de comandos.

cd /var/www/fork
composer create-project forkcms/forkcms .

Cambia la propiedad del directorio /var/www/fork a www-data.

sudo chown -R www-data:www-data /var/www/fork

Edita el archivo app/config/parameters.yml.dist y establece la información de la base de datos.

sudo vim /var/www/fork/app/config/parameters_install.yml

Utilizando tu navegador web preferido, abre tu sitio y sigue el instalador de Fork CMS. Después de seguir el instalador deberías tener Fork en funcionamiento. Para acceder al área de administración de Fork sólo tienes que añadir /private a la URL de tu sitio.

Paso 7 - Completa la instalación de Fork CMS

Asegúrate de que tu servidor cumple todos los requisitos y continúa:

Instalador de CMS en horquilla

Selecciona el idioma y haz clic en siguiente:

Selecciona el idioma

Selecciona la configuración que desees y haz clic en siguiente:

Ajustes

Introduce la configuración de tu base de datos y haz clic en siguiente. Asegúrate de que ya has creado la base de datos.

Detalles de la base de datos

Crea el usuario y termina la instalación:

Terminar la instalación

Verás la siguiente página después de completar todos los pasos anteriores:

Inicio de sesión de Fork CMS

Has instalado con éxito Fork CMS. ¡Disfruta de tu nuevo CMS!

Enlaces

También te podría gustar...