Actualidad

Instalando Odoo 15 en un VPS

Por Zéltika


Publicado 30 agosto, 2022
Categorías:

Odoo

 

Odoo se está conviertiendo en el ERP de referencia para muchas pequeñas empresas que consideran demasiado elevada la inversión en otros ERP’s como puede ser SAP o Dynamics.

A priori, Odoo es una solución que permitirá a la empresa ir integrando nuevos módulos e ir creciendo sin que el las limitaciones de software sean un problema. Se pueden ir desarrollando nuevas funcionalidades y dar solución a los problemas en cada momento.

Pero realizar una instalación de Odoo en una máquina local no es, en mi opinión, la mejor opción. Actualización del hardware, consumo energético, ubicación física, actualización del sistema operativo o coste de licencias, entre otros, hacen que a día de hoy sea más interesante la instalación en un un servidor en la nube. Y aquí tenemos un abanico de posibilidades importante (AWS, Azzure, VPS, etc.).

En esta ocasión, y para la implantación en una pequeña pyme, vamos a decantarnos por un VPS (un servidor virtual privado), debido a la relación prestaciones-coste. Existen muchos proveedores que ofrecen un VPS con un precio más que interesante para la funcionalidad que ofrecen y sobre unos de ellos vamos a realizar una implantación básica de Odoo 15.

En realidad escribo estas notas para poder recordar en un futuro los pasos y realizar una nueva implantación en el menos tiempo posible, así que si a alguien le resultan de interés y puede utilizarlas, adelante.

Los pasos a seguir serán:

  1. Configuración del VPS
  2. Instalación de Nginx
  3. Instalación de PostgresSQL
  4. Instalación de Odoo
  5. Configuración de Nginx como proxy inverso
  6. Apps de terceros

 

Configuración VPS

Primer paso, disponer de un VPS y los datos de acceso a la máquina: IP, usuario y contraseña así como tener habilitada una conexión SSH.

La mayoría de los proveedores ya ofrecen el VPS con el sistema operativo instalado y funcionando. En mi caso usaré Ubuntu 20.04 (Focal). SUna de las ventajas que tenemos es que podemos reinstalar unaimagen limpia del sistema operativo cuando lo necesitemos, así que podemos usarlo para realizar desarrollos y pruebas en las primeras fases sin temos a destrozar algo.

Una vez listo, empezamos con la implantación propiamente.

 

Instalación de Nginx como servidor web

Instalación Nginx

Nginx está disponible en los repositorios predeterminados de Ubuntu, así que es posible instalarlo desde estos repositorios usando el sistema de paquetes apt. Para ello, desde la línea de comandos del cliente SSH:

$ sudo apt update
$ install nginx

Ajustes del firewall

Debemos aplicar ajustes al software del firewall para permitir el acceso al servicio.

$ sudo ufw app list

Debería obtener un listado de los perfiles de aplicación:


Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH

Se recomienda habilitar el perfil más restrictivo, que de todos modos permitirá el tráfico que configuró. En este momento, solo tendremos que permitir el tráfico en el puerto 80.

Puede habilitarlo escribiendo lo siguiente:
$ sudo ufw allow 'Nginx HTTP'

Puede verificar el cambio escribiendo lo siguiente:
$ sudo ufw status

El resultado indicará el tráfico de HTTP que se permite:


Output
Status: active


To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)

 

Comprobar su servidor web

Realice una verificación con systemd init para asegurarse de que el servicio esté en ejecución escribiendo lo siguiente:

$ systemctl status nginx

Cuando tenga la dirección IP de su servidor, introdúzcala en la barra de direcciones de su navegador:

http://your_server_ip

 

Administrar el proceso de Nginx

Ahora que su servidor web está listo, revisaremos algunos de los comandos básicos de administración.

Para detener su servidor web, escriba lo siguiente:
$ sudo systemctl stop nginx

Para iniciar el servidor web cuando no esté activo, escriba lo siguiente:
$ sudo systemctl start nginx

Para detener y luego iniciar el servicio de nuevo, escriba lo siguiente:
$ sudo systemctl restart nginx

Si solo está realizando cambios en la configuración, Nginx a menudo puede volver a cargase sin perder las conexiones. Para hacer esto, escriba lo siguiente:
$ sudo systemctl reload nginx

De forma predeterminada, Nginx está configurado para iniciarse automáticamente cuando lo haga el servidor. Si no es lo que quiere, deshabilite este comportamiento escribiendo lo siguiente:
$ sudo systemctl disable nginx

Para volver a habilitar el servicio de modo que se cargue en el inicio, puede escribir lo siguiente:
$ sudo systemctl enable

Configurar bloques de servidor

En Nginx, se pueden utilizar bloques de servidor (similares a hosts virtuales de Apache) para encapsular los detalles de la configuración y alojar más de un dominio desde un único servidor.
Configuraremos un dominio llamado your_domain, que debe ser cambiado por el nombre de dominio correspondiente.

Nginx en Ubuntu 20.04 tiene habilitado un bloque de servidor por defecto, que está configurado para servir documentos desde un directorio en: /var/www/html. Esta es la configuración perfecta para un solo sitio, pero si tenemos varios no funcionaría. En lugar de modificar /var/www/html, vamos a crear una estructura de directorios dentro de /var/www para nuestro sitio your_domain y dejaremos /var/www/html como directorio predeterminado que se suministrará si una solicitud de cliente no coincide con otros sitios.

Cree el directorio para your_domain como se muestra a continuación, usando el indicador -p para crear cualquier directorio principal necesario:

$ sudo mkdir -p /var/www/your_domain/html

A continuación, asigne la propiedad del directorio con la variable de entorno $USER:

$ sudo chown -R $USER:$USER /var/www/your_domain/html

Los permisos de los roots web deberían ser correctos si no modificó el valor umask, que establece permisos de archivos predeterminados. Para asegurarse de que sus permisos sean correctos y permitir al propietario leer, escribir y ejecutar los archivos, y a la vez conceder solo permisos de lectura y ejecución a los grupos y terceros, puede ingresar el siguiente comando:

$ sudo chmod -R 755 /var/www/your_domain

A continuación, cree una página de ejemplo index.html utilizando nano o su editor favorito:

$ nano /var/www/your_domain/html/index.html

Dentro de ella, agregue el siguiente ejemplo de HTML (en /var/www/your_domain/html/index.html):


<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain server block is working!</h1>
</body>
</html>

Cuando termine, escriba CTRL y X, y luego, Y y ENTER, para guardar y cerrar el archivo (comandos básicos de nano).

Para que Nginx presente este contenido, es necesario crear un bloque de servidor con las directivas correctas. En vez de modificar el archivo de configuración predeterminado directamente, crearemos uno nuevo en /etc/nginx/sites-available/your_domain:

$ sudo nano /etc/nginx/sites-available/your_domain

Péguelo en el siguiente bloque de configuración, similar al predeterminado, pero actualizado para nuestro nuevo directorio y nombre de dominio (en /etc/nginx/sites-available/your_domain):


server {
listen 80;
listen [::]:80;
root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;
server_name your_domain www.your_domain;
location / {
try_files $uri $uri/ =404;
}

Observe que actualizamos la configuración root en nuestro nuevo directorio y el server_name para nuestro nombre de dominio.

A continuación, habilitaremos el archivo creando un enlace entre él y el directorio sites-enabled, en el cual Nginx obtiene lecturas durante el inicio:

$ sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Ahora, contamos con dos bloques de servidor habilitados y configurados para responder a las solicitudes conforme a las directivas listen y server_name:

your_domain: responderá a las solicitudes de your_domain y www.your_domain.
default: responderá a cualquier solicitud en el puerto 80 que no coincida con los otros dos bloques.

Para evitar un problema de memoria de depósito de hash que pueda surgir al agregar nombres de servidor, es necesario aplicar ajustes a un valor en el archivo /etc/nginx/nginx.conf. Abra el archivo:

$ sudo nano /etc/nginx/nginx.conf

Encuentre la directiva server_names_hash_bucket_size y borre el símbolo # para eliminar el comentario de la línea. Si utiliza nano, presione CTRL y w para buscar rápidamente palabras en el archivo (en /etc/nginx/nginx.conf):


...
http {
...
server_names_hash_bucket_size 64;
...
}
...

Guarde y cierre el archivo cuando termine.

A continuación, compruebe que no haya errores de sintaxis en ninguno de sus archivos de Nginx:

$ sudo nginx -t

Si no hay problemas, reinicie Nginx para habilitar los cambios:

$ sudo systemctl restart nginx

Con esto, Nginx debería proporcionar su nombre de dominio. Puede probarlo visitando http://your_domain.

Archivos y directorios importantes de Ngnix

/var/www/html: el contenido web real, que por defecto solo consta de la página predeterminada de Nginx que vio antes, se presenta desde el directorio /var/www/html. Esto se puede cambiar modificando los archivos de configuración de Nginx.

Configuración del servidor

/etc/nginx: directorio de configuración de Nginx. En él se encuentran todos los archivos de configuración de Nginx.
/etc/nginx/nginx.conf: archivo de configuración principal de Nginx. Esto se puede modificar para realizar cambios en la configuración general de Nginx.
/etc/nginx/sites-available/: directorio en el que se pueden guardar bloques de servidor por sitio. Nginx no utilizará los archivos de configuración de este directorio a menos que estén vinculados al directorio sites-enabled. Normalmente, toda la configuración del bloque de servidor se realiza en este directorio y luego se habilita estableciendo un vínculo con el otro directorio.
/etc/nginx/sites-enabled/: directorio en el que se almacenan los bloques de servidor habilitados por sitio. Normalmente, estos se crean estableciendo vínculos con los archivos de configuración del directorio sites-available.
/etc/nginx/snippets: este directorio contiene fragmentos de configuración que pueden incluirse en otras partes de la configuración de Nginx. Los segmentos de configuración potencialmente repetibles reúnen las condiciones para la conversión a fragmentos.
/var/log/nginx/access.log: cada solicitud a su servidor web se registra en este archivo de registro, a menos que Nginx esté configurado para hacer algo diferente.
/var/log/nginx/error.log: cualquier error de Nginx se asentará en este registro.

 

Fuente.- La elaboración de estos apuntes, está basada en el artículo:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-20-04-es

 

Continúa en el siguiente enlace: Odoo 15 en un VPS II


Comentarios cerrados.