GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo implementar Odoo 12 en Ubuntu 18.04

Odoo es el software empresarial todo en uno más popular del mundo. Ofrece una gama de aplicaciones comerciales que incluyen CRM, sitio web, comercio electrónico, facturación, contabilidad, fabricación, almacén, gestión de proyectos, inventario y mucho más, todo perfectamente integrado.

Odoo se puede instalar de varias maneras diferentes. La forma más fácil y rápida de instalar Odoo es usando sus repositorios APT oficiales.

Si desea tener más flexibilidad, como ejecutar varias versiones de Odoo en un mismo sistema, puede usar docker y docker compose o instalar Odoo en un entorno virtual.

Este tutorial cubre los pasos necesarios para instalar y configurar Odoo 12 para la producción utilizando la fuente Git y el entorno virtual de Python en un sistema Ubuntu 18.04.

Antes de comenzar #

Inicie sesión en su máquina Ubuntu como usuario sudo y actualice el sistema a los paquetes más recientes:

sudo apt update && sudo apt upgrade

Instale Git, Pip, Node.js y las herramientas necesarias para crear dependencias de Odoo:

sudo apt install git python3-pip build-essential wget python3-dev python3-venv python3-wheel libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-setuptools node-less

Crear número de usuario de Odoo

Cree un nuevo usuario del sistema para Odoo llamado odoo12 con el directorio de inicio /opt/odoo12 usando el siguiente comando:

sudo useradd -m -d /opt/odoo12 -U -r -s /bin/bash odoo12
Puede usar cualquier nombre para su usuario de Odoo siempre que cree un usuario de PostgreSQL con el mismo nombre.

Instalar y configurar PostgreSQL #

Instale el paquete PostgreSQL desde los repositorios predeterminados de Ubuntu:

sudo apt install postgresql

Una vez completada la instalación, cree un usuario de PostgreSQL con el mismo nombre que el usuario del sistema creado anteriormente, en nuestro caso que es odoo12 :

sudo su - postgres -c "createuser -s odoo12"

Instalar Wkhtmltopdf #

El wkhtmltox El paquete proporciona un conjunto de herramientas de línea de comandos de código abierto que pueden convertir HTML en PDF y varios formatos de imagen. Para imprimir informes en PDF, necesitará el wkhtmltopdf herramienta. La versión recomendada para Odoo es 0.12.x que no está disponible en los repositorios oficiales de Ubuntu 18.04.

Descargue el paquete usando el siguiente comando wget:

wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb

Una vez que se complete la descarga, instale el paquete escribiendo:

sudo apt install ./wkhtmltox_0.12.5-1.bionic_amd64.deb

Instalar y configurar Odoo #

Instalaremos Odoo desde el repositorio de GitHub dentro de un entorno virtual Python aislado.

Antes de comenzar con el proceso de instalación, cambie a usuario “odoo12”:

sudo su - odoo12

Comience por clonar el código fuente de Odoo 12 del repositorio de Odoo GitHub:

git clone https://www.github.com/odoo/odoo --depth 1 --branch 12.0 /opt/odoo12/odoo

Una vez descargado el código fuente, cree un nuevo entorno virtual de Python para la instalación de Odoo 12:

cd /opt/odoo12python3 -m venv odoo-venv

A continuación, active el entorno con el siguiente comando:

source odoo-venv/bin/activate

Instale todos los módulos de Python necesarios con pip3:

pip3 install wheelpip3 install -r odoo/requirements.txt
Si encuentra algún error de compilación durante la instalación, asegúrese de haber instalado todas las dependencias requeridas enumeradas en Before you begin sección.

Desactive el entorno usando el siguiente comando:

deactivate

Cree un nuevo directorio para los complementos personalizados:

mkdir /opt/odoo12/odoo-custom-addons

Vuelve a tu usuario sudo:

exit

A continuación, cree un archivo de configuración copiando el archivo de configuración de muestra incluido:

sudo cp /opt/odoo12/odoo/debian/odoo.conf /etc/odoo12.conf

Abra el archivo y edítelo de la siguiente manera:

sudo nano /etc/odoo12.conf
/etc/odoo12.conf
[options]
; This is the password that allows database operations:
admin_passwd = my_admin_passwd
db_host = False
db_port = False
db_user = odoo12
db_password = False
addons_path = /opt/odoo12/odoo/addons,/opt/odoo12/odoo-custom-addons
No olvide cambiar el my_admin_passwd a algo más seguro.

Crear un archivo de unidad Systemd #

Para ejecutar Odoo como un servicio, necesitamos crear un archivo de unidad de servicio en el /etc/systemd/system/ directorio.

Abre tu editor de texto y pega la siguiente configuración:

sudo nano /etc/systemd/system/odoo12.service
/etc/systemd/system/odoo12.service
[Unit]
Description=Odoo12
Requires=postgresql.service
After=network.target postgresql.service

[Service]
Type=simple
SyslogIdentifier=odoo12
PermissionsStartOnly=true
User=odoo12
Group=odoo12
ExecStart=/opt/odoo12/odoo-venv/bin/python3 /opt/odoo12/odoo/odoo-bin -c /etc/odoo12.conf
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target

Notifique a systemd que existe un nuevo archivo de unidad e inicie el servicio Odoo ejecutando:

sudo systemctl daemon-reloadsudo systemctl start odoo12

Verifique el estado del servicio con el siguiente comando:

sudo systemctl status odoo12

El resultado debería ser similar al siguiente, lo que indica que el servicio Odoo está activo y ejecutándose.

* odoo12.service - Odoo12
   Loaded: loaded (/etc/systemd/system/odoo12.service; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-10-09 14:15:30 PDT; 3s ago
 Main PID: 24334 (python3)
    Tasks: 4 (limit: 2319)
   CGroup: /system.slice/odoo12.service
           `-24334 /opt/odoo12/odoo-venv/bin/python3 /opt/odoo12/odoo/odoo-bin -c /etc/odoo12.conf

Habilite el servicio de Odoo para que se inicie automáticamente en el momento del arranque:

sudo systemctl enable odoo12

Si desea ver los mensajes registrados por el servicio Odoo, puede usar el siguiente comando:

sudo journalctl -u odoo12

Probar la instalación #

Abra su navegador y escriba:http://<your_domain_or_IP_address>:8069

Suponiendo que la instalación sea exitosa, aparecerá una pantalla similar a la siguiente:

Configurar Nginx como proxy de terminación SSL #

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. En este tutorial usaremos example.com .
  • Nginx instalado.
  • Certificado SSL para su dominio. Puede instalar un certificado SSL gratuito de Let's Encrypt.

El servidor web predeterminado de Odoo sirve tráfico a través de HTTP. Para que nuestra implementación de Odoo sea más segura, configuraremos Nginx como un proxy de terminación SSL que atenderá 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 nuestro proxy de terminación (Nginx) manejará y descifrará las conexiones TLS entrantes (HTTPS) y pasará las solicitudes sin cifrar a nuestro servicio interno (Odoo) para que el tráfico entre Nginx y Odoo no se cifre (HTTP).

El uso de un proxy inverso le brinda muchos beneficios, como el equilibrio de carga, la terminación de SSL, el almacenamiento en caché, la compresión, el servicio de contenido estático y más.

En este ejemplo, configuraremos la terminación SSL, la redirección de HTTP a HTTPS, la redirección de WWW a no WWW, almacenaremos en caché los archivos estáticos y habilitaremos la compresión GZip.

Abre tu editor de texto y crea el siguiente archivo:

sudo nano /etc/nginx/sites-enabled/example.com.conf
/etc/nginx/sites-enabled/example.com.conf
# Odoo servers
upstream odoo {
 server 127.0.0.1:8069;
}

upstream odoochat {
 server 127.0.0.1:8072;
}

# HTTP -> HTTPS
server {
    listen 80;
    server_name www.example.com example.com;

    include snippets/letsencrypt.conf;
    return 301 https://example.com$request_uri;
}

# WWW -> NON WWW
server {
    listen 443 ssl http2;
    server_name www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    proxy_read_timeout 720s;
    proxy_connect_timeout 720s;
    proxy_send_timeout 720s;

    # Proxy headers
    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;

    # SSL parameters
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    # log files
    access_log /var/log/nginx/odoo.access.log;
    error_log /var/log/nginx/odoo.error.log;

    # Handle longpoll requests
    location /longpolling {
        proxy_pass http://odoochat;
    }

    # Handle / requests
    location / {
       proxy_redirect off;
       proxy_pass http://odoo;
    }

    # Cache static files
    location ~* /web/static/ {
        proxy_cache_valid 200 90m;
        proxy_buffering on;
        expires 864000;
        proxy_pass http://odoo;
    }

    # Gzip
    gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
    gzip on;
}
No olvide reemplazar example.com con su dominio Odoo y establezca la ruta correcta a los archivos del certificado SSL. Los fragmentos utilizados en esta configuración se crean en esta guía.

Una vez que haya terminado, reinicie el servicio Nginx con:

sudo systemctl restart nginx

A continuación, debemos decirle a Odoo que usaremos proxy. Para hacerlo, abra el archivo de configuración y agregue la siguiente línea:

/etc/odoo12.conf
proxy_mode = True

Reinicie el servicio de Odoo para que los cambios surtan efecto:

sudo systemctl restart odoo12

En este punto, su servidor 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 de Odoo escucha el puerto 8069 en todas las interfaces. Si desea deshabilitar el acceso directo a su instancia de Odoo, puede bloquear el puerto 8069 para todas las interfaces públicas o forzar a Odoo a escuchar solo en la interfaz local.

En esta guía configuraremos Odoo para escuchar solo en 127.0.0.1 . Abra la configuración y agregue las siguientes dos líneas al final del archivo:

/etc/odoo12.conf
xmlrpc_interface = 127.0.0.1
netrpc_interface = 127.0.0.1

Guarde el archivo de configuración y reinicie el servidor Odoo para que los cambios surtan efecto:

sudo systemctl restart odoo12

Habilitar multiprocesamiento #

De forma predeterminada, Odoo funciona en modo multiproceso. Para implementaciones de producción, se recomienda cambiar al servidor de multiprocesamiento, ya que aumenta la estabilidad y hace un mejor uso de los recursos del sistema. Para habilitar el multiprocesamiento, necesitamos editar la configuración de Odoo y establecer un número distinto de cero de procesos de trabajo.

La cantidad de trabajadores se calcula en función de la cantidad 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, utilizaremos 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 servir a ~=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, mientras que el 80 % son solicitudes más livianas. Las solicitudes pesadas usan alrededor de 1 GB de RAM, mientras que las más ligeras usan alrededor de 150 MB de RAM
  • RAM necesaria =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, puede usar el siguiente comando:

grep -c ^processor /proc/cpuinfo

Digamos que tenemos un sistema con 4 núcleos de CPU, 8 GB de memoria RAM y 30 usuarios de Odoo concurrentes.

  • 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, podemos usar 5 trabajadores + 1 trabajador para el trabajador cron, 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 anterior nos muestra que nuestra instalación de Odoo necesitará alrededor de 2 GB de RAM.

Para cambiar al modo de multiprocesamiento, abra el archivo de configuración y agregue las siguientes líneas:

/etc/odoo12.conf
limit_memory_hard = 2684354560
limit_memory_soft = 2147483648
limit_request = 8192
limit_time_cpu = 600
limit_time_real = 1200
max_cron_threads = 1
workers = 5

Reinicie el servicio de Odoo para que los cambios surtan efecto:

sudo systemctl restart odoo12

El resto de los recursos del sistema serán utilizados por otros servicios que se ejecutan en este sistema. En esta guía, instalamos Odoo junto con PostgreSQL y Nginx en un mismo servidor y, dependiendo de su configuración, también puede tener otros servicios ejecutándose en su servidor.


Ubuntu
  1. Cómo instalar Odoo 12 en Ubuntu 16.04

  2. Cómo instalar Odoo 13 en Ubuntu 18.04

  3. Cómo instalar Odoo 13 en Ubuntu 20.04

  4. Cómo instalar Odoo 15 en Ubuntu 22.04

  5. Cómo instalar Odoo 13 en Ubuntu 20.04

Cómo instalar Odoo en Ubuntu 18.04 LTS

Cómo instalar Odoo en Ubuntu 20.04 LTS

Cómo instalar Odoo 13 en Ubuntu

Cómo instalar Odoo en Ubuntu 18.04

Cómo instalar Odoo en Ubuntu 20.04

Cómo instalar Odoo 12 en Ubuntu 20.04