Odoo adalah aplikasi 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.
Tutorial ini mencakup langkah-langkah yang diperlukan untuk menginstal dan mengkonfigurasi Odoo 13 didalam Python virtual environment di CentOS 8. Kami akan download Odoo dari repositori Github mereka dan menggunakan Nginx sebagai reverse proxy.
Sebelum Mulai
Login ke mesin CentOS Anda sebagai user sudo dan perbarui sistem ke paket terbaru:
Install Dependencies
Instal Python 3, Git, pip, dan semua libraries serta tools yang diperlukan untuk build Odoo dari source:
sudo dnf install python3 python3-devel git gcc redhat-rpm-config libxslt-devel bzip2-devel openldap-devel libjpeg-devel freetype-devel
Membuat user untuk Odoo
Buat user sistem baru untuk Odoo bernama odoo13
dengan direktori home /opt/odoo12
menggunakan perintah berikut:
sudo useradd -m -d /opt/odoo13 -U -r -s /bin/bash odoo13
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 10 dari repositori default CentOS:
sudo dnf install @postgresql:10
Setelah instalasi selesai, buat cluster database PostgreSQL baru:
sudo postgresql-setup initdb
Aktifkan dan mulai PostgreSQL service:
sudo systemctl enable --now postgresql
Buat user PostgreSQL dengan nama yang sama dengan user sistem yang dibuat sebelumnya, dalam kasus kami yaitu “odoo13”:
sudo su - postgres -c "createuser -s odoo13"
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.5
yang tidak tersedia di repositori resmi CentOS 8.
Install rpm
package dari Github dengan mengetik:
sudo dnf install https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos8.x86_64.rpm
Install dan Konfigurasi Odoo
Sebelum mulai instalasi, pindah ke user “odoo13” dengan perintah :
sudo su - odoo13
Kemudian clone Odoo 13 source code dari repository GitHub:
git clone https://www.github.com/odoo/odoo --depth 1 --branch 13.0 /opt/odoo13/odoo
Pindah ke direktori /opt/odoo13
dan buat virtual environment Python baru untuk instalasi Odoo:
cd /opt/odoo13python3 -m venv venv
Selanjutnya, aktifkan environment dengan perintah source
:
source venv/bin/activate
Instal semua modul Python yang diperlukan dengan pip3:
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.
Setelah instalasi selesai, nonaktifkan environment menggunakan perintah berikut:
deactivate
Buat direktori baru untuk custom addons:
mkdir /opt/odoo13/odoo-custom-addons
Beralih kembali ke user sudo Anda:
exit
Selanjutnya, buat file konfigurasi, buka text editor nano
dan kemudian copy dan paste pengaturan berikut :
sudo nano /etc/odoo13.conf
[options] ; This is the password that allows database operations: admin_passwd = superadmin_passwd db_host = False db_port = False db_user = odoo13 db_password = False addons_path = /opt/odoo13/odoo/addons, /opt/odoo13/odoo-custom-addons
Jangan lupa untuk mengubah superadmin_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 odoo13.service
.
Buka teks editor Anda dan paste konfigurasi berikut:
sudo nano /etc/systemd/system/odoo13.service
Copy dan paste konfigurasi berikut :
[Unit] Description=Odoo13 Requires=postgresql.service After=network.target postgresql.service [Service] Type=simple SyslogIdentifier=odoo13 PermissionsStartOnly=true User=odoo13 Group=odoo13 ExecStart=/opt/odoo13/venv/bin/python3 /opt/odoo13/odoo/odoo-bin -c /etc/odoo13.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
Jalankan Odoo service dan aktifkan :
sudo systemctl enable --now odoo13
Periksa status layanan dengan perintah berikut:
sudo systemctl status odoo13
● odoo13.service - Odoo13 Loaded: loaded (/etc/systemd/system/odoo13.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2019-12-11 20:04:52 UTC; 5s ago Main PID: 28539 (python3) Tasks: 4 (limit: 11524) Memory: 94.6M CGroup: /system.slice/odoo13.service └─28539 /opt/odoo13/venv/bin/python3 /opt/odoo13/odoo/odoo-bin -c /etc/odoo13.conf
Untuk melihat pesan log yang dicatat oleh Odoo service, gunakan perintah berikut:
sudo journalctl -u odoo13
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:
Jika Anda tidak dapat mengakses halaman, maka kemungkinan firewall Anda memblokir port 8069
.
Gunakan perintah berikut untuk membuka port yang diperlukan:
sudo firewall-cmd --permanent --zone=public --add-port=8069/tcp sudo firewall-cmd --reload
Konfigurasikan Nginx sebagai SSL Termination Proxy
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.
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 CentOS Anda
- SSL certificate tersedia untuk domain. Jika belum memiliki sertifikat SSL, Anda bisa install SSL certificate gratis dengan Let’s Encrypt .
Buka text editor dan buat konfigurasi berikut :
sudo nano /etc/nginx/conf.d/example.com
Dalam contoh ini kita akan mengkonfigurasi SSL Termination, pengalihan HTTP ke HTTPS, pengalihan WWW ke non-WWW, menyimpan file statis dan mengaktifkan kompresi GZip.
# 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; include snippets/letsencrypt.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/odoo13.conf
proxy_mode = True
Restart layanan Odoo agar perubahan diterapkan:
sudo systemctl restart odoo13
ada 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/odoo13.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 odoo13
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:
sudo nano /etc/odoo13.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 odoo13
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 13 di CentOS 8 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.