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://<domain_anda_atau_IP_address>: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.