Introducción
Odoo es el software empresarial todo en uno más popular del mundo. Ofrece una variedad de aplicaciones comerciales, que incluyen CRM, sitio web, comercio electrónico, 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 explica cómo instalar e implementar Odoo 14 dentro de un entorno virtual Python en CentOS 8. Descargue Odoo del repositorio oficial de GitHub y use Nginx como proxy inverso.
Si desea instalar Odoo en un servidor remoto, continúe leyendo; de lo contrario, omita el primer párrafo "Conexión al servidor" y lea el siguiente.
Conexión al servidor
Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:
ssh root@IP_DEL_SERVER
A continuación, deberá ingresar la contraseña del usuario root.
Si no usa el usuario root, puede iniciar sesión con otro nombre de usuario usando el mismo comando, luego cambie root a su nombre de usuario:
ssh nome_utente@IP_DEL_SERVER
Luego se le pedirá que ingrese su contraseña de usuario.
El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Instale los requisitos previos
Odoo está escrito en Python. El primer paso es instalar Python 3, Git, pip y todas las bibliotecas y herramientas necesarias para construir Odoo desde la fuente:
sudo dnf install python3 python3-devel git nano gcc redhat-rpm-config libxslt-devel bzip2-devel openldap-devel libjpeg-devel freetype-devel
Crea un usuario del sistema
No está permitido ejecutar Odoo con el usuario root, ya que representa un riesgo de seguridad. Cree un nuevo usuario y grupo del sistema con el directorio de inicio /opt/odoo
que ejecutará el servicio Odoo:
sudo useradd -m -U -r -d /opt/odoo14 -s /bin/bash odoo14
Puede nombrar al usuario como desee; solo asegúrese de crear un usuario de PostgreSQL con el mismo nombre.
Instalar y configurar PostgreSQL
Odoo usa PostgreSQL como el backend de la base de datos. Instalamos PostgreSQL 12 desde los repositorios estándar de CentOS 8:
sudo dnf install @postgresql:12
Una vez que se complete la instalación, cree un nuevo clúster de base de datos PostgreSQL:
sudo postgresql-setup initdb
Habilite e inicie el servicio PostgreSQL:
sudo systemctl enable --now postgresql
Cree un usuario de PostgreSQL con el mismo nombre que el usuario del sistema creado anteriormente. En este ejemplo, odoo14
:
sudo su - postgres -c "createuser -s odoo14"
Instalar Wkhtmltopdf
wkhtmltopdf es un conjunto de herramientas de línea de comandos de código abierto para representar páginas HTML en PDF y varios formatos de imagen. Para imprimir informes PDF en Odoo, deberá instalar el paquete wkhtmltox
La versión recomendada para Odoo es la versión 0.12.5
, que se puede descargar e instalar desde Github:
sudo dnf install https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos8.x86_64.rpm
Instalar y configurar Odoo 14
Instalaremos Odoo desde la fuente dentro de un entorno virtual de Python aislado.
Primero, cambie al usuario odoo14
con el comando su:
sudo su - odoo14
Clone el código fuente de Odoo 14 del repositorio de Odoo GitHub:
git clone https://www.github.com/odoo/odoo --depth 1 --branch 14.0 /opt/odoo14/odoo
Navegue al /opt/odoo14
y cree un nuevo entorno virtual de Python para la instalación de Odoo:
cd /opt/odoo14
python3 -m venv venv
Active el entorno con el comando de source
source venv/bin/activate
Instale los módulos de Python necesarios:
pip3 install -r odoo/requirements.txt
Si se producen errores de compilación durante la instalación, asegúrese de que estén instaladas Installing Prerequisites
Una vez hecho esto, desactive el entorno escribiendo:
deactivate
Cree un nuevo directorio con el comando mkdir, para complementos personalizados:
mkdir /opt/odoo14/odoo-custom-addons
addons_path
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/odoo14.conf
Guarde y cierre el archivo.
password
Cree el archivo de la unidad Systemd
Abra su editor de texto y cree un archivo de unidad de servicio llamado odoo14.service
con el siguiente contenido:
sudo nano /etc/systemd/system/odoo14.service
Pega el siguiente contenido:
Notifica a systemd que existe un nuevo archivo de unidad:
sudo systemctl daemon-reload
Inicie y habilite el servicio Odoo:
sudo systemctl enable --now odoo14
Verifique que Odoo se esté ejecutando con el siguiente comando:
sudo systemctl status odoo14
El resultado debería ser similar al siguiente, lo que indica que el servicio Odoo está en funcionamiento:
● odoo14.service - Odoo14
Loaded: loaded (/etc/systemd/system/odoo14.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2020-11-02 23:50:36 CET; 2s ago...
Para ver los mensajes grabados por el servicio Odoo, use el siguiente comando:
sudo journalctl -u odoo14
Prueba la instalación
Abra su navegador y escriba: http://TUO_DOMINIO_O_IP:8069
Suponiendo que la instalación se haya realizado correctamente, aparecerá la primera pantalla de Odoo con un formulario de solicitud de datos.
Si no puede acceder a la página, asegúrese de que el puerto 8069
esté abierto en el firewall:
sudo firewall-cmd --permanent --zone=public --add-port=8069/tcp
sudo firewall-cmd --reload
Configurar Nginx como proxy de terminación y proxy SSL
El servidor web predeterminado de Odoo sirve tráfico a través de HTTP. Para hacer que la instancia de Odoo sea más segura, configuraremos Nginx como un proxy de terminación SSL que servirá 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 reenviará 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, contenido estático y más.
Asegúrese de cumplir con los siguientes requisitos previos antes de continuar con esta sección:
- Nombre de dominio que apunta a la IP del servidor público. Usaremos
example.com
. - Nginx instalado.
- Nginx Virtual Host de su dominio en funcionamiento
- 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/conf.d/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é archivos estáticos y habilita la compresión GZip.
No olvide reemplazar example.com
con su dominio Odoo y establecer la ruta correcta a los archivos del certificado SSL.
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:
sudo nano /etc/odoo14.conf
Reinicie el servicio Odoo para que los cambios surtan efecto:
sudo systemctl restart odoo14
En este punto, el proxy inverso está configurado y puede acceder a su instancia de Odoo en 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.
Configuraremos Odoo para escuchar solo 127.0.0.1
Abra la configuración y agregue las siguientes dos líneas al final del archivo:
sudo nano /etc/odoo14.conf
Guarde el archivo de configuración y reinicie el servidor Odoo para que los cambios surtan efecto:
sudo systemctl restart odoo14
Habilitar multiprocesamiento
De forma predeterminada, Odoo funciona en modo multiproceso. Para implementaciones de producción, recomendamos cambiar a servidor de multiprocesamiento, ya que aumenta la estabilidad y utiliza mejor 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. La cantidad de trabajadores se calcula en función de la cantidad de núcleos de CPU y RAM disponible.
De acuerdo con la documentación oficial de Odoo, para calcular el número de trabajadores y el tamaño de RAM requerido, se pueden utilizar las siguientes fórmulas y suposiciones:
Cálculo del 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
Cálculo del 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 por trabajador cron, para un total de 6 trabajadores.
Calcule el consumo de 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 necesitará alrededor de 2 GB de RAM.
Para cambiar al modo multiprocesamiento, abra el archivo de configuración y agregue los valores calculados:
sudo nano /etc/odoo14.conf
Reinicie el servicio Odoo para que los cambios surtan efecto:
sudo systemctl restart odoo14
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 lo guió a través de la instalación de Odoo 14 en CentOS 8 en un entorno virtual de 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 leer nuestro tutorial sobre cómo crear copias de seguridad diarias automáticas de las bases de datos de Odoo.