miércoles, 3 de enero de 2024

ODOO (XI) Resumen apuntes Jaume II

1. Instalación (Resumen)

Sobre un servidor ubuntu se realizan los siguientes pasos
  1. Hacer los clásicos: sudo apt-get update y sudo apt-get dist-upgrade.
  2. Crear el usuario:  sudo adduser --system --quiet --shell=/bin/bash --home=/opt/odoo --group odoo. Dar un password: sudo passwd odoo.
  3. Instalar postgres: sudo apt-get install postgresql postgresql-server-dev-12.
  4. Crear el usuario odoo en postgres. Entramos como usuario postgres y ejecutmos: createuser --createdb --username odoo --no-createrole --no-superuser --pwprompt odoo.
  5. Descargar el odoo 15.0: Entrar en el directorio /opt/odoo con e usuario odoo y clonar el repositorio: su odoo ; cd /opt/odoogit clone https://www.github.com/odoo/odoo --depth 1 --branch 15.0 --single-branch.
  6. Insalación de librerías necesarias:
    1. python3-pip instalador de librerías python. (se utiliza como pip3)
    2. gdebi-core, gdebi le permite instalar paquetes deb locales resolviendo e instalando sus dependencias. apt hace lo mismo, pero solo para paquetes remotos (http, ftp). También puede resolver las dependencias de compilación de los archivos locales de debian/control. Este paquete contiene las bibliotecas y la utilidad de línea de comandos.
    3. libxml2-dev: Archivos de desarrollo para la biblioteca XML de GNOME.
    4. libjpeg-dev: es una biblioteca C ampliamente utilizada para leer y escribir archivosde imagen JPEG.
    5. Libxslt-dev: XSLT es un lenguaje XML para definir transformaciones de archivos XML a algún otro formateo arbitrario, como XML, HTML, texto plano, etc. utilizando hojas de estilo XSLT estándar. LibXSLT se una biblioteca en C que implementa XSLT.
    6. libldap2-dev: librerías de openldap
    7. libsasl2-dev: Cyrus SASL: archivos de desarrollo para la biblioteca de abstracción de autenticación.
    8. Build-essential: Se trata de un paquete que contiene una lista informativa de los paquetes que seconsideran esenciales para la creación de paquetes Debian.
    9. python3-pillow: es una biblioteca de procesamiento de imágenes potente y conveniente dePython.
    10. python3-lxml: es una biblioteca de Python que permite un fácil manejo de archivos XML y HTML, y también se puede utilizar para web scraping.
    11. python3-dev: contiene los archivos de encabezado que necesita para crear extensiones de Python.
    12. python3-setuptools: le permite instalar un paquete sin copiar ningún archivo a su directorio de intérprete. Esto le permite modificar su código fuente y hacer que los cambios surtan efecto sin tener que reconstruir y reinstalar. 
    13. Libpq-dev: contiene un conjunto mínimo de binarios y encabezados `PostgreSQL`_ requeridos para crear aplicaciones de terceros para PostgreSQL. 
    14. npm: administrador de paquetes de node. Cuando está trabajando en un proyecto de JavaScript, puede usar npm para instalar paquetes de código de otras personas en su propio proyecto. 
    15. nodejs: es un entorno en tiempo de ejecución multiplataforma, de código abierto, para la capa del servidor (pero no limitándose a ello) basado en el lenguaje de programación javascript.
    16. Apache2: servidor web. 
  7.  sudo apt-get install build-essential python3-pillow python3-lxml python3-dev python3-pip python3-setuptools libpq-dev npm nodejs git gdebi libldap2-dev libsasl2-dev libxml2-dev libxslt1-dev libjpeg-dev apache2 -y  
  8.  Instalación de dependencias con PIP3. Actualizamos pip: pip3 install --upgrade pip y hacemos: sudo pip3 install -r /opt/odoo/odoo/requirements.txt  y para ver las librerías que hemos instalado ejecutamos: pip freeze que nos debe mostrar un listado que debe coincidir con requeriments.txt.
  9. Arrancar odoo: Con usuario odoo, entramos a la carpeta /opt/odoo/odoo/ que es donde tenemos insalado y ejecutamos el fichero odoo-bin.
  10. Si da errores se puede hacer lo siguiente:
    1. sudo apt install -y npm 
    2. sudo ln -s /usr/bin/nodejs /usr/bin/node
    3. sudo npm install -g less less-plugin-clean-css rtlcss  
    4. sudo apt install node-less 
    5. sudo python3 -m pip install libsass
  11. Instalar librerías pdf: 
    1. wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb 
    2. sudo gdebi -n wkhtmltox_0.12.5-1.bionic_amd64.deb
    3. rm wkhtmltox_0.12.5-1.bionic_amd64.deb
    4. sudo ln -s /usr/local/bin/wkhtmltopdf /usr/bin/
    5. sudo ln -s /usr/local/bin/wkhtmltoimage /usr/bin/

2. Configuración (Resumen)

Ficheros logs:
  1. sudo mkdir /var/log/odoo
  2. chown odoo:root /var/log/odoo

Fichero de configuración de odoo:
  1. cp /opt/odoo/odoo/debian/odoo.conf /etc/odoo.conf 
  2. chown odoo: /etc/odoo.conf 
  3. chmod 640 /etc/odoo.conf 
  4. nano /etc/odoo.conf con este contenido:
db_user = odoo
db_password = false
addons_path = /opt/odoo/odoo/addons
logfile = /var/log/odoo/odoo-server.log

Arranque automático de odoo (como servicio):
  1. sudo cp /opt/odoo/odoo/debian/odoo.service /etc/systemd/system/odoo.service 
  2. sudo nano /etc/systemd/system/odoo.service con este contenido:
[Service]
Type= simple
User=odoo
Group= odoo
6ExecStart=/opt/odoo/odoo/odoo-bin --config /etc/odoo.conf
  1. Activar el servicio:  sudo systemctl enable odoo.service  
  2. Arrancar el servicio: sudo systemctl start odoo 
  3. Parar el servicio: sudo systemctl stop odoo 
  4. Ver estado del servicio: sudo systemctl status odoo 
  5. Rearrancar el servicio: sudo systemctl restart odoo 
Para poder acceder desde el navegador: http://IP_server:8069 y sale




3. Conocimientos previos

Instaladores pip y pipx

Estos instaladores permiten instalar las dependencias. Pero cuando se instalan dependencias con distintas versiones aparece el "dependency hell” que provoca fallos de ejecución muy complicados. Esta experiencia la sufrí con el lenguaje java.
Para ello aparece pipx para instalar de forma aislada (y no global como hace pip) de las librerías.
En Pyton-Land se explica claramente para que se utiliza pipx y ademas hace una lista de las librerías que si se aconseja instalarlas en un entorno global. Es muy recomendable su lectura.

1. Los módulos internos (estándar)

Los módulos se pueden instalar desde el cliente web


Para instalar desde el servidor:

  1. El fichero odoo.conf indica la ruta de los módulos
  2. Los módulos estándar suelen estar en la carpeta addons (cuya ruta és  /opt/odoo/odoo/addons /opt/odoo/addons pero también puede ser /usr/lib/..../addons)
  3. Para instalar un módulo se ejecuta:   

./odoo-bin -c /etc/odoo-server.conf -d DBNAME -u module_name/all

Siendo:

  • DBNAME el nombre de la base dedatos
  • module_name el nombre del módulo a cargar

2. Los módulos externos (de un github)

Los repositorios más utilizados son:
  • https://github.com/OCA
  • https://apps.odoo.com/apps
Se puede instalar de dos maneras:

1. Instalación por descarga:

1. Para descargar, lo normal es crear una carpeta dentro del home del usuario para no tener problemas de permisos dentro del servidor y copiar a dicha carpeta el módulo del repositorio con alguno de estos métodos
  • git clone ruta_módulo (dentro del github remoto)
  • wget (apuntado la página oficial de odoo)
2. Para copiar desde nuestra máquina local al servidor, se puede hacer por ssh o por ftp si el servidor tiene instalado ese módulo. Por ejemplo en ssh se puede hacer

scp nombre_archivo_a_subir usuario@servidor:ruta_servidor_donde_colocar_archivo

3. Una vez copiado, hay que indicar en el fichero de configuración odoo.conf y en addons_path hay que añadir la ruta de la carpeta donde se ha descargado el módulo. Las rutas se separarán por comas. 

4. Hay que instalar las librerías que necesite dicho módulo. Para ver las dependencias:
  • Hay un archivo requirements.txt dentro del módulo copiado al servidor que contiene la relación de dependencias. 
  • Seleccionando el módulo en el cliente web y dándole al boton derecho del mouse sobre el módulo y seleccionar Más-Información.

Dichas dependencias se instalaráncon pip o pipx (preferentemente)
5. Actualizar la lista de aplicaciones para ver el nuevo módulo instalado.

2. Instalación por pipx:


pipx install odoo16-addon 





No hay comentarios :

Publicar un comentario