Introducción
Odoo es un popular conjunto de aplicaciones comerciales de código abierto que ayuda a las empresas a administrar y ejecutar sus negocios. Incluye una amplia gama de aplicaciones como CRM, comercio electrónico, creación de sitios web, facturación, contabilidad, fabricación, almacén, gestión de proyectos, inventario y más, todo perfectamente integrado.
Odoo se puede instalar de diferentes formas, según el caso de uso y las tecnologías disponibles. La forma más fácil y rápida de instalar Odoo es utilizar los repositorios APT oficiales de Odoo .
La instalación de Odoo en un entorno virtual o la implementación como contenedor Docker le brinda más control sobre la aplicación y le permite ejecutar múltiples instancias de Odoo en el mismo sistema.
Este artículo cubre la instalación e implementación de Odoo 15 dentro de un entorno virtual Python en Ubuntu 20.04. Descargaremos Odoo del repositorio oficial de GitHub y usaremos Nginx como proxy inverso.
Instalar dependencias
El primer paso es instalar Git , Pip , Node.js y las herramientas necesarias para compilar Odoo:
sudo apt update
sudo apt install git python3-pip build-essential wget python3-dev python3-venv \
python3-wheel libfreetype6-dev libxml2-dev libzip-dev libldap2-dev libsasl2-dev \
python3-setuptools node-less libjpeg-dev zlib1g-dev libpq-dev \
libxslt1-dev libldap2-dev libtiff5-dev libjpeg8-dev libopenjp2-7-dev \
liblcms2-dev libwebp-dev libharfbuzz-dev libfribidi-dev libxcb1-dev
Crea un usuario del sistema
Ejecutar Odoo como root presenta un gran riesgo de seguridad. Crearemos un nuevo usuario y grupo del sistema con el directorio de inicio /opt/odoo15
que ejecutará el servicio Odoo. Para hacer esto, ejecute el siguiente comando:
sudo useradd -m -d /opt/odoo15 -U -r -s /bin/bash odoo15
Puede nombrar al usuario como desee, siempre que cree un usuario de PostgreSQL con el mismo nombre.
Instalar y configurar PostgreSQL
Odoo usa PostgreSQL como el backend de la base de datos. PostgreSQL está incluido en los repositorios estándar de Ubuntu. La instalación es sencilla:
sudo apt install postgresql
Una vez que el servicio esté instalado, cree un usuario de PostgreSQL con el mismo nombre que el usuario del sistema creado anteriormente. En este ejemplo, eso es odoo15
:
sudo su - postgres -c "createuser -s odoo15"
Instalar wkhtmltopdf
wkhtmltopdf es un conjunto de herramientas de línea de comandos de código abierto para renderizar páginas HTML en PDF y varios formatos de imagen. Para imprimir informes PDF en Odoo, deberá instalar el paquete wkhtmltox
.
La versión de wkhtmltopdf incluida en los repositorios de Ubuntu no admite encabezados ni pies de página. La versión recomendada para Odoo es 0.12.5
. Descargaremos e instalaremos el paquete desde Github:
sudo wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb
Una vez descargado el archivo, instálelo escribiendo:
sudo apt install ./wkhtmltox_0.12.5-1.bionic_amd64.deb
Instalar y configurar Odoo 15
Instalaremos Odoo desde la fuente dentro de un entorno virtual de Python aislado.
Primero, cambie al usuario "odoo15":
sudo su - odoo15
Clona el código fuente de Odoo 15 desde GitHub:
git clone https://www.github.com/odoo/odoo --depth 1 --branch 15.0 /opt/odoo15/odoo
Cree un nuevo entorno virtual de Python para Odoo:
cd /opt/odoo15
python3 -m venv odoo-venv
Activar el entorno virtual:
source odoo-venv/bin/activate
Las dependencias de Odoo se especifican en el archivo require.txt. Instale todos los módulos de Python necesarios con pip3:
pip3 install wheel
pip3 install -r odoo/requirements.txt
Si se produce un error de compilación durante la instalación, asegúrese de que Installing Prerequisites
estén instaladas todas las dependencias necesarias enumeradas en la sección .
Una vez hecho esto, desactive el entorno escribiendo:
deactivate
Cree un nuevo directorio, un directorio separado para los complementos de terceros:
mkdir /opt/odoo15/odoo-custom-addons
Luego agregaremos este directorio al parámetro addons_path
. Este parámetro define una lista de directorios en la que Odoo busca módulos.
Regrese a su usuario de sudo:
exit
Cree un archivo de configuración con el siguiente contenido:
sudo nano /etc/odoo15.conf
[options]
; This is the password that allows database operations:
admin_passwd = my_admin_passwd
db_host = False
db_port = False
db_user = odoo15
db_password = False
addons_path = /opt/odoo15/odoo/addons,/opt/odoo15/odoo-custom-addons
No olvide cambiarse my_admin_passwd
a algo más seguro.
Cree el archivo de la unidad Systemd
Un archivo de unidad es un archivo de configuración de estilo ini que contiene información sobre un servicio.
Abra su editor de texto y cree un archivo odoo15.service
con nombre con el siguiente contenido:
sudo nano /etc/systemd/system/odoo15.service
[Unit]
Description=Odoo15
Requires=postgresql.service
After=network.target postgresql.service
[Service]
Type=simple
SyslogIdentifier=odoo15
PermissionsStartOnly=true
User=odoo15
Group=odoo15
ExecStart=/opt/odoo15/odoo-venv/bin/python3 /opt/odoo15/odoo/odoo-bin -c /etc/odoo15.conf
StandardOutput=journal+console
[Install]
WantedBy=multi-user.target
Notifica a systemd que existe un nuevo archivo de unidad:
sudo systemctl daemon-reload
Inicie el servicio Odoo y habilítelo para que se inicie en el inicio ejecutando:
sudo systemctl enable --now odoo15
Verifique que el servicio esté en funcionamiento:
sudo systemctl status odoo15
La salida debería verse así, mostrando que el servicio Odoo está en funcionamiento:
● odoo15.service - Odoo15
Loaded: loaded (/etc/systemd/system/odoo15.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-10-26 04:56:28 UTC; 18s ago
...
Puede verificar los mensajes grabados por el servicio Odoo usando el siguiente comando:
sudo journalctl -u odoo15
Prueba la instalación
Abra su navegador y escriba: http://<your_domain_or_IP_address>:8069
Suponiendo que la instalación se haya realizado correctamente, aparecerá una pantalla similar a la siguiente:
Configuración de Nginx como proxy de terminación SSL
El servidor web predeterminado de Odoo sirve tráfico a través de HTTP. Para hacer que la distribución de Odoo sea más segura, configuraremos Nginx como un proxy de terminación SSL que servirá el tráfico a través de HTTPS.
El proxy de terminación SSL es un servidor proxy que maneja el cifrado / descifrado SSL. Esto significa que el proxy de terminación (Nginx) procesará y descifrará las conexiones TLS entrantes (HTTPS) y pasará las solicitudes no cifradas al servicio interno (Odoo). El tráfico entre Nginx y Odoo no se cifrará (HTTP).
El uso de un proxy inverso ofrece muchos beneficios, como equilibrio de carga, terminación SSL, almacenamiento en caché, compresión, servicio de contenido estático y más.
Asegúrese de haber cumplido los siguientes requisitos previos antes de continuar con esta sección:
- Nombre de dominio que apunta a la IP de su servidor público. Usaremos
example.com
. - Nginx instalado.
- Certificado SSL para su dominio. Puede instalar un certificado SSL Let's Encrypt gratuito.
Abra su editor de texto y cree / edite el bloque del servidor de dominio:
sudo nano /etc/nginx/sites-enabled/example.com.conf
La siguiente configuración establece la terminación SSL, la redirección de HTTP a HTTPS , la redirección de WWW a no WWW, almacena en caché los archivos estáticos y habilita la compresión GZip.
No olvide reemplazar example.com
con su dominio Odoo y establecer la ruta correcta para los archivos del certificado SSL. Los fragmentos utilizados en esta configuración se crean en esta guía.
Cuando termine, reinicie el servicio Nginx:
sudo systemctl restart nginx
A continuación, debemos decirle a Odoo que use el proxy. Para hacer esto, abra el archivo de configuración y agregue la siguiente línea:
Reinicie el servicio Odoo para que los cambios surtan efecto:
sudo systemctl restart odoo15
En este punto, el proxy inverso está configurado y puede acceder a su instancia de Odoo su https://example.com
.
Cambiar la interfaz de enlace
Este paso es opcional, pero es una buena práctica de seguridad.
De forma predeterminada, el servidor Odoo escucha el puerto 8069
en todas las interfaces. Para deshabilitar el acceso directo a la instancia de Odoo, puede bloquear el puerto 8069
para todas las interfaces públicas u obligar a Odoo a escuchar solo en la interfaz local.
Configure Odoo para escuchar solo en 127.0.0.1
. Abra la configuración agregue las siguientes dos líneas al final del archivo:
Guarde el archivo de configuración y reinicie el servidor Odoo para que los cambios surtan efecto:
sudo systemctl restart odoo15
Habilitar multiprocesamiento
De forma predeterminada, Odoo funciona en modo multiproceso. Para las implementaciones de producción, se recomienda que cambie al servidor de multiprocesamiento, ya que aumenta la estabilidad y permite un mejor uso de los recursos del sistema.
Para habilitar el multiprocesamiento, debe cambiar la configuración de Odoo y establecer un número de procesos de trabajo distinto de cero. El número de trabajadores se calcula en función del número de núcleos de CPU en el sistema y la memoria RAM disponible.
De acuerdo con la documentación oficial de Odoo, para calcular el número de trabajadores y el tamaño de memoria RAM requerido, se pueden utilizar las siguientes fórmulas y suposiciones:
Calcule el número de trabajadores
- Número máximo teórico de trabajadores = (system_cpus * 2) + 1
- 1 trabajador puede atender ~ = 6 usuarios simultáneos
- Los trabajadores de Cron también requieren CPU
Calcule el tamaño de la memoria RAM
- Consideraremos que el 20% de todas las solicitudes son solicitudes pesadas y el 80% son solicitudes más ligeras. Las demandas pesadas usan alrededor de 1 GB de RAM, mientras que las demandas más ligeras usan alrededor de 150 MB de RAM
- RAM requerida =
number_of_workers * ( (light_worker_ratio * light_worker_ram_estimation) + (heavy_worker_ratio * heavy_worker_ram_estimation) )
Si no sabe cuántas CPU tiene en su sistema, use el siguiente comando grep
:
grep -c ^processor /proc/cpuinfo
Digamos que tiene un sistema con 4 núcleos de CPU, 8 GB de RAM y 30 usuarios simultáneos de Odoo.
30 users / 6 = **5**
(5 es el número teórico de trabajadores necesarios)(4 * 2) + 1 = **9**
(9 es el número máximo teórico de trabajadores)
Según el cálculo anterior, puede usar 5 trabajadores + 1 trabajador para el cron del trabajador, que es un total de 6 trabajadores.
Calcule el consumo de memoria RAM en función del número de trabajadores ì:
RAM = 6 * ((0.8*150) + (0.2*1024)) ~= 2 GB of RAM
El cálculo muestra que la instalación de Odoo requerirá alrededor de 2 GB de RAM.
Para cambiar al modo multiprocesamiento, abra el archivo de configuración y agregue los valores calculados:
Reinicie el servicio Odoo para que los cambios surtan efecto:
sudo systemctl restart odoo15
El resto de los recursos del sistema serán utilizados por otros servicios que se ejecutan en este sistema. En esta guía, hemos instalado Odoo junto con PostgreSQL y Nginx en el mismo servidor. Dependiendo de su configuración, también puede tener otros servicios ejecutándose en su servidor.
Conclusión
Este artículo explica cómo instalar y configurar Odoo 15 en Ubuntu 20.04 en un entorno virtual Python usando Nginx como proxy inverso. También le mostramos cómo habilitar el multiprocesamiento y optimizar Odoo para un entorno de producción.
También puede consultar nuestro tutorial sobre cómo crear copias de seguridad diarias automáticas de las bases de datos de Odoo .