Instale Odoo 15 en CentOS 8|AlmaLinux 8 con Let's Encrypt |
Esta publicación ha sido escrita para guiar a los usuarios de Linux a través de la instalación del sistema ERP Odoo 15 en CentOS 8/AlmaLinux 8. Odoo es una aplicación de gestión empresarial de código abierto con funciones de POS, CRM, gestión de proyectos, creación de sitios web, marketing, gestión de almacenes, Comercio electrónico, facturación y contabilidad, fabricación y muchas otras funciones interesantes. Estas funciones adicionales se pueden desbloquear a través de muchos complementos de Odoo disponibles para su instalación.
A partir de la actualización de este artículo, la última versión del software Odoo ERP es la versión 15. Comenzaremos la instalación con la actualización del sistema, instalando todas las dependencias necesarias, como el servidor de base de datos PostgreSQL, y finalmente realizando la instalación real de Odoo ERP en CentOS 8/AlmaLinux. 8. Nginx se utilizará como proxy frontal para el sistema Odoo ERP y CRM en CentOS 8/AlmaLinux 8.
Paso 1: actualice el sistema operativo, configure el nombre de host y el DNS
Inicie sesión en el servidor y realice la actualización del sistema, luego reinicie.
sudo dnf -y update
Después de reiniciar el sistema, configure el nombre de host correcto.
sudo hostnamectl set-hostname erp.hirebestengineers.com --static
Agregue también un registro A válido en su servidor DNS.
Guarde el registro y valide que esté funcionando haciendo ping o excavando.
$ sudo dnf -y install bind-utils
$ dig A erp.hirebestengineers.com +short
168.119.127.45
Paso 2: Agregar el repositorio EPEL al servidor
Agregue el repositorio EPEL ejecutando los siguientes comandos.
sudo yum -y install epel-release vim bash-completion
Ponga SELinux en modo permisivo.
sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
Ejecute el comando yum repolist.
$ sudo yum repolist
repo id repo name
AppStream AlmaLinux 8 - AppStream
BaseOS AlmaLinux 8 - Base
epel Extra Packages for Enterprise Linux 8 - x86_64
epel-modular Extra Packages for Enterprise Linux Modular 8 - x86_64
extras AlmaLinux 8 - Extras
Paso 3: Instale el servidor de base de datos PostgreSQL
El repositorio de Odoo ERP utiliza el servidor de base de datos PostgreSQL para el almacenamiento de datos. Los paquetes están disponibles en Módulos DNF.
Deshabilite el módulo PostgreSQL predeterminado actual.
sudo dnf -qy module disable postgresql
Habilite el módulo PostgreSQL 13.
sudo dnf module -y enable postgresql:13
Luego instale los paquetes del cliente y del servidor PostgreSQL.
sudo dnf -y install @postgresql
Después de la instalación, se requiere la inicialización de la base de datos antes de poder iniciar el servicio.
$ sudo /usr/bin/postgresql-setup --initdb --unit postgresql
* Initializing database in '/var/lib/pgsql/data'
* Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
Inicie y habilite el servidor de base de datos.
$ sudo systemctl enable --now postgresql
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /usr/lib/systemd/system/postgresql.service.
Crear usuario de base de datos odoo.
sudo su - postgres -c "createuser -s odoo"
Paso 4: Instale wkhtmltopdf en sistemas basados en EL
Odoo utiliza wkhtmltopdf para generar informes en formato PDF. La versión recomendada de wkhtmltopdf para instalar es 0.12.6 y está disponible en la página de descarga de wkhtmltopdf, en la sección de archivo.
sudo yum -y install wget
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.centos8.x86_64.rpm
sudo yum localinstall ./wkhtmltox-0.12.6-1.centos8.x86_64.rpm
Continuar con la instalación:
Dependencies resolved.
======================================================================================================================================================================================================
Package Architecture Version Repository Size
======================================================================================================================================================================================================
Installing:
wkhtmltox x86_64 1:0.12.6-1.centos8 @commandline 15 M
Installing dependencies:
libfontenc x86_64 1.1.3-8.el8 appstream 37 k
libjpeg-turbo x86_64 1.5.3-10.el8 appstream 156 k
libpkgconf x86_64 1.4.2-1.el8 baseos 35 k
pkgconf x86_64 1.4.2-1.el8 baseos 38 k
pkgconf-m4 noarch 1.4.2-1.el8 baseos 17 k
pkgconf-pkg-config x86_64 1.4.2-1.el8 baseos 15 k
ttmkfdir x86_64 3.0.9-54.el8 appstream 62 k
xorg-x11-font-utils x86_64 1:7.5-40.el8 appstream 103 k
xorg-x11-fonts-75dpi noarch 7.5-19.el8 appstream 2.8 M
xorg-x11-fonts-Type1 noarch 7.5-19.el8 appstream 522 k
Transaction Summary
======================================================================================================================================================================================================
Install 11 Packages
Total size: 19 M
Total download size: 3.7 M
Installed size: 129 M
Is this ok [y/N]: y
Confirmar la versión instalada.
$ wkhtmltopdf --version
wkhtmltopdf 0.12.6 (with patched qt)
Estás listo para continuar con el siguiente paso de la instalación real de Odoo en CentOS 8/AlmaLinux 8.
Paso 5: Instale Odoo 15 en CentOS 8/AlmaLinux 8
Agregar repositorio EPEL:
sudo yum -y install epel-release
Habilite también el repositorio de PowerTools.
sudo dnf config-manager --set-enabled powertools
Instale Python y otras dependencias de compilación:
sudo yum -y install vim bash-completion zip git gcc openldap-devel python3 python3-devel redhat-rpm-config libxslt-devel libjpeg-devel freetype-devel bzip2-devel
Agregue usuario y grupo del sistema Odoo.
sudo useradd -r -m -U -d /opt/odoo -s /bin/bash odoo
Establezca la contraseña para la cuenta de usuario creada.
$ sudo passwd odoo
Changing password for user odoo.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
Verificar datos de usuario:
$ id odoo
uid=992(odoo) gid=989(odoo) groups=989(odoo)
Cambie a la cuenta del usuario creado:
sudo su - odoo
Clonar la rama 15 de Github.
git -C /opt/odoo/ clone https://www.github.com/odoo/odoo --depth 1 --branch 15.0
Cree Python Virtualenv.
cd /opt/odoo
python3 -m venv odoo-venv
Activar el entorno virtual creado.
source odoo-venv/bin/activate
Instale las dependencias de Python en el archivo de requisitos.
pip3 install -r odoo/requirements.txt
Después de instalaciones exitosas, desactive el entorno virtual,
deactivate
exit
Cree un archivo de registro de Odoo:
sudo touch /var/log/odoo.log
Crear ruta de complementos personalizados:
sudo mkdir /opt/odoo/odoo/custom-addons
Establezca los permisos de directorio correctos:
sudo chown -R odoo:odoo /opt/odoo/ /var/log/odoo.log
Cree un archivo de configuración de instancia de Odoo:
$ sudo vim /etc/odoo.conf
[options]
proxy_mode = True
; This is the password that allows database operations:
admin_passwd = MyStr0ngAdminP@ssw0rd
db_host = False
db_port = False
db_user = odoo
db_password = False
xmlrpc_port = 8069
logfile = /var/log/odoo.log
logrotate = True
addons_path = /opt/odoo/odoo/addons,/opt/odoo/odoo/custom-addons
Cree el archivo de unidad de servicio Systemd.
sudo tee /etc/systemd/system/odoo.service<<EOF
[Unit]
Description=Odoo ERP Server
Requires=postgresql.service
After=network.target postgresql.service
[Service]
User=odoo
Group=odoo
Type=simple
SyslogIdentifier=odoo
PermissionsStartOnly=true
ExecStart=/opt/odoo/odoo-venv/bin/python3 /opt/odoo/odoo/odoo-bin -c /etc/odoo.conf
StandardOutput=journal+console
[Install]
WantedBy=multi-user.target
EOF
Servicios de recarga del sistema:
sudo systemctl daemon-reload
Inicie el servicio odoo creado.
sudo systemctl start odoo
sudo systemctl restart odoo
Habilítelo para que se inicie en el arranque.
$ sudo systemctl enable odoo
Created symlink /etc/systemd/system/multi-user.target.wants/odoo.service → /etc/systemd/system/odoo.service.
Confirme si el servicio Odoo está configurado para iniciarse en el arranque.
$ systemctl is-enabled odoo
enabled
Compruebe si está funcionando.
$ systemctl status odoo
● odoo.service - Odoo ERP Server
Loaded: loaded (/etc/systemd/system/odoo.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2020-10-11 18:38:30 CEST; 48s ago
Main PID: 25201 (python3)
Tasks: 4 (limit: 24392)
Memory: 59.2M
CGroup: /system.slice/odoo.service
└─25201 /opt/odoo/odoo-venv/bin/python3 /opt/odoo/odoo/odoo-bin -c /etc/odoo.conf
Oct 11 18:38:30 erp.hirebestengineers.com systemd[1]: Started Odoo ERP Server.
El servicio Odoo debe vincularse al puerto TCP 8069 una vez iniciado.
$ sudo ss -tunelp | grep 8069
tcp LISTEN 0 128 0.0.0.0:8069 0.0.0.0:* users:(("python3",pid=25201,fd=4)) uid:992 ino:64882 sk:5 <->
Paso 6: Configurar Nginx Proxy (sin SSL): no recomendado
Instale el servidor web Nginx en CentOS 8:
sudo yum -y install nginx
sudo systemctl enable --now nginx
Cree un nuevo archivo de configuración para odoo.
sudo vim /etc/nginx/conf.d/odoo.conf
Modifique este fragmento de configuración para que se ajuste a su configuración.
# Odoo Upstreams
upstream odooserver {
server 127.0.0.1:8069;
}
server {
listen 80;
server_name erp.hirebestengineers.com;
access_log /var/log/nginx/odoo_access.log;
error_log /var/log/nginx/odoo_error.log;
# Proxy settings
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
# Request for root domain
location / {
proxy_redirect off;
proxy_pass http://odooserver;
}
# Cache static files
location ~* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass http://odooserver;
}
# Gzip
gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
gzip on;
}
Reemplace erp.computingforgeeks con su nombre de dominio y luego valide el archivo de configuración de Nginx.
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Si todo parece bien, reinicie Nginx.
sudo systemctl restart nginx
Paso 7: Configurar el proxy Nginx (con certificado SSL): recomendado
Si su servidor tiene una IP pública, puede crear un registro DNS A para que su dominio apunte al servidor Odoo y solicite el certificado SSL Let's Encrypt gratuito.
Instale el servidor Nginx.
sudo yum -y install nginx
sudo systemctl enable --now nginx
Instale la herramienta certbot.
sudo yum -y install epel-release wget
sudo yum -y install certbot
Detenga el servicio Nginx.
sudo systemctl stop nginx
Obtenga certificados SSL Let's Encrypt para su dominio.
export DOMAIN="erp.hirebestengineers.com"
export EMAIL="[email "
sudo certbot certonly --standalone -d ${DOMAIN} --preferred-challenges http --agree-tos -n -m ${EMAIL} --keep-until-expiring
La ruta a los archivos de certificado se muestra en la sección “NOTAS IMPORTANTES”.
IMPORTANT NOTES:
Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/erp.hirebestengineers.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/erp.hirebestengineers.com/privkey.pem
Your cert will expire on 2021-01-09. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again. To non-interactively renew all of your certificates, run
"certbot-auto renew"
Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Cree cron para la renovación del certificado.
$ sudo crontab -e
15 3 * * * /usr/bin/certbot renew --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"
Cree el archivo de configuración de Nginx.
sudo vim /etc/nginx/conf.d/odoo.conf
Pegue lo siguiente en el archivo y modifíquelo para adaptarlo a su entorno.
# Odoo Upstreams
upstream odooserver {
server 127.0.0.1:8069;
}
# http to https redirection
server {
listen 80;
server_name erp.hirebestengineers.com;
return 301 https://erp.hirebestengineers.com$request_uri;
}
server {
listen 443 ssl;
server_name erp.hirebestengineers.com;
access_log /var/log/nginx/odoo_access.log;
error_log /var/log/nginx/odoo_error.log;
# SSL
ssl_certificate /etc/letsencrypt/live/erp.hirebestengineers.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/erp.hirebestengineers.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/erp.hirebestengineers.com/chain.pem;
# Proxy settings
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
# Request for root domain
location / {
proxy_redirect off;
proxy_pass http://odooserver;
}
# Cache static files
location ~* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass http://odooserver;
}
# Gzip Compression
gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
gzip on;
}
Valide sus configuraciones de Nginx.
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Reinicie Nginx.
sudo systemctl restart nginx
Paso 8: Acceda a Odoo 15 en CentOS 8/AlmaLinux 8
Acceda a la página web de Odoo en su nombre de dominio desde una web: https://DNShostname.
También puede acceder a la página web de Odoo directamente en:
http://<your_server_IP_address>:8069
En la primera página, establezca el nombre de la base de datos, la dirección de correo electrónico del usuario administrador y la contraseña para el usuario administrador.
Ahora tiene Odoo ERP instalado y ejecutándose en el servidor CentOS 8/AlmaLinux 8. Siga visitando nuestro sitio web para conocer los últimos artículos.
Más artículos sobre CentOS 8/AlmaLinux 8:
- Cómo instalar el clúster Kubernetes MicroK8s en CentOS 8
- Cómo configurar TigerVNC en CentOS 8 para RDP
- Instale el cliente Google Hangouts en CentOS 8