Configuración de OpenERP (Odoo) 9 con Nginx en RHEL/CentOS y Debian/Ubuntu


Odoo, anteriormente conocido como OpenERP, es un software empresarial basado en web ERP de planificación de recursos empresariales de código abierto escrito en Python que viene con un conjunto de aplicaciones web diseñadas para todas las empresas, como creadores de sitios web, módulos de comercio electrónico, facturación y contabilidad, recursos humanos, Punto de venta, gestión de relaciones con el cliente, módulo de inventario, chat en vivo y muchas otras aplicaciones y funciones.

Este tutorial lo guiará sobre cómo instalar la última versión estable de Odoo (versión 9) en un sistema basado en RHEL/CentOS/Fedora o Debian/Ubuntu con servidor Nginx para actuar como un proxy inverso en la interfaz para acceder a la web. Interfaz más rápida, segura y desde puertos de navegación web estándar, sin la necesidad de sobrecargar a los usuarios para usar los puertos de redireccionamiento del navegador.

Paso 1: instalar y proteger la base de datos de PostgreSQL

1. Antes de comenzar con la instalación de Odoo, primero asegúrese de que su sistema se envíe con los paquetes proporcionados por los repositorios de Epel para instalar la base de datos de backend PostgreSQL.

También asegúrese de que el servidor esté actualizado con los últimos paquetes de seguridad y parches emitiendo los siguientes comandos:

----------- On RedHat/CentOS based systems ----------- 
# yum update
# yum install -y epel-release

----------- On Debian/Ubuntu based systems ----------- 
# apt-get update && sudo apt-get upgrade # On Debian 

2. A continuación, instale el servidor de base de datos PostgreSQL, que es la base de datos predeterminada utilizada por Odoo para almacenar información.

----------- On RedHat/CentOS based systems -----------
# yum install postgresql-server

----------- On Debian/Ubuntu based systems -----------
# apt-get install postgresql postgresql-client

Inicialice la base de datos PostgreSQL.

# postgresql-setup initdb	

Ahora finalmente inicie la base de datos PostgreSQL emitiendo el siguiente comando:

----------- On SystemD systems -----------
# systemctl start postgresql

----------- On SysVinit systems -----------
# service postgresql start

Como paso adicional para proteger al usuario predeterminado de PostgreSQL, que tiene una contraseña en blanco, emita el siguiente comando con privilegios de root para cambiar la contraseña:

sudo -u postgres psql
postgres=# \password postgres

Paso 2: Instale Odoo 9 - OpenERP

3. Para instalar Odoo 9 desde el repositorio oficial, primero cree un nuevo archivo de repositorio yum para Odoo con el siguiente contenido:

# vi /etc/yum.repos.d/odoo.repo

Agregue el siguiente extracto al archivo odoo.repo .

[odoo-nightly]
name=Odoo Nightly repository
baseurl=http://nightly.odoo.com/9.0/nightly/rpm/
enabled=1
gpgcheck=1
gpgkey=https://nightly.odoo.com/odoo.key

En Debian/Ubuntu, ejecute el siguiente comando para agregar los repositorios de Odoo:

# wget -O - https://nightly.odoo.com/odoo.key | apt-key add -
# echo "deb http://nightly.odoo.com/9.0/nightly/deb/ ./" >> /etc/apt/sources.list

4. A continuación, instale el software Odoo 9 desde los binarios.

----------- On RedHat/CentOS based systems -----------
# yum install odoo

----------- On Debian/Ubuntu based systems -----------
# apt-get update && sudo apt-get install odoo

A continuación, inícielo y verifique el estado del demonio emitiendo los siguientes comandos:

----------- On SystemD systems -----------
# systemctl start odoo
# systemctl status odoo

----------- On SysVinit systems -----------
# service odoo start
# service odoo status

Como paso adicional, puede verificar el puerto de escucha del servicio Odoo ejecutando el comando ss o netstat:

# ss -tulpn
OR
# netstat -tulpn

De forma predeterminada, Odoo escucha las conexiones de red en el puerto 8069/TCP.

Paso 3: configurar Odoo desde la interfaz web

5. Para configurar Odoo aún más, inicie un navegador y acceda a la interfaz web de Odoo en el siguiente URI:

http://host-or-IP-address:8069/

6. A continuación, se le pedirá que cree una nueva base de datos para Odoo y establezca una contraseña segura para la cuenta de administrador.

7. Una vez que se haya creado la base de datos, será redirigido al panel web de administración donde podrá instalar más aplicaciones y configurar su ERP. Por el momento, deje la aplicación por defecto y cierre la sesión.

8. Una vez que regrese a la pantalla de inicio de sesión, presione el enlace Administrar bases de datos y establezca una contraseña maestra para proteger el administrador de bases de datos de Odoo.

9. Una vez que haya asegurado el administrador de bases de datos de Odoo, puede iniciar sesión en su aplicación y comenzar a configurarla con las aplicaciones y configuraciones requeridas.

Paso 4: Acceda a Odoo desde Nginx Frontend

Puede configurar el sistema para que los usuarios puedan acceder al panel web de Odoo a través del proxy inverso de Nginx. Esto puede facilitar que los usuarios naveguen por la interfaz web de Odoo más rápido, debido al almacenamiento en caché de frontend de Nginx, en puertos HTTP estándar sin la necesidad de ingresar manualmente el puerto http 8069 en sus navegadores.

Para configurar esta configuración, primero debe instalar y configurar Nginx en su sistema mediante los siguientes pasos.

10. Primero instale el servidor web Nginx con el siguiente comando:

----------- On RedHat/CentOS based systems -----------
# yum install nginx

----------- On Debian/Ubuntu based systems -----------
# apt-get install nginx

11. A continuación, abra el archivo de configuración principal de Nginx con un editor de texto e inserte el siguiente bloque después de la línea que especifica la ubicación de la raíz del documento Nginx.

----------- On RedHat/CentOS based systems -----------
# vi /etc/nginx/nginx.conf 

----------- On Debian/Ubuntu based systems -----------
# nano /etc/nginx/sites-enabled/default

Agregue el siguiente extracto de configuración al archivo nginx.conf :

 location / {
        proxy_pass http://127.0.0.1:8069;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

Además, comente la instrucción location de Nginx colocando un # delante de las siguientes líneas. Utilice la siguiente captura de pantalla como guía.

#location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
        #       try_files $uri $uri/ =404;
        #}

12. Después de haber realizado todos los cambios anteriores, reinicie el demonio Nginx, pero no antes de ejecutar el comando getenforce para verificar si Selinux está habilitado en su máquina.

En caso de que la política se establezca en Enforcement desactívela emitiendo los siguientes comandos:

# setenforce 0
# getenforce

Para deshabilitar completamente Selinux, abra el archivo /etc/selinux/config con un editor de texto y establezca la línea SELINUX en deshabilitado.

Si no desea deshabilitar completamente la política de Seliux y solo desea relajar las reglas para otorgar un proxy Nginx con acceso permisivo al socket de red, ejecute el siguiente comando:

# setsebool httpd_can_network_connect on -P
# getsebool -a | grep httpd 

Luego, reinicie el demonio Nginx para reflejar los cambios realizados anteriormente:

# systemctl restart nginx
OR
# service nginx restart

13. Este siguiente paso es una característica de seguridad opcional e implica el cambio del socket de red que escucha la aplicación Odoo, cambiando la dirección de enlace de todas las interfaces (o dirección) a localhost solamente.

Este cambio debe realizarse solo junto con el proxy inverso de Nginx debido al hecho de que vincular la aplicación en localhost solo implica que los usuarios de la LAN u otras redes no podrán acceder a Odoo.

Para activar este cambio, abra el archivo /etc/odoo/openerp-server.conf y edite la línea xmlrpc_interface para enlazar en localhost solo como se sugiere en la siguiente captura de pantalla.

xmlrpc_interface = 127.0.0.1

Para reflejar los cambios, reinicie el servicio Odoo ejecutando el siguiente comando:

# systemctl restart odoo.service
OR
# service odoo restart

14. En caso de que su máquina tenga una línea de defensa de red proporcionada por el firewall, emita los siguientes comandos para abrir los puertos del firewall al mundo exterior para el proxy Nginx:

----------- On FirewallD based systems -----------
# firewall-cmd --add-service=http --permanent
# firewall-cmd --reload
----------- On IPTables based systems -----------
# iptables -A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
# iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
# /etc/init.d/iptables save
----------- On UFW Firewall systems -----------
# ufw allow http

15. ¡Eso es! Ahora puede acceder con éxito a su aplicación ERP Odoo visitando la dirección IP de su servidor o el nombre de dominio.

http://192.168.1.40
http://domain.tld

16. Para ejecutar automáticamente los servicios después de reiniciar el sistema, ejecute el siguiente comando para habilitar todos los demonios en todo el sistema con un solo disparo.

------------ On SystemD Systems ------------  
# systemctl enable postgresql.service 
# systemctl enable odoo.service
# systemctl enable nginx.service
------------ On SysVinit Systems ------------ 

# chkconfig postgresql on
# chkconfig odoo on
# chkconfig nginx on

NOTA: Para los informes en PDF, debe descargar e instalar manualmente los paquetes binarios wkhtmltopdf para su propia distribución visitando el siguiente enlace Instalar wkhtmltopdf para convertir una página HTML a PDF.