Blog članak

Kako instalirati Odoo 14 i pokrenuti ga preko Nginx proxyja

Saznajte kako instalirati Odoo 14 sustav i postaviti ga da radi preko Nginx proxyja, kroz cjelovit vodič.

Postavite Ubuntu ili Debian Linux server i spojite se na njega kao SSH root korisnik ili pokrenite naredbu:

sudo su

koja će vas prebaciti na root korisnika kako biste mogli izvršiti naredbu:

apt update && sudo apt upgrade -y

Odoo koristi PostgreSQL pa ga trebamo instalirati:

apt install postgresql -y

Da biste pomoću Odooa mogli stvarati PDF dokumente, trebate instalirati wkhtmltopdf, preuzmite ga s GitHuba:

wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb

Zatim trebate instalirati preuzeti .deb paket naredbom sličnom ovoj, uz prilagodbu putanje direktoriju u kojem se paket nalazi:

apt install /home/user/wkhtmltox_0.12.6-1.focal_amd64.deb

Instalacija Odoo sustava

Sada Odoo možemo preuzeti i instalirati iz službenog Ubuntu odnosno Debian repozitorija kao root. Tijekom instalacije Odoo će dohvatiti i sve ostalo što mu treba.

wget -O - https://nightly.odoo.com/odoo.key | apt-key add -
echo "deb http://nightly.odoo.com/14.0/nightly/deb/ ./" >> /etc/apt/sources.list.d/odoo.list
apt-get update && apt-get install odoo

Odoo sustav može se pokretati, zaustavljati i resetirati kao sistemski servis ovim naredbama:

sudo systemctl enable odoo
sudo systemctl restart odoo
sudo systemctl stop odoo
sudo systemctl start odoo

Sada imamo Odoo sustav koji radi preko porta 8069, što znači da mu pristupamo preko IP adrese servera, primjerice 192.168.0.1:8069, ili preko adrese poput example.com:8069.

Postavljanje Nginx proxyja

Web aplikacije obično rade preko porta 80 za HTTP i 443 za HTTPS, pa ispred Odoo sustava treba postaviti proxy koji će mu omogućiti rad preko tih standardnih portova.

To se često radi pomoću popularnog i laganog Nginx proxyja pa ga postavimo:

sudo apt install nginx

Sada trebamo dovršiti konfiguraciju, što većini nije trivijalno, pa krenimo polako. Najprije morate omogućiti proxy_mode u Odoo konfiguraciji:

sudo nano /etc/odoo/odoo.conf

Dodajte u datoteku:

proxy_mode = True

U istoj datoteci odmah ćemo postaviti i workere kako bismo omogućili longpolling port preko kojeg radi chat funkcionalnost, kojoj treba stalni worker. Na početku je konfiguracija postavljena na 0 workera, što nije doslovno nula, nego automatska dodjela, ali u tom modu chat ne radi.

Ovdje morate malo računati i isplanirati postavke. Matematika i teorija izgledaju ovako:

  • ako imamo, primjerice, 4 jezgre i 8 threadova
  • želimo opsluživati, primjerice, 60 korisnika istovremeno
  • 60 korisnika / 6 = 10, što je broj workera koji bi nam teoretski trebali za glatki rad
  • (4 * 2) + 1 = 9, što je teorijski maksimalan broj workera za Odoo s obzirom na broj jezgri
  • u praksi ćemo koristiti 8 workera + 1 worker za cron zadatke i pratiti potrošnju resursa, koja bi trebala biti između 7 i 7.5; ako je manja možemo dodati workere, a ako je veća trebamo ih smanjiti
  • na kraju moramo znati i koliko RAM-a trebamo, za što možemo koristiti formulu RAM = 9 * (0.8 * 150) + (0.2 * 1024)), što je otprilike 3 GB RAM-a kao minimum za normalan rad Odoo sustava

Sada kada smo izračunali što možemo postaviti, dovršimo konfiguraciju:

[options]
limit_memory_hard = 1677721600
limit_memory_soft = 629145600
limit_request = 8192
limit_time_cpu = 600
limit_time_real = 1200
max_cron_threads = 1
workers = 8

Zatim trebate postaviti proxy i ažurirati Nginx konfiguraciju:

sudo nano /etc/nginx/sites-available/default

Najprije morate stvoriti grupe za dva važna Odoo porta. Prva je za sam sustav:

upstream odoo {
   server 127.0.0.1:8069;
}

Druga grupa je za port koji Odoo koristi za chat funkcionalnost:

upstream odoochat {
   server 127.0.0.1:8072;
}

Zatim želimo da sve radi preko HTTPS protokola, za što trebamo SSL certifikat koji se može postaviti pomoću CertBota, što ću ovdje preskočiti jer ako ne znate postaviti SSL, nemojte ovo raditi napola.

# http -> https
server {
   listen 80;
   server_name example.com www.example.com;
   rewrite ^(.*) https://$host$1 permanent;
}

Ne zaboravite u ovom i svim drugim primjerima koda unijeti vlastitu domenu umjesto example.com.

Nakon toga dolazi najveći blok konfiguracije koji povezuje HTTPS, proxy headere, longpolling i cache statičkih datoteka Odoo sustava. Ideja mu je sljedeća:

  • slušati na portu 443 preko SSL-a i po mogućnosti HTTP/2
  • proslijediti ispravne proxy headere Odoou
  • koristiti CertBot generirane SSL postavke
  • preusmjeriti /longpolling na Odoo chat port
  • glavni promet proslijediti prema Odoo backendu
  • ubrzati isporuku statičkih datoteka pomoću Nginx cachea

U originalnoj konfiguraciji to izgleda ovako:

server {
   listen [::]:443 ssl ipv6only=on;
   listen 443 ssl http2;
   server_name example.com www.example.com;
   proxy_read_timeout 720s;
   proxy_connect_timeout 720s;
   proxy_send_timeout 720s;
   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;
   ssl on;
   ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/example.com/privkey.pem;
   include /etc/letsencrypt/options-ssl-nginx.conf;
   ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
   location /longpolling {
      proxy_pass http://odoochat;
   }
   location / {
      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;
}

Ako vam ipv6 i http2 linije stvaraju problem, možete ih sažeti u jednostavniji oblik:

listen 443;

Ključne ideje ove konfiguracije su:

  • forwardanje ispravnih headera prema aplikaciji
  • korištenje CertBota za ispravno SSL postavljanje
  • usmjeravanje longpolling zahtjeva na odgovarajući port
  • povezivanje Odoo backenda s Nginxom
  • ubrzavanje statičkih Odoo datoteka uz cache od 90 minuta

Time dobivate Odoo instalaciju koja radi preko Nginxa i standardnih web portova, uz bolju kontrolu, sigurnost i performanse.

Povezane usluge

Ove su usluge usklađene s temom članka i daju čišći prijelaz od edukativnog sadržaja do konkretne implementacije.

Nastavite čitati

Prvo po zajedničkim kategorijama, a zatim po najjačem preklapanju u tagovima.