# Despliegue de aplicación Odoo Se usará Ubuntu `16.04` como sistema base ## Preparación del sistema ```bash sudo apt-get update sudo apt-get install git python-dev libpq-dev python-pip python-virtualenv libsasl2-dev libldap2-dev libssl-dev \ gdebi-core node-clean-css node-less python-gevent libevent-dev gcc \ libxml2-dev libldap2-dev libssl-dev ``` Crear los directorios necesarios ```bash # Para la instalción de Odoo sudo mkdir /opt/odoo sudo chown $USER:$USER /opt/odoo # Para la carpeta de modulos de la aplicación a desplegar sudo mkdir /opt/proyecto sudo chown $USER:$USER /opt/proyecto # Para los archivos de configuración de la aplicación sudo mkdir /etc/odoo sudo chown $USER:$USER /etc/odoo # Para los archivos de log de la aplicación sudo mkdir /var/log/odoo sudo chown $USER:$USER /var/log/odoo ``` ## Instalación de Odoo Clonar repositorio de Odoo ```bash git clone https://github.com/odoo/odoo -b 10.0 --depth 1 /opt/odoo ``` Crear un entorno virtual para instalar los requerimientos de Odoo y activarlo ```bash cd /opt/odoo virtualenv env source env/bin/activate ``` Instalar las dependencias de Odoo ```bash cd /opt/odoo pip install . ``` ## Configuración del proyecto Crear un archivo de configuración para el proyecto en `/etc/odoo/` llamado `proyecto.conf` el cual contendrá la siguiente información: ``` [options] addons_path = /opt/odoo/addons,path_to_project_modules data_dir = /opt/proyecto admin_passwd = super_secret_password db_host = database_location db_port = database_port db_user = database_user_with_super_user_role db_password = super_secret_db_password dbfilter = regex_with_db_name_filter log_db = False log_db_level = warning log_handler = :INFO log_level = info logrotate = True logfile = /var/log/odoo/proyecto.log xmlrpc_port = 8069 ``` ## Configuración de Postgres Crear usuario en Postgres y darle permiso de super usuario para que pueda crear bases de datos ```bash # Ingresar con el usuario postgres sudo su - postgres createuser odoo --pwprompt # Ingresar contraseña 2 veces psql alter user odoo with superuser ``` ## Configurar el servicio de Odoo con Systemd Crear el siguiente archivo en `/etc/systemd/system/odoo.service` con: ### Postgres instalado en el mismo host ``` [Unit] Description=Odoo nombre de la aplicación Requires=postgresql.service After=network.target postgresql.service [Service] Type=simple PermissionsStartOnly=true SyslogIdentifier=odoo User=system_user Group=system_user ExecStart=/opt/odoo/env/bin/python /opt/odoo/odoo-bin -c /etc/odoo/proyecto.conf WorkingDirectory=/opt/proyecto [Install] WantedBy=multi-user.target ``` ### Postgres esta en otro servidor No es necesario esperar a que se ejecute la unidad de postgres debido a que no existe. ``` [Unit] Description=Odoo nombre de la aplicación After=network.target [Service] Type=simple PermissionsStartOnly=true SyslogIdentifier=odoo User=system_user Group=system_user ExecStart=/opt/odoo/env/bin/python /opt/odoo/odoo-bin -c /etc/odoo/proyecto.conf WorkingDirectory=/opt/proyecto [Install] WantedBy=multi-user.target ``` Cuando se haga alguna modificación sobre una unidad de `Systemd` se debe recargar el demonio con: ```bash sudo systemctl daemon-reload ``` Iniciar el proceso con `Systemd` ```bash sudo systemctl start odoo.service ``` Revisar el estado del proceso ```bash sudo systemctl status odoo.service ``` Monitorear el log ```bash tail -f /var/log/odoo/proyecto.log ``` Una vez validado el funcionamiento de la aplicación configurar el proceso como demonio para que inicie junto al sistema. ```bash sudo systemctl enable odoo.service ```