GNU/Linux >> Tutoriales Linux >  >> Cent OS

Instale Odoo 13 en CentOS 8

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.

Este tutorial explica cómo instalar Odoo13 desde la fuente dentro de un entorno virtual Python en una máquina CentOS 8. Descargaremos la fuente de Odoo de Github y configuraremos Nginx como un proxy inverso.

Requisitos previos #

Debe iniciar sesión como root o usuario con privilegios sudo para completar la instalación.

Instalando Dependencias #

Instale Python 3, Git, pip y todas las bibliotecas y herramientas necesarias para compilar Odoo desde la fuente:

sudo dnf install python3 python3-devel git gcc redhat-rpm-config libxslt-devel bzip2-devel openldap-devel libjpeg-devel freetype-devel

Creación de un número de usuario del sistema

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/odoo13 -s /bin/bash odoo13

Puede nombrar al usuario como desee, solo asegúrese de crear un usuario de PostgreSQL con el mismo nombre.

Instalando y configurando PostgreSQL #

Instalaremos PostgreSQL10 desde los repositorios estándar de CentOS 8:

sudo dnf install @postgresql:10

Una vez completada 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 nuestro caso es “odoo13”:

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

Instalando Wkhtmltopdf #

El wkhtmltox 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.5 , que no está disponible en los repositorios oficiales de CentOS 8.

Instale el rpm paquete de Github escribiendo:

sudo dnf install https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos8.x86_64.rpm

Instalando y configurando Odoo 13 #

Antes de comenzar con el proceso de instalación, cambie al usuario “odoo13”:

sudo su - odoo13

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

git clone https://www.github.com/odoo/odoo --depth 1 --branch 13.0 /opt/odoo13/odoo

Navegue a /opt/odoo13 directorio y cree un nuevo entorno virtual de Python para la instalación de Odoo:

cd /opt/odoo13python3 -m venv venv

Activa el entorno usando la source comando:

source venv/bin/activate

Instale los módulos de Python necesarios:

pip3 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 Installing Dependencies sección.

Una vez completada la instalación, desactive el entorno:

deactivate

Cree un nuevo directorio para los complementos personalizados:

mkdir /opt/odoo13/odoo-custom-addons

Vuelve a tu usuario sudo:

exit

A continuación, abra su editor de texto y cree el siguiente archivo de configuración:

sudo nano /etc/odoo13.conf
/etc/odoo13.conf
[options]
; This is the password that allows database operations:
admin_passwd = superadmin_passwd
db_host = False
db_port = False
db_user = odoo13
db_password = False
addons_path = /opt/odoo13/odoo/addons, /opt/odoo13/odoo-custom-addons

Guarde y cierre el archivo.

No olvides cambiar el superadmin_passwd a algo más seguro.

Creando archivo de unidad Systemd #

Abre tu editor de texto y crea un archivo llamado odoo13.service dentro del /etc/systemd/system/ directorio:

sudo nano /etc/systemd/system/odoo13.service

Pegue el siguiente contenido:

/etc/systemd/system/odoo13.service
[Unit]
Description=Odoo13
Requires=postgresql.service
After=network.target postgresql.service

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

[Install]
WantedBy=multi-user.target

Guarde el archivo y cierre el editor.

Notifique a Systemd que existe un nuevo archivo de unidad:

sudo systemctl daemon-reload

Inicie y habilite el servicio Odoo ejecutando:

sudo systemctl enable --now odoo13

Puede verificar el estado del servicio con el siguiente comando:

sudo systemctl status odoo13
● odoo13.service - Odoo13
   Loaded: loaded (/etc/systemd/system/odoo13.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2019-12-11 20:04:52 UTC; 5s ago
 Main PID: 28539 (python3)
    Tasks: 4 (limit: 11524)
   Memory: 94.6M
   CGroup: /system.slice/odoo13.service
           └─28539 /opt/odoo13/venv/bin/python3 /opt/odoo13/odoo/odoo-bin -c /etc/odoo13.conf

Para ver los mensajes registrados por el servicio Odoo, use el siguiente comando:

sudo journalctl -u odoo13

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:

Si no puede acceder a la página, probablemente su cortafuegos esté bloqueando el puerto 8069 .

Use los siguientes comandos para abrir el puerto necesario:

sudo firewall-cmd --permanent --zone=public --add-port=8069/tcpsudo firewall-cmd --reload

Configurar Nginx como proxy de terminación SSL #

El servidor web predeterminado de Odoo sirve tráfico a través de HTTP. Para que la 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 el proxy de terminación (Nginx) procesará y descifrará las conexiones TLS entrantes (HTTPS) y pasará las solicitudes sin cifrar al servicio interno (Odoo). El tráfico entre Nginx y Odoo no se cifrará (HTTP).

El uso de un proxy inverso le brinda 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 gratuito de Let's Encrypt.

Abra su editor de texto y cree/edite el bloque del servidor de dominio:

sudo nano /etc/nginx/conf.d/example.com

La siguiente configuración establece la terminación SSL, la redirección de HTTP a HTTPS, la redirección de WWW a no WWW, almacenar en caché los archivos estáticos y habilitar la compresión GZip.

/etc/nginx/conf.d/example.com
# 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;

    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:

sudo systemctl restart nginx

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

/etc/odoo13.conf
proxy_mode = True

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

sudo systemctl restart odoo13

En este punto, el proxy inverso está configurado y puede acceder a su instancia de Odoo en:https://example.com

Cambiando la interfaz de vinculación #

Este paso es opcional, pero es una buena práctica de seguridad.

Por defecto, 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 o forzar a Odoo a escuchar solo en la interfaz local.

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/odoo13.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 odoo13

Habilitación de 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, debe editar la configuración de Odoo y establecer una cantidad distinta 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, puede usar 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 y 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, use el siguiente grep comando:

grep -c ^processor /proc/cpuinfo

Supongamos que tiene un sistema con 4 núcleos de CPU, 8 GB de memoria 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 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 muestra que la 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 los valores calculados:

/etc/odoo13.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 odoo13

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 el mismo servidor. Dependiendo de su configuración, también puede tener otros servicios ejecutándose en su servidor.


Cent OS
  1. Instalar Jenkins en CentOS 8

  2. Instale Odoo 8 en un CentOS 7 VPS

  3. Cómo instalar Odoo 9 en CentOS 7

  4. Instalar Odoo 10 en CentOS 7

  5. Cómo instalar Odoo 12 en CentOS 7

Cómo instalar Apache en CentOS 7

Cómo instalar Tomcat 8.5 en CentOS 7

Instale Odoo 11 en CentOS 7

Instale Odoo 12 en CentOS 7

Cómo instalar Odoo en CentOS 7

Cómo instalar Odoo en CentOS 8