Odoo adalah perangkat lunak bisnis all-in-one paling populer di dunia. Ini menawarkan berbagai aplikasi bisnis, termasuk CRM, situs web, e-Commerce, penagihan, akuntansi, manufaktur, gudang, manajemen proyek, inventaris, dan banyak lagi, semuanya terintegrasi dengan mulus.
Tutorial ini menjelaskan cara menginstal Odoo13 dari sumber di dalam lingkungan virtual Python pada mesin CentOS 8. Kami akan mengunduh sumber Odoo dari Github dan mengonfigurasi Nginx sebagai proxy terbalik.
Prasyarat #
Anda harus masuk sebagai root atau pengguna dengan hak sudo untuk menyelesaikan instalasi.
Menginstal Dependensi #
Instal Python 3, Git, pip, dan semua pustaka dan alat yang diperlukan untuk membangun Odoo dari sumber:
sudo dnf install python3 python3-devel git gcc redhat-rpm-config libxslt-devel bzip2-devel openldap-devel libjpeg-devel freetype-devel
Membuat Pengguna Sistem #
Buat pengguna dan grup sistem baru dengan direktori home /opt/odoo
yang akan menjalankan layanan Odoo:
sudo useradd -m -U -r -d /opt/odoo13 -s /bin/bash odoo13
Anda dapat memberi nama pengguna apa pun yang Anda suka, pastikan Anda membuat pengguna PostgreSQL dengan nama yang sama.
Menginstal dan Mengonfigurasi PostgreSQL #
Kami akan menginstal PostgreSQL10 dari repositori CentOS 8 standar:
sudo dnf install @postgresql:10
Setelah instalasi selesai, buat cluster database PostgreSQL baru:
sudo postgresql-setup initdb
Aktifkan dan mulai layanan PostgreSQL:
sudo systemctl enable --now postgresql
Buat pengguna PostgreSQL dengan nama yang sama dengan pengguna sistem yang dibuat sebelumnya, dalam kasus kami yaitu “odoo13”:
sudo su - postgres -c "createuser -s odoo13"
Menginstal Wkhtmltopdf #
wkhtmltox
package menyediakan seperangkat alat baris perintah sumber terbuka yang dapat membuat HTML menjadi PDF dan berbagai format gambar. Untuk mencetak laporan PDF, Anda memerlukan wkhtmltopdf
alat. Versi yang direkomendasikan untuk Odoo adalah 0.12.5
, yang tidak tersedia di repositori resmi CentOS 8.
Instal rpm
paketdari 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
Menginstal dan Mengonfigurasi Odoo 13 #
Sebelum memulai proses instalasi, ubah ke user“odoo13”:
sudo su - odoo13
Mulailah dengan mengkloning kode sumber Odoo 13 dari repositori Odoo GitHub:
git clone https://www.github.com/odoo/odoo --depth 1 --branch 13.0 /opt/odoo13/odoo
Arahkan ke /opt/odoo13
direktori dan buat lingkungan virtual Python baru untuk instalasi Odoo:
cd /opt/odoo13
python3 -m venv venv
Aktifkan lingkungan menggunakan source
perintah:
source venv/bin/activate
Instal modul Python yang diperlukan:
pip3 install -r odoo/requirements.txt
Jika Anda menemukan kesalahan kompilasi selama penginstalan, pastikan Anda menginstal semua dependensi yang diperlukan yang tercantum di Installing Dependencies
bagian. Setelah penginstalan selesai, nonaktifkan lingkungan:
deactivate
Buat direktori baru untuk add-on khusus:
mkdir /opt/odoo13/odoo-custom-addons
Beralih kembali ke pengguna sudo Anda:
exit
Selanjutnya, buka editor teks Anda dan buat file konfigurasi berikut:
sudo nano /etc/odoo13.conf
/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
Simpan dan tutup file.
Jangan lupa gantisuperadmin_passwd
untuk sesuatu yang lebih aman. Membuat File Unit Systemd #
Buka editor teks Anda dan buat file bernama odoo13.service
di dalam /etc/systemd/system/
direktori:
sudo nano /etc/systemd/system/odoo13.service
Tempel konten berikut:
/etc/systemd/system/odoo13.service[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
Simpan file dan tutup editor.
Beri tahu Systemd bahwa ada file unit baru:
sudo systemctl daemon-reload
Mulai dan aktifkan layanan Odoo dengan menjalankan:
sudo systemctl enable --now odoo13
Anda dapat memeriksa 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 yang dicatat oleh layanan Odoo, gunakan perintah berikut:
sudo journalctl -u odoo13
Uji Instalasi #
Buka browser Anda dan ketik:http://<your_domain_or_IP_address>:8069
Dengan asumsi instalasi berhasil, layar yang mirip dengan berikut akan muncul:
Jika Anda tidak dapat mengakses halaman tersebut, 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
Mengonfigurasi Nginx sebagai Proksi Penghentian SSL #
Server web default Odoo melayani lalu lintas melalui HTTP. Untuk membuat penerapan Odoo lebih aman, kami akan mengonfigurasi Nginx sebagai proxy terminasi SSL yang akan melayani lalu lintas melalui HTTPS.
Proxy terminasi SSL adalah server proxy yang menangani enkripsi/dekripsi SSL. Ini berarti bahwa proxy terminasi (Nginx) akan memproses dan mendekripsi koneksi TLS masuk (HTTPS), dan meneruskan permintaan tidak terenkripsi ke layanan internal (Odoo). Lalu lintas antara Nginx dan Odoo tidak akan dienkripsi (HTTP).
Menggunakan proxy terbalik memberi Anda banyak manfaat seperti Load Balancing, SSL Termination, Caching, Compression, Melayani Konten Statis, dan banyak lagi.
Pastikan Anda telah memenuhi prasyarat berikut sebelum melanjutkan ke bagian ini:
- Nama domain yang menunjuk ke IP server publik Anda. Kami akan menggunakan
example.com
. - Nginx terpasang.
- Sertifikat SSL untuk domain Anda. Anda dapat menginstal sertifikat SSL Let's Encrypt gratis.
Buka editor teks Anda dan buat/edit blok server domain:
sudo nano /etc/nginx/conf.d/example.com
Konfigurasi berikut menyiapkan Penghentian SSL, pengalihan HTTP ke HTTPS, pengalihan WWW ke non-WWW, cache file statis dan aktifkan GZipcompression.
/etc/nginx/conf.d/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;
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 mengatur jalur yang benar ke file sertifikat SSL. Cuplikan yang digunakan dalam konfigurasi ini dibuat dalam panduan ini. Setelah selesai, mulai ulang layanan Nginx:
sudo systemctl restart nginx
Selanjutnya, kita perlu memberi tahu Odoo untuk menggunakan proxy. Untuk melakukannya, buka file konfigurasi dan tambahkan baris berikut:
/etc/odoo13.confproxy_mode = True
Mulai ulang layanan Odoo agar perubahan diterapkan:
sudo systemctl restart odoo13
Pada titik ini, proxy terbalik dikonfigurasi, dan Anda dapat mengakses instans Odoo Anda di:https://example.com
Mengubah Antarmuka Binding #
Langkah ini opsional, tetapi merupakan praktik keamanan yang baik.
Secara default, server Odoo mendengarkan port 8069
pada semua antarmuka. Untuk menonaktifkan akses langsung ke instance Odoo, Anda dapat memblokir port 8069
untuk semua antarmuka publik atau memaksa Odoo untuk mendengarkan hanya di antarmuka lokal.
Kami akan mengonfigurasi Odoo untuk mendengarkan hanya di 127.0.0.1
. Buka konfigurasi tambahkan dua baris berikut di akhir file:
xmlrpc_interface = 127.0.0.1
netrpc_interface = 127.0.0.1
Simpan file konfigurasi dan mulai ulang server Odoo agar perubahan diterapkan:
sudo systemctl restart odoo13
Mengaktifkan Multiprosesor #
Secara default, Odoo bekerja dalam mode multithreading. Untuk penerapan produksi, disarankan untuk mengubah ke server multiprosesor karena meningkatkan stabilitas, dan memanfaatkan sumber daya sistem dengan lebih baik.
Untuk mengaktifkan multiproses, Anda perlu mengedit konfigurasi Odoo dan menyetel jumlah proses pekerja yang bukan nol. Jumlah pekerja dihitung berdasarkan jumlah inti CPU dalam sistem dan memori RAM yang tersedia.
Menurut dokumentasi resmi Odoo untuk menghitung jumlah pekerja dan ukuran memori RAM yang dibutuhkan, Anda dapat menggunakan rumus dan asumsi berikut:
Penghitungan jumlah pekerja
- Jumlah pekerja maksimum teoritis =(system_cpus * 2) + 1
- 1 pekerja dapat melayani ~=6 pengguna bersamaan
- Pekerja Cron juga membutuhkan CPU
Penghitungan ukuran memori RAM
- Kami akan mempertimbangkan bahwa 20% dari semua permintaan adalah permintaan yang berat, dan 80% adalah permintaan yang lebih ringan. Permintaan berat menggunakan sekitar 1 GB RAM sedangkan yang lebih ringan menggunakan sekitar 150 MB RAM
- RAM yang dibutuhkan =
number_of_workers * ( (light_worker_ratio * light_worker_ram_estimation) + (heavy_worker_ratio * heavy_worker_ram_estimation) )
Jika Anda tidak tahu berapa banyak CPU yang Anda miliki di sistem Anda, gunakan grep
berikut ini perintah:
grep -c ^processor /proc/cpuinfo
Katakanlah Anda memiliki sistem dengan 4 inti CPU, memori RAM 8 GB, dan 30 pengguna Odoo secara bersamaan.
30 users / 6 = **5**
(5 adalah jumlah teoritis pekerja yang dibutuhkan )(4 * 2) + 1 = **9**
( 9 adalah jumlah maksimum teoritis pekerja)
Berdasarkan perhitungan di atas, Anda dapat menggunakan 5 pekerja + 1 pekerja untuk cron pekerja yaitu total 6 pekerja.
Hitung konsumsi memori RAM berdasarkan jumlah pekerja:
RAM = 6 * ((0.8*150) + (0.2*1024)) ~= 2 GB of RAM
Perhitungan menunjukkan bahwa instalasi Odoo akan membutuhkan sekitar 2GB RAM.
Untuk beralih ke mode multiproses, buka file konfigurasi dan tambahkan nilai yang dihitung:
/etc/odoo13.conflimit_memory_hard = 2684354560
limit_memory_soft = 2147483648
limit_request = 8192
limit_time_cpu = 600
limit_time_real = 1200
max_cron_threads = 1
workers = 5
Mulai ulang layanan Odoo agar perubahan diterapkan:
sudo systemctl restart odoo13
Sisa sumber daya sistem akan digunakan oleh layanan lain yang berjalan di sistem ini. Dalam panduan ini, kami menginstal Odoo bersama dengan PostgreSQL dan Nginx di server yang sama. Tergantung pada pengaturan Anda, Anda mungkin juga memiliki layanan lain yang berjalan di server Anda.