Cómo instalar Monica Personal Relationship Manager en CentOS 8
Monica es una aplicación web de gestión de relaciones personales (PRM) de código abierto, diseñada para organizar las interacciones con tus seres queridos. Piensa en ella como un CRM (una herramienta popular utilizada por los equipos de ventas en el mundo corporativo) para tus amigos o familiares. Monica permite a las personas hacer un seguimiento de todo lo importante sobre sus amigos y familiares. Como las actividades que se realizan con ellos. Cuándo llamaste a alguien por última vez. De qué hablasteis. Te ayudará a recordar el nombre y la edad de los niños. También puede recordarte que tienes que llamar a alguien con quien hace tiempo que no hablas. Este tutorial repasa la instalación de Monica en CentOS 8.
Características
- Añadir y gestionar contactos
- Definir relaciones entre contactos
- Recordatorios
- Recordatorios automáticos de cumpleaños
- Mantén el contacto con un contacto enviando recordatorios en un intervalo determinado
- Gestión de deudas
- Posibilidad de añadir notas a un contacto
- Capacidad de indicar cómo has conocido a alguien
- Gestión de las actividades realizadas con un contacto
- Gestión de tareas
- Gestión de regalos
- Gestión de las direcciones y de las diferentes formas de contactar con alguien
- Gestión de los tipos de campos de contacto
- Gestión de las mascotas de los contactos
- Diario básico
- Posibilidad de indicar cómo ha ido el día
- Carga de documentos y fotos
- Exportación e importación de datos
- Exportar el contacto como vCard
- Posibilidad de establecer géneros personalizados
- Capacidad de definir tipos de actividad personalizados
- Capacidad de establecer contactos favoritos
- Seguimiento de las conversaciones realizadas en las redes sociales o en los SMS
- Multiusuario
- Etiquetas para organizar los contactos
- Posibilidad de definir qué sección debe aparecer en la hoja de contactos
- Multidivisas
- Multi-idiomas
- Una API que cubre la mayoría de los datos
Requisitos
- CentOS 8
- Git
- NPM (Node Package Manager)
- PHP versión 7.1 o más reciente
- MySQL
- Servidor HTTP con soporte para PHP (por ejemplo: Apache, Nginx, Caddy…)
- Compositor
- Opcional: Redis o Beanstalk
Requisitos previos
- Un sistema operativo CentOS 8.
- Un usuario no root con privilegios en
sudo
.
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 gcc-c++ make libpng-devel
Paso 1 – Instalar PHP
Instala PHP, así como las extensiones PHP necesarias:
sudo yum install -y php php-cli php-fpm php-common php-mbstring php-xml php-mysqlnd php-curl php-zip php-intl php-bcmath php-gd php-json php-gmp
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.11-1-(cli) (built: Oct 26 2019 14:14:18) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.3.11, Copyright (c) 1998-2018 Zend Technologies
# with Zend OPcache v7.3.11-1~deb10u1, Copyright (c) 1999-2018, by Zend Technologies
Iniciar y habilitar el servicio PHP-FPM:
sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.service
Paso 2 – Instalar el cliente acme.sh y obtener el certificado Let’s Encrypt ( opcional )
Asegurar tu sitio 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 sencillo programa de shell de UNIX 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 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 probarlos, 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:
/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 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 certs sal del usuario root y vuelve al usuario sudo normal:
exit
Paso 3 - Instalar MariaDB y crear una base de datos para Mónica
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.17-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Inicia y habilita el servicio MariaDB:
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service
Ejecuta el script mysql_secure installation
script para mejorar la seguridad de MariaDB y establecer la contraseña para MariaDB root
usuario 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 Mónica y recuerda las credenciales:
mariadb> CREATE DATABASE dbname;
mariadb> GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
mariadb> FLUSH PRIVILEGES;
Sal de MariaDB:
mariadb> exit
Sustituye dbname,
username
y password
por tus nombres.
Paso 4 - Instalar y configurar NGINX
Monica funcionará bien con la mayoría de los principales programas de servidores web con soporte para PHP, pero en esta guía utilizaremos NGINX. Siéntete libre de utilizar Apache si lo prefieres en lugar de NGINX.
Instala NGINX:
sudo yum install -y nginx
Comprueba la versión de NGINX:
sudo nginx -v
# nginx version: nginx/1.14.2
Ejecuta el comando sudo vim /etc/nginx/conf.d/monica.conf
y configura NGINX para Mónica.
server {
listen 80;
listen 443 ssl;
server_name example.com;
root /var/www/monica/public/;
# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
# ECC
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;
index index.php;
charset utf-8;
location ^~ /storage {
deny all;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~* \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}
}
Prueba la configuración de NGINX:
sudo nginx -t
Recarga NGINX:
sudo systemctl reload nginx.service
Paso 5 - Instalar Node.js y npm
Instala Node.js:
curl --silent --location https://rpm.nodesource.com/setup_12.x | sudo bash -
sudo yum install -y nodejs
Comprueba las versiones de Node.js y npm:
node -v && npm -v
# v12.13.1
# 6.12.1
Paso 6 - Instalar Composer
Instala Composer:
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.1 2019-11-01 17:20:17
Paso 7 - Instalar y configurar Monica
Crea una carpeta raíz de documentos vacía en la que se instalará Monica:
sudo mkdir -p /var/www/monica
Navega hasta la carpeta raíz de documentos:
cd /var/www/monica
Cambia la propiedad de la carpeta /var/www/monica
al usuario johndoe:
No olvides sustituir "johndoe" por tu nombre de usuario.
sudo chown -R johndoe:johndoe /var/www/monica
Clona el repositorio de Monica en él:
git clone https://github.com/monicahq/monica.git .
git checkout tags/v2.15.2
NOTA: Comprueba que se trata de una versión etiquetada de Mónica, ya que la rama maestra puede no ser siempre estable. Busca la última versión oficial en la página de versiones de Github y actualízala con el número de versión anterior a la última versión.
Para crear tu versión de todas las variables de entorno necesarias para que el proyecto funcione ejecuta
cp .env.example .env
Actualiza .env
a tus necesidades específicas. No olvides poner DB_USERNAME
y DB_PASSWORD
con las configuraciones que se utilizan detrás. Tendrás que configurar un servidor de correo para que el registro y los recordatorios funcionen correctamente.
Ejecuta composer install --no-interaction --no-suggest --no-dev
para instalar todos los paquetes.
Ejecuta php artisan key:generate
para generar una clave de aplicación. Esto config uraráAPP_KEY
con el valor correcto automáticamente.
Ejecuta php artisan setup:production -v
para ejecutar las migraciones, sembrar la base de datos y las carpetas de enlaces simbólicos.
Establece la propiedad y los permisos adecuados:
sudo chown -R nginx:nginx /var/www/monica
sudo chmod -R 775 /var/www/monica/storage
Ejecuta sudo vim /etc/php-fpm.d/www.conf
y establece el usuario y el grupo nginx
. Inicialmente, se establecerá el usuario y el grupo apache
.
sudo vim /etc/php-fpm.d/www.conf
Reinicia php-fpm.service:
sudo systemctl restart php-fpm.service
Paso 8 - Completa la instalación de Mónica
Ahora, abre tu navegador web y escribe la URL http://example.com. Serás redirigido a la siguiente página:
Proporciona tu dirección de correo electrónico, tu nombre y tu contraseña. A continuación, haz clic en el botón Registrar. Deberías ver el panel de control de Monica en la siguiente página: