Cómo instalar el sistema de páginas de estado Cachet en FreeBSD 12
Cachet es un bonito y potente sistema de páginas de estado de código abierto escrito en PHP que te permite comunicar mejor los tiempos de inactividad y los fallos del sistema a tus clientes, equipos y accionistas. La aplicación ofrece muchas funciones, las más importantes de las cuales son: una potente API JSON, informes de eventos, métricas, soporte de transcripción para mensajes de eventos, notificaciones a suscriptores por correo electrónico, autenticación de dos factores. En este tutorial, instalaremos el sistema de páginas de estado Cachet utilizando PHP, Nginx, MariaDB y Composer en el sistema FreeBSD 12.
Requisitos
Para ejecutar Cachet en tu sistema FreeBSD 12 necesitarás un par de cosas:
- PHP versión 7.1 o superior
- Servidor HTTP compatible con PHP (por ejemplo: Nginx, Apache, Caddy). Este tutorial utilizará Nginx.
- Compositor
- Una base de datos compatible: MySQL/MariaDB, PostgreSQL o SQLite. Este tutorial utilizará MariaDB.
- Git
- Acme.sh
Requisitos previos
- Un sistema operativo FreeBSD 12.
- Un usuario no root con privilegios sudo.
Pasos iniciales
Comprueba tu versión de FreeBSD:
uname -ro # FreeBSD 12.0-RELEASE
Configura la zona horaria:
tzsetup
Actualiza los paquetes (software) de tu sistema operativo. Este es un primer paso importante porque te asegura que tienes las últimas actualizaciones y correcciones de seguridad para 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
Paso 1 – Instalar PHP y las extensiones PHP necesarias
Instala PHP, así como las extensiones PHP necesarias:
sudo pkg install -y php72 php72-ctype php72-curl php72-dom php72-hash php72-iconv php72-gd php72-json php72-mbstring php72-openssl php72-session php72-simplexml php72-xml php72-zip php72-zlib php72-pdo php72-pdo_mysql php72-mysqli php72-pgsql php72-sqlite3 php72-filter php72-ftp php72-tokenizer php72-calendar php72-pecl-APCu php72-opcache php72-pecl-redis php72-phar php72-fileinfo
Comprueba la versión de PHP:
php --version
# PHP 7.2.7 (cli) (built: Jul 25 2019 01:28:53) ( NTS ) # Copyright (c) 1997-2018 The PHP Group # Zend Engine v3.3.7, Copyright (c) 1998-2018 Zend Technologies # with Zend OPcache v7.3.7, Copyright (c) 1999-2018, by Zend Technologies
Habilita e inicia el servicio PHP-FPM:
sudo sysrc php_fpm_enable=yes sudo service php-fpm start
Podemos pasar al siguiente paso, que es obtener certificados SSL gratuitos de Let’s Encrypt CA.
Paso 2 – Instalar MariaDB y crear una base de datos para Cachet
Cachetes compatible con MySQL, MariaDBPostgreSQL y SQLitey SQLite. En este tutorial, utilizaremosMariaDB como servidor de bases de datos.
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.17-MariaDB, for FreeBSD11.2 (amd64) using readline 5.1
Habilita e inicia el servicio MariaDB:
sudo sysrc mysql_enable="yes" sudo service mysql-server start
Ejecuta mysql_secure installation
script para mejorar la seguridad de MariaDB y establecer la contraseña para MariaDB root
usuario:
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 Cachet y recuerda las credenciales:
CREATE DATABASE dbname; CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
Sustituye dbname
, username
y password
por tus nombres.
Sal de MariaDB:
exit
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 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 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.0
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 la bandera --staging
a los comandos anteriores.
Después de ejecutar los comandos anteriores, tus certificados y claves estarán en:
- Para RSA: directorio
/home/username/example.com
. - 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. Nosotros utilizaremos el 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 certificados sal del usuario root y vuelve al usuario sudo normal:
exit
Paso 4 – Instalar NGINX y configurar NGINX para Matomo
Cachet puede funcionar correctamente con muchos servidores web. En este tutorial, hemos seleccionadoNGINX.Si prefieres el servidor web Apache a NGINX, visita https://docs.cachethq.io/docs/installing-cachet#section-running-cachet-on-apachepara obtener más información.
Descarga e instala la última versión mainline de Nginx desde el repositorio de FreeBSD:
sudo pkg install -y nginx-devel
Comprueba la versión de Nginx:
nginx -v # nginx version: nginx/1.17.2
Habilita e inicia Nginx:
sudo sysrc nginx_enable=yes sudo service nginx start
Configura Nginx para Cachet ejecutando:
sudo vim /usr/local/etc/nginx/cachet.conf
Y rellena el archivo con la siguiente configuración:
upstream php {
server 127.0.0.1:9000;
}
server {
listen [::]:443 ssl;
listen 443 ssl;
listen [::]:80;
listen 80;
server_name example.com;
root /usr/local/www/cachet/public;
index index.php;
# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;;
ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
# ECDSA
ssl_certificate /etc/letsencrypt/sexample.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
fastcgi_keep_conn on;
}
}
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 Cachet.
include cachet.conf;
Comprueba si hay errores de sintaxis en la configuración de Nginx:
sudo nginx -t
Recarga el servicio Nginx:
sudo service nginx reload
Paso 5 – Instalar Composer
Instala Composer, el gestor de dependencias de PHP a nivel global:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { 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.9.0 2019-02-11 10:52:10
Paso 6 – Instalar Cachet
Crea un directorio raíz de documentos donde deba residir Cachet:
sudo mkdir -p /usr/local/www/cachet
Cambia la propiedad del directorio /usr/local/www/cachet
a your_user
:
sudo chown -R your_user:your_user /usr/local/www/cachet
NOTA: Sustituye jour_user
por tu nombre de usuario no root creado inicialmente.
Navega hasta el directorio raíz del documento:
cd /usr/local/www/cachet
Descarga el código fuente de Cachet con Git:
git clone -b 2.4 --single-branch https://github.com/cachethq/Cachet.git .
Copia .env.example
en .env
y configura la base de datos y APP_URL
configuración en .env
archivo:
cp .env.example .env vim .env
Instala las dependencias de Cachet con Composer:
composer install --no-dev -o
Configura la clave de la aplicación ejecutando:
php artisan key:generate
Instalar Cachet:
php artisan cachet:install
Proporciona la propiedad adecuada:
sudo chown -R www:www /usr/local/www/cachet
Abre tu sitio en un navegador web y sigue las instrucciones de la pantalla para finalizar la instalación de Cachet.
Paso 7 – Completa la configuración de Cachet
Selecciona los controladores de caché y de sesión y configura las opciones de correo:
Configura los ajustes generales del sitio, como el nombre del sitio, el dominio del sitio, la zona horaria y el idioma:
Crea una cuenta de usuario administrativo:
Después de esto, deberías recibir un mensaje indicando que Cachet se ha configurado correctamente. Puedes abrir el panel de Cachet pulsando el botón «Ir al panel»:
La instalación y configuración de Cachet ha finalizado.
Para acceder al panel de Cachet, añade /dashboard
a la URL de tu sitio web.