Tutorial deploy Odoo 12 di Ubuntu 18.04

Odoo adalah perangkat lunak bisnis all-in-one paling populer di dunia. Ini menawarkan berbagai aplikasi bisnis termasuk CRM, situs web, e-Commerce, billing, akuntansi, manufaktur, gudang, manajemen proyek, inventaris, dan banyak lagi, semuanya terintegrasi menjadi satu software.

Odoo dapat diinstal dengan beberapa cara berbeda. Cara termudah dan tercepat untuk menginstal Odoo adalah dengan menggunakan repositori APT resmi Odoo.

Jika Anda ingin memiliki lebih banyak fleksibilitas seperti menjalankan beberapa versi Odoo pada sistem yang sama, maka Anda dapat menggunakan” docker dan” docker compose atau menginstal Odoo di lingkungan virtual.

Tutorial ini mencakup langkah-langkah yang diperlukan untuk menginstal dan mengkonfigurasi Odoo 12 untuk produksi menggunakan Git source dan Python virtual environment pada sistem Ubuntu 18.04.

*Sebelum Mulai*

Login ke mesin Ubuntu Anda sebagai user sudo dan perbarui sistem ke paket terbaru:

sudo apt update && sudo apt upgrade

Install” Git,” Pip,” Node.js” dan tools yang dibutuhkan untuk build Odoo dan dependensi nya:

sudo apt install git python3-pip build-essential wget python3-dev python3-venv python3-wheel libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-setuptools node-less

*Membuat user untuk Odoo*

Buat user sistem baru untuk Odoo bernama odoo12 dengan direktori home /opt/odoo12 menggunakan perintah berikut:

sudo useradd -m -d /opt/odoo12 -U -r -s /bin/bash odoo12

Anda dapat menggunakan nama apa pun untuk user Odoo selama Anda membuat user PostgreSQL dengan nama yang sama.

*Install dan konfigurasi PostgreSQL*

Instal paket PostgreSQL dari repositori default Ubuntu:

sudo apt install postgresql

Setelah instalasi selesai, buat user PostgreSQL dengan nama yang sama dengan user sistem yang dibuat sebelumnya, dalam kasus kami yaitu odoo12:

sudo su – postgres -c “createuser -s odoo12″

*Install Wkhtmltopdf*

Paket wkhtmltox menyediakan seperangkat alat baris perintah open source yang dapat merender HTML ke dalam PDF dan berbagai format gambar. Untuk mencetak laporan PDF, Anda memerlukan tool” wkhtmltopdf.

Versi yang direkomendasikan untuk Odoo adalah 0.12.1 yang tidak tersedia di repositori resmi Ubuntu 18.04.

Unduh paket menggunakan perintah wget berikut:

wget https://builds.wkhtmltopdf.org/0.12.1.3/wkhtmltox_0.12.1.3-1~bionic_amd64.deb

Setelah unduhan selesai instal paket dengan mengetik:

sudo apt install ./wkhtmltox_0.12.1.3-1~bionic_amd64.deb

*Install dan Konfigurasi Odoo*

Kita akan menginstal Odoo dari repositori GitHub di dalam Python virtual environment. yang terisolasi.

Sebelum memulai dengan proses instalasi, beralihlah ke user odoo12:

sudo su – odoo12

Kemudian cloning Odoo 12 source code dari” repository GitHub:

git clone https://www.github.com/odoo/odoo –depth 1 –branch 12.0 /opt/odoo12/odoo

Setelah source code diunduh, buat Python virtual environment baru untuk instalasi Odoo 12:

cd /opt/odoo12 python3 -m venv odoo-venv

Selanjutnya, aktifkan environment dengan perintah berikut:

source odoo-venv/bin/activate

Instal semua modul Python yang diperlukan dengan pip3:

pip3 install wheel pip3 install -r odoo/requirements.txt

Jika Anda menemukan kesalahan kompilasi selama instalasi, pastikan Anda menginstal semua dependensi yang diperlukan yang tercantum di bagian */Sebelum mulai” /*pada atas artikel ini.

Nonaktifkan environment menggunakan perintah berikut:

deactivate

Buat direktori baru untuk custom addons:

mkdir /opt/odoo12/odoo-custom-addons

Beralih kembali ke pengguna sudo Anda:

exit

Selanjutnya, buat file konfigurasi, dengan menyalin file konfigurasi sampel yang disertakan:

sudo cp /opt/odoo12/odoo/debian/odoo.conf /etc/odoo12.conf

Buka file dan edit sebagai berikut:

sudo nano /etc/odoo12.conf

[options] ; This is the password that allows database operations: admin_passwd = my_admin_passwd db_host = False db_port = False db_user = odoo12 db_password = False addons_path = /opt/odoo12/odoo/addons,/opt/odoo12/odoo-custom-addons

Jangan lupa untuk mengubah my_admin_passwd dengan kata sandi yang lebih aman dan mudah di ingat.

*Membuat Unit File Systemd*

Untuk menjalankan Odoo sebagai service (layanan sistem), kita perlu membuat file unit sistem di direktori/etc/systemd/system/.

Buka teks editor Anda dan paste konfigurasi berikut:

sudo nano /etc/systemd/system/odoo12.service

[Unit] Description=Odoo12 Requires=postgresql.service After=network.target postgresql.service

[Service] Type=simple SyslogIdentifier=odoo12 PermissionsStartOnly=true User=odoo12 Group=odoo12 ExecStart=/opt/odoo12/odoo-venv/bin/python3 /opt/odoo12/odoo/odoo-bin -c /etc/odoo12.conf StandardOutput=journal+console

[Install] WantedBy=multi-user.target

Beri tahu systemd bahwa ada file unit baru dan start layanan Odoo dengan menjalankan:

sudo systemctl daemon-reload sudo systemctl start odoo12

Periksa status layanan dengan perintah berikut:

sudo systemctl status odoo12

Outputnya akan terlihat seperti di bawah ini yang menunjukkan bahwa layanan Odoo aktif dan berjalan.

* odoo12.service – Odoo12 Loaded: loaded (/etc/systemd/system/odoo12.service; disabled; vendor preset: enabled) Active: active (running) since Tue 2018-10-09 14:15:30 PDT; 3s ago Main PID: 24334 (python3) Tasks: 4 (limit: 2319) CGroup: /system.slice/odoo12.service `-24334 /opt/odoo12/odoo-venv/bin/python3 /opt/odoo12/odoo/odoo-bin -c /etc/odoo12.conf

Aktifkan layanan Odoo untuk dimulai secara otomatis saat boot:

sudo systemctl enable odoo12

Jika Anda ingin melihat pesan yang dicatat oleh layanan Odoo, Anda dapat menggunakan perintah di bawah ini:

sudo journalctl -u odoo12

*Test Instalasi Odoo*

Buka browser Anda dan ketik:

*http://:8069*

Dengan asumsi instalasi berhasil, layar yang mirip dengan berikut ini akan muncul:

*Konfigurasikan Nginx sebagai” SSL Termination Proxy*

Pastikan Anda telah memenuhi persyaratan berikut sebelum melanjutkan dengan bagian ini:

· Nama domain menunjuk ke IP server publik Anda. Dalam tutorial ini kita akan menggunakan” example.com. · Nginx terinstall” di mesin Ubuntu Anda · SSL certificate tersedia untuk domain. Jika belum memiliki sertifikat SSL, Anda bisa install SSL certificate gratis dengan Let”€™s Encrypt” .

Odoo web Server secara default melayani lalu lintas melalui HTTP. Untuk membuat deployment Odoo agar lebih aman, kita akan mengonfigurasi Nginx sebagai proxy terminasi SSL yang akan melayani lalu lintas melalui HTTPS.

SSL termination proxy (Proxy terminasi SSL) adalah proxy server yang menangani enkripsi / dekripsi SSL. Ini berarti bahwa proxy terminasi (Nginx) akan menangani dan mendekripsi koneksi TLS yang masuk (HTTPS), dan itu akan meneruskan permintaan yang tidak terenkripsi ke layanan internal (Odoo) sehingga lalu lintas antara Nginx dan Odoo tidak akan dienkripsi (Menggunakan HTTP).

Menggunakan” reverse proxy memberi Anda banyak manfaat sepertiLoad Balancing,SSL Termination, Caching, Kompresi, Menyajikan Konten Statis yang lebih cepat, dan banyak lagi.

Dalam contoh ini kita akan mengkonfigurasi SSL Termination, pengalihan HTTP ke HTTPS, pengalihan WWW ke non-WWW, menyimpan file statis dan mengaktifkan kompresi GZip.

Buka” text editor” dan buat konfigurasi berikut

sudo nano /etc/nginx/sites-enabled/example.com

# Odoo servers upstream odoo { server 127.0.0.1:8069; }

upstream odoochat { server 127.0.0.1:8072; }

# HTTP -> HTTPS server { listen 80; server_name www.example.com example.com;

include snippets/letsencrypt.conf; return 301 https://example.com$request_uri; }

# WWW -> NON WWW server { listen 443 ssl http2; server_name www.example.com;

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf;

return 301 https://example.com$request_uri; }

server { listen 443 ssl http2; server_name example.com;

proxy_read_timeout 720s; proxy_connect_timeout 720s; proxy_send_timeout 720s;

# Proxy headers 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 parameters ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf;

# log files access_log /var/log/nginx/odoo.access.log; error_log /var/log/nginx/odoo.error.log;

# Handle longpoll requests location /longpolling { proxy_pass http://odoochat; }

# Handle / requests location / { proxy_redirect off; proxy_pass http://odoo; }

# Cache static files location ~* /web/static/ { proxy_cache_valid 200 90m; proxy_buffering on; expires 864000; proxy_pass http://odoo; }

# Gzip gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript; gzip on; }

Jangan lupa untuk mengganti example.com dengan domain Odoo Anda dan setel jalur yang benar ke file sertifikat SSL. Snippets yang digunakan dalam konfigurasi ini dibuat dalam panduan ini.

Setelah selesai,” restart” layanan Nginx dengan:

sudo systemctl restart nginx

Selanjutnya, kita perlu memberi tahu Odoo bahwa kita akan menggunakan proxy. Untuk melakukannya, buka file konfigurasi dan tambahkan baris berikut:

sudo nano /etc/odoo12.conf

proxy_mode = True

Restart layanan Odoo agar perubahan diterapkan:

sudo systemctl restart odoo12

Pada poin ini, server Anda sudah dikonfigurasikan dan dapat mengakses instance Odoo Anda di: https://example.com

*Ubah binding interface*

Langkah ini opsional, tetapi ini merupakan praktik keamanan yang baik.

Secara default, server Odoo mendengarkan port 8069 di semua antarmuka. Jika Anda ingin menonaktifkan akses langsung ke instance Odoo Anda, Anda dapat memblokir port 8069 untuk semua interface publik atau memaksa Odoo hanya listen pada interface lokal.

Dalam panduan ini, kita akan mengonfigurasi Odoo hanya untuk listen pada127.0.0.1. Buka konfigurasi, tambahkan dua baris berikut di akhir file:

sudo nano /etc/odoo12.conf

xmlrpc_interface = 127.0.0.1 netrpc_interface = 127.0.0.1

Simpan file konfigurasi dan restart Odoo server agar perubahan diterapkan:

sudo systemctl restart odoo12

*Aktifkan Multiprocessing*

Secara default, Odoo bekerja dalam mode multithreading. Untuk deployment lingkungan produksi, disarankan untuk beralih ke server multiprosesing karena meningkatkan stabilitas, dan membuat penggunaan sumber daya sistem yang lebih baik. Untuk mengaktifkan multiprocessing, kita perlu mengedit konfigurasi Odoo dan mengatur jumlah proses worker agar lebih optimal

Jumlah workers dihitung berdasarkan jumlah CPU cores dalam sistem dan memori RAM yang tersedia.

Menurut dokumentasi” resmi” Odoo,” untuk menghitung jumlah worker dan ukuran memori RAM yang diperlukan, kita akan menggunakan rumus dan asumsi berikut:

*Perhitungan jumlah Worker*

· Jumlah maksimal worker secara teoritis = (system_cpu * 2) + 1 · 1 worker dapat melayani kurang lebih 6 users secara bersamaan · Cron workers” juga membutuhkan sumber daya CPU

*RAM memory size calculation*

· Kita akan mempertimbangkan bahwa 20% dari semua requests adalah requests “berat”, sedangkan 80% requests lebih ringan. Requests berat menggunakan sekitar 1 GB RAM sedangkan yang lebih ringan” menggunakan sekitar 150 MB RAM · RAM yang dibutuhkan =” jumlah_workers * ((rasio_request_ringan * estimasi_RAM_request_ringan) + (rasio_request_berat *estimasi_RAM_request_berat))

Jika Anda tidak tahu berapa banyak CPU yang Anda miliki di sistem yang berjalan, Anda dapat menggunakan perintah grep” berikut:

grep -c ^processor /proc/cpuinfo

Katakanlah kita memiliki sistem dengan 4 core CPU, 8 GB memori RAM dan 30 user Odoo bersamaan.

· 30 users / 6 = **5**” (5″ adalah jumlah teoritis worker yang dibutuhkan ) · (4 * 2) + 1 = **9**” ( 9 adalah jumlah teoritis worker maksimal)

Berdasarkan perhitungan di atas kita dapat menggunakan 5 workers + 1 worker untuk cron yang totalnya 6 worker.

Hitung konsumsi memori RAM berdasarkan jumlah workers:

RAM = 6 * ((0.8*150) + (0.2*1024)) ~= 2 GB of RAM

Perhitungan di atas menunjukkan bahwa instalasi Odoo akan membutuhkan sekitar 2GB RAM.

Untuk beralih ke mode multiprocessing, buka file konfigurasi dan tambahkan baris berikut:

vi /etc/odoo12.conf

limit_memory_hard = 2684354560 limit_memory_soft = 2147483648 limit_request = 8192 limit_time_cpu = 600 limit_time_real = 1200 max_cron_threads = 1 workers = 5

Restart layanan Odoo agar perubahan diterapkan:

sudo systemctl restart odoo12

Sisa sumber daya sistem akan digunakan oleh layanan lain yang berjalan di sistem. Dalam panduan ini kami memasang Odoo bersama PostgreSQL dan Nginx di server yang sama dan tergantung pada pengaturan Anda, Anda mungkin juga memiliki layanan lain yang berjalan di server Anda.

*Kesimpulan*

Tutorial ini memandu Anda melalui instalasi Odoo 12 di Ubuntu 18.04 di Python virtual environment menggunakan Nginx sebagai reverse proxy. Anda juga belajar cara mengaktifkan multiprosesing dan mengoptimalkan Odoo untuk lingkungan produksi.

Anda juga mungkin ingin memeriksa tutorial kami tentang cara membuat backup harian secara otomatis database Odoo.

Leave a Reply

Your email address will not be published.