Cómo instalar Odoo ERP 13 en CentOS 8
Odoo es un software ERP gratuito, de código abierto y el más popular, que ofrece una amplia gama de aplicaciones empresariales, como la gestión de las relaciones con los clientes (CRM), el proceso de ventas, la gestión de proyectos, la fabricación, la facturación, la contabilidad, el comercio electrónico y muchas más. Es una aplicación basada en la web y con todas las funciones que te ayuda a mantener el ERP en cualquier negocio. Odoo viene con 30 módulos principales y más de 4500 módulos creados por la comunidad que te ayudan a personalizarlo desde una pequeña tienda hasta una corporación de nivel empresarial.
En este tutorial, aprenderemos a instalar y configurar Odoo 13 con Nginx como proxy inverso en un servidor CentOS 8.
Requisitos
- Un servidor que ejecute CentOS 8 con un mínimo de 2 GB de RAM.
- Un nombre de dominio válido que apunte a la IP de tu servidor. En este tutorial, utilizaremos el dominio exmaple.com..
- Una contraseña de root configurada en el servidor.
Cómo empezar
Primero, actualiza el sistema e instala el repositorio EPEL con el siguiente comando:
dnf update
dnf install epel-release
A continuación, tendrás que instalar algunas herramientas y dependencias necesarias para construir Odoo en tu sistema.
Puedes instalarlas todas con el siguiente comando:
dnf install python36 python36-devel git gcc wget nodejs libxslt-devel bzip2-devel openldap-devel libjpeg-devel freetype-devel
Una vez instalados todos los paquetes, puedes pasar al siguiente paso.
Crear un usuario de Odoo
A continuación, tendrás que crear un nuevo usuario del sistema con el nombre odoo y el directorio de inicio /opt/odoo utilizando el siguiente comando:
useradd -m -U -r -d /opt/odoo -s /bin/bash odoo
Una vez que hayas terminado, puedes proceder al siguiente paso.
Instalar y configurar PostgreSQL
Odoo utiliza PostgreSQL para almacenar sus datos. Así que necesitarás instalar PostgreSQL en tu servidor. Puedes instalarlo con el siguiente comando:
dnf install postgresql postgresql-server postgresql-contrib
Una vez instalado, inicializa la base de datos con el siguiente comando:
/usr/bin/postgresql-setup initdb
Deberías obtener la siguiente salida:
* Initializing database in '/var/lib/pgsql/data' * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
A continuación, inicia el servicio PostgreSQL y permite que se inicie tras el reinicio del sistema con el siguiente comando:
systemctl start postgresql
systemctl enable postgresql
Ahora puedes verificar el PostgreSQL con el siguiente comando:
systemctl status postgresql
Deberías ver la siguiente salida:
? postgresql.service - PostgreSQL database server Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled) Active: active (running) since Mon 2019-12-02 01:01:44 EST; 6s ago Process: 31805 ExecStartPre=/usr/libexec/postgresql-check-db-dir postgresql (code=exited, status=0/SUCCESS) Main PID: 31808 (postmaster) Tasks: 8 (limit: 12552) Memory: 16.5M CGroup: /system.slice/postgresql.service ??31808 /usr/bin/postmaster -D /var/lib/pgsql/data ??31809 postgres: logger process ??31811 postgres: checkpointer process ??31812 postgres: writer process ??31813 postgres: wal writer process ??31814 postgres: autovacuum launcher process ??31815 postgres: stats collector process ??31816 postgres: bgworker: logical replication launcher
A continuación, tendrás que crear un nuevo usuario PostgreSQL con el mismo nombre que el usuario del sistema, como se muestra a continuación:
su - postgres -c "createuser -s odoo"
Instalar Wkhtmltopdf
A continuación, tendrás que instalar la herramienta wkhtmltopdf en tu sistema para que Odoo pueda imprimir informes en PDF. Puedes instalarla con el siguiente comando:
wget https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_64.rpm
dnf localinstall wkhtmltox-0.12.5-1.centos7.x86_64.rpm
Una vez instalada, puedes pasar al siguiente paso.
Instalar y configurar Odoo 13
Primero, cambia al usuario de Odoo con el siguiente comando:
su - odoo
A continuación, descarga la última versión de Odoo 13 desde el repositorio Git utilizando el comando git:
git clone https://www.github.com/odoo/odoo --depth 1 --branch 13.0 /opt/odoo/odoo13
A continuación, crea un nuevo entorno virtual para la instancia de Odoo 13 con el siguiente comando:
cd /opt/odoo
python3 -m venv odoo13-venv
A continuación, activa el entorno virtual con el siguiente comando:
source odoo13-venv/bin/activate
Deberías obtener la siguiente salida:
(odoo13-venv) [odoo@centos8 ~]$
A continuación, instala todos los módulos de Python necesarios para Odoo 13 con el siguiente comando:
pip3 install -r odoo13/requirements.txt
Una vez instalados todos los módulos necesarios, desactiva el entorno virtual con el siguiente comando:
deactivate
Finalmente, sal del usuario de Odoo con el siguiente comando:
exit
A continuación, crea un nuevo directorio para almacenar los módulos personalizados de Odoo y los registros de Odoo:
mkdir /opt/odoo/odoo13-custom-addons
mkdir /var/log/odoo13
touch /var/log/odoo13/odoo.log
A continuación, cambia la propiedad de ambos directorios al usuario odoo con el siguiente comando:
chown -R odoo:odoo /opt/odoo/odoo13-custom-addons
chown -R odoo:odoo /var/log/odoo13/
A continuación, crea un nuevo archivo de configuración para Odoo 13 con el siguiente comando:
nano /etc/odoo.conf
Añade las siguientes líneas:
[options] admin_passwd = admin@123 db_host = False db_port = False db_user = odoo db_password = False xmlrpc_port = 8069 logfile = /var/log/odoo13/odoo.log logrotate = True addons_path = /opt/odoo/odoo13/addons,/opt/odoo/odoo13-custom-addons
Guarda y cierra el archivo cuando hayas terminado.
Crear un archivo de servicio Systemd para Odoo 13
A continuación, tendrás que crear un nuevo archivo de unidad systemd para Odoo 13 para gestionar el servicio de Odoo.
Puedes crearlo con el siguiente comando:
nano /etc/systemd/system/odoo13.service
Añade las siguientes líneas:
[Unit] Description=Odoo13 #Requires=postgresql-10.6.service #After=network.target postgresql-10.6.service [Service] Type=simple SyslogIdentifier=odoo13 PermissionsStartOnly=true User=odoo Group=odoo ExecStart=/opt/odoo/odoo13-venv/bin/python3 /opt/odoo/odoo13/odoo-bin -c /etc/odoo.conf StandardOutput=journal+console [Install] WantedBy=multi-user.target
Guarda y cierra el archivo. A continuación, recarga el demonio systemd con el siguiente comando:
systemctl daemon-reload
A continuación, inicia el servicio de Odoo y permite que se inicie tras el reinicio del sistema con el siguiente comando:
systemctl start odoo13
systemctl enable odoo13
También puedes verificar el estado de Odoo con el siguiente comando:
systemctl status odoo13
Deberías obtener la siguiente salida:
? odoo13.service - Odoo13 Loaded: loaded (/etc/systemd/system/odoo13.service; disabled; vendor preset: disabled) Active: active (running) since Mon 2019-12-02 01:15:43 EST; 2s ago Main PID: 17022 (python3) Tasks: 4 (limit: 12552) Memory: 63.7M CGroup: /system.slice/odoo13.service ??17022 /opt/odoo/odoo13-venv/bin/python3 /opt/odoo/odoo13/odoo-bin -c /etc/odoo.conf Dec 02 01:15:43 centos8 systemd[1]: Started Odoo13.
Por defecto, Odoo escucha en el puerto 8069. Puedes comprobarlo con el siguiente comando:
netstat -plntu | grep 8069
Deberías ver la siguiente salida:
tcp 0 0 0.0.0.0:8069 0.0.0.0:* LISTEN 17022/python3
Configurar Nginx como Proxy Inverso para Odoo 13
A continuación, tendrás que instalar y configurar Nginx como proxy inverso para la instancia de Odoo 13.
Primero, instala el servidor web Nginx con el siguiente comando:
dnf install nginx
Una vez instalado, crea un nuevo archivo de configuración del host virtual con el siguiente comando:
nano /etc/nginx/conf.d/odoo13.conf
Añade las siguientes líneas:
upstream odoo { server 127.0.0.1:8069; } server { listen 80; server_name example.com; access_log /var/log/nginx/odoo13.access.log; error_log /var/log/nginx/odoo13.error.log; location / { 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; proxy_redirect off; proxy_pass http://odoo; } location ~* /web/static/ { proxy_cache_valid 200 90m; proxy_buffering on; expires 864000; proxy_pass http://odoo; } gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript; gzip on; }
Guarda y cierra el archivo cuando hayas terminado. A continuación, inicia el servicio Nginx y habilítalo para que se inicie tras el reinicio del sistema con el siguiente comando
systemctl start nginx
systemctl enable nginx
Puedes verificar el estado del servicio Nginx con el siguiente comando:
systemctl status nginx
Deberías ver la siguiente salida:
? nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled) Active: active (running) since Mon 2019-12-02 01:25:15 EST; 6s ago Process: 17244 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS) Process: 17241 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS) Process: 17239 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS) Main PID: 17245 (nginx) Tasks: 3 (limit: 12552) Memory: 5.4M CGroup: /system.slice/nginx.service ??17245 nginx: master process /usr/sbin/nginx ??17246 nginx: worker process ??17247 nginx: worker process Dec 02 01:25:15 centos8 systemd[1]: Starting The nginx HTTP and reverse proxy server... Dec 02 01:25:15 centos8 nginx[17241]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok Dec 02 01:25:15 centos8 nginx[17241]: nginx: configuration file /etc/nginx/nginx.conf test is successful Dec 02 01:25:15 centos8 systemd[1]: Started The nginx HTTP and reverse proxy server.
Configurar el cortafuegos
A continuación, tendrás que permitir que el servicio Nginx a través de firewalld acceda a la instancia de Odoo 13 desde el sistema remoto.
Puedes ejecutar el siguiente comando para permitir el servicio Nginx a través de firewalld:
firewall-cmd --permanent --zone=public --add-service=nginx
firewall-cmd --reload
Por defecto, SELinux está activado en CentOS 8. Así que tendrás que permitir HTTP a través de SELinux. Puedes permitirlo con el siguiente comando:
setsebool -P httpd_can_network_connect on
Acceder a la interfaz web de Odoo 13
Ahora, Odoo 13 está instalado y configurado. Es el momento de acceder a la interfaz web de Odoo 13.
Abre tu navegador web y escribe la URL http://example.com. Serás redirigido a la siguiente página:
Ahora, proporciona tu contraseña maestra, el nombre de la base de datos, el correo electrónico, la contraseña, el país y haz clic en el botón Crear base de datos. Serás redirigido a la página de administración de Odoo 13:
Conclusión
En el tutorial anterior, has aprendido a instalar y configurar Odoo 13 en un servidor CentOS 8. También has aprendido a configurar Nginx como proxy inverso para Odoo 13. Ahora puedes personalizar tu instancia de Odoo 13 según las necesidades de tu negocio.