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
/longpollingna 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
Savjetodavna područja vezana uz ovu temu
Ove su usluge usklađene s temom članka i daju čišći prijelaz od edukativnog sadržaja do konkretne implementacije.
Nastavite čitati
Povezani članci
Prvo po zajedničkim kategorijama, a zatim po najjačem preklapanju u tagovima.
