Pasang Odoo EPR 17 pada Rocky, Alma, CentOS, RHEL 9|8


Pada masa artikel ini ditulis, Odoo ERP 17 adalah versi terkini perisian Enterprise Resource Planning (ERP) sumber terbuka yang menakjubkan, yang dicipta untuk membantu proses perniagaan anda kekal teratur. Odoo ERP memberikan anda platform dengan aplikasi bersepadu untuk menyelesaikan semua masalah perniagaan anda, daripada HR, CRM, pengurusan Inventori, Kewangan, Pembuatan, Jualan hingga E-dagang. Dalam Odoo ERP, semua integrasi ini diedarkan melalui pendekatan modular yang membolehkan anda memulakan dengan beberapa modul dan menambah lebih banyak mengikut keperluan. Ini menjadikan Odoo penyelesaian yang sangat fleksibel dan boleh skala.

Untuk memasang Odoo ERP 17 pada Rocky Linux, AlmaLinux, CentOS, atau RHEL 9/8, anda perlu mengikuti beberapa langkah:

  • Pemasangan kebergantungan yang diperlukan untuk menjalankan Odoo 17
  • Penciptaan persekitaran maya Python
  • Pemasangan Odoo 17 pada Rocky/AlmaLinux/RHEL 9|8
  • Konfigurasi Odoo dan pelayan web
  • Mengakses dan menggunakan Odoo

Untuk ciri-ciri Odoo ERP 17, lihat Nota Pelepasan Odoo 17

Prasyarat

Sebelum anda boleh meneruskan, anda perlu memenuhi keperluan berikut.

Keperluan Sistem:
  1. Sistem Operasi: Dipasang Rocky, Alma, CentOS Stream, atau RHEL 8/9
  2. CPU: CPU minimum dwi-teras (Jika anda mempunyai Quad-teras, lebih baik).
  3. RAM: Sekurang-kurangnya 2GB memori (Jika anda mendapat 4GB atau lebih, lebih baik).
  4. Disk: Minimum 20GB ruang cakera percuma untuk menyimpan data Odoo.
Keperluan Perisian:
  1. Python: Python 3.10 atau lebih tinggi.
  2. PostgreSQL: PostgreSQL 12 atau ke atas.
  3. Node.js dan npm: Node.js 12.x atau lebih tinggi dan npm untuk pengurusan aset.
  4. Wkhtmltopdf: Versi khusus wkhtmltopdf (0.12.5 atau 0.12.6) diperlukan untuk mencetak laporan PDF.
  5. Nginx atau Apache: Untuk proksi terbalik (Nginx biasanya lebih disukai).

Mari kita mulakan pemasangan Odoo ERP.

Langkah 1 – Pasang kebergantungan binaan

Kemas kini sistem anda sebelum sebarang pemasangan:

sudo dnf -y update

Jika anda mempunyai kemas kini kernel, pertimbangkan untuk memulakan semula sistem sebelum anda meneruskan:

sudo reboot

Seterusnya pasang alat pembangunan dalam sistem anda.

sudo dnf groupinstall -y "Development Tools"

Pasang perpustakaan tambahan yang mungkin diperlukan semasa membina Odoo daripada sumber:

sudo dnf install -y vim git gcc bzip2-devel redhat-rpm-config libxslt-devel  openldap-devel libjpeg-devel freetype-devel

Langkah 2 – Pasang Python 3.11 & Node.js

Kita perlu memasang Python 3.10 ke atas. Dalam artikel ini, kita akan menggunakan Python 3.11.

sudo dnf install python3.11 python3.11-devel python3.11-pip

Sahkan ia dipasang dengan berjaya dengan memeriksa versinya.

$ python3.11 --version
Python 3.11.9

Mari kita pasang juga Node.js. Tiada versi tertentu, kita akan menggunakan Nodejs v18.

 sudo dnf module reset nodejs -y
sudo dnf module install nodejs:18 -y

Sahkan dengan memeriksa nombor versi Node.js.

$ node --version
v18.20.2

Pasang modul node rtlcss menggunakan npm:

sudo npm install -g rtlcss

Juga pasang Less dan Plugin Less Clean CSS:

sudo npm install -g less less-plugin-clean-css

Langkah 3 – Pasang dan Konfigurasikan pangkalan data PostgreSQL

PostgreSQL 12+ diperlukan. Kita boleh memasang PostgreSQL 16 yang tersedia dalam repositori OS APPStream. Tetapkan semula modul PostgreSQL semasa.

sudo dnf module -y disable postgresql

Dayakan modul PostgreSQL 16.

sudo dnf install -y @postgresql:16

Juga pasang pakej postgresql-devel.

sudo dnf install -y  postgresql-devel

Mulakan pelayan pangkalan data.

sudo postgresql-setup initdb

Mulakan dan dayakan perkhidmatan pangkalan data.

sudo systemctl enable --now postgresql

Akhirnya buat pengguna pangkalan data odoo. Berikan kata laluan untuk pengguna apabila anda diminta.

sudo su - postgres -c "createuser -s odoo"

Untuk membuat pengguna dengan kata laluan, jalankan:

sudo -u postgres createuser odoo -U postgres -dP

Untuk pelayan pangkalan data PostgreSQL jauh, anda perlu membolehkan sambungan jauh pada pelayan DB anda supaya Odoo dapat menyambung kepadanya.

Langkah 4 – Pasang wkhtmltopdf

Wkhtmltopdf adalah alat CLI sumber terbuka yang digunakan oleh Odoo untuk menukar HTML menjadi PDF dan format imej lain melalui enjin rendering Webkit yang berkuasa. Ini diperlukan untuk penjanaan dokumen seperti invois, laporan, dan dokumen boleh cetak lain.

Muat turun dan pasang pakej RPM wkhtmltopdf.

  • Sistem berasaskan RHEL 9
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox-0.12.6.1-2.almalinux9.x86_64.rpm
sudo dnf install -y ./wkhtmltox-0.12.6.1-2.almalinux9.x86_64.rpm
  • Sistem berasaskan RHEL 8
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox-0.12.6.1-2.almalinux8.x86_64.rpm
sudo dnf install -y ./wkhtmltox-0.12.6.1-2.almalinux8.x86_64.rpm

Sahkan pemasangan:

$ wkhtmltopdf --version
wkhtmltopdf 0.12.6.1 (with patched qt)

Langkah 5 – Sediakan Persekitaran Python Odoo

Cipta pengguna bernama odoo yang akan menjalankan perkhidmatan Odoo.

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

Pasang virtualenv:

sudo pip3.11 install virtualenv

Beralih ke akaun pengguna odoo yang telah dibuat.

sudo su - odoo

Klon repositori Github Odoo secara tempatan.

git clone --depth 1 --branch 17.0 --single-branch https://github.com/odoo/odoo.git

Gunakan arahan virtualenv untuk mencipta persekitaran maya Python bagi Odoo ERP.

virtualenv odoo-venv

Aktifkan persekitaran maya yang telah dibuat.

source odoo-venv/bin/activate

Naik taraf pip selepas mengaktifkannya.

pip3.11 install --upgrade pip

Pasang pakej python wheel dalam persekitaran

pip3.11 install wheel

Pasang keperluan python Odoo 17

pip3.11 install -r odoo/requirements.txt

Untuk menyenaraikan semua pakej Python yang dipasang dalam persekitaran maya, jalankan arahan berikut:

pip3.11 list

Buat direktori yang akan menyimpan semua addon pihak ketiga.

mkdir odoo/custom-addons

Keluar dari persekitaran maya.

exit

Langkah 6 – Konfigurasi Odoo ERP

Salin fail konfigurasi contoh Odoo ke direktori /etc pada sistem anda.

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

Fail odoo.conf mengandungi konfigurasi utama yang diperlukan supaya Odoo berfungsi dengan betul. Buka fail itu untuk suntingan.

# Open with vim
sudo vim /etc/odoo.conf

# Open with nano
sudo nano /etc/odoo.conf

Laraskan tetapan supaya kelihatan seperti di bawah.

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

Untuk pelayan PostgreSQL jauh, tetapkan:

  • db_host: Alamat IP pelayan pangkalan data PostgreSQL
  • db_password: Kata laluan untuk pengguna yang dibuat di pangkalan data jauh
  • db_user: Pengguna pangkalan data jauh telah dicipta.

Berikan kebenaran yang sesuai kepada fail:

sudo chown odoo:odoo /etc/odoo.conf
sudo chmod 640 /etc/odoo.conf

Buat perkhidmatan systemd Odoo.

sudo tee /etc/systemd/system/odoo.service<<EOF
[Unit]
Description=Odoo ERP System
Documentation=http://www.odoo.com
Requires=postgresql.service
After=network.target postgresql.service

[Service]
Type=simple
SyslogIdentifier=odoo
PermissionsStartOnly=true
User=odoo
Group=odoo
ExecStart=/opt/odoo/odoo-venv/bin/python3.11 /opt/odoo/odoo/odoo-bin \
  --config=/etc/odoo.conf \
  --addons-path=/opt/odoo/odoo/addons/ \
  --logfile /var/log/odoo/odoo-server.log
StandardOutput=journal+console
KillMode=mixed

[Install]
WantedBy=multi-user.target
EOF

Buat direktori log.

sudo mkdir /var/log/odoo/
sudo chown -R odoo:odoo /var/log/odoo/

Mulakan dan dayakan perkhidmatan odoo.

sudo systemctl daemon-reload
sudo systemctl enable --now odoo.service

Periksa status perkhidmatan sama ada berjalan dengan betul.

$ systemctl status odoo
● odoo.service - Odoo ERP System
   Loaded: loaded (/etc/systemd/system/odoo.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2024-07-18 11:34:34 UTC; 21s ago
     Docs: http://www.odoo.com
 Main PID: 70809 (python3.11)
    Tasks: 4 (limit: 48750)
   Memory: 88.2M
   CGroup: /system.slice/odoo.service
           └─70809 /opt/odoo/odoo-venv/bin/python3.11 /opt/odoo/odoo/odoo-bin --config=/etc/odoo.conf --addons-path=/opt/odoo/odoo/addons/ --logfile /var/log/odoo/odoo-server.log

Jul 18 11:34:34 rocky8.cloudspinx.com systemd[1]: Started Odoo ERP System.

Langkah 7 – Konfigurasi firewalld

Perkhidmatan sedang mendengar pada port 8069.

$ ss -tunelp | grep 8069
tcp   LISTEN 0      128          0.0.0.0:8069      0.0.0.0:*    users:(("python3.11",pid=70809,fd=4)) uid:989 ino:115353 sk:5 <->

Jika anda mempunyai firewalld, benarkan port 8069

sudo firewall-cmd --add-port=8069/tcp --permanent
sudo firewall-cmd --reload

Anda boleh mengakses konsol web Odoo di http://serverip:8069 dan menyelesaikan pemasangannya.

Masukkan nilai admin_passwd yang ditetapkan dalam odoo.conf untuk kata laluan Master. Nyatakan nama pangkalan data untuk membuat contoh iaitu odoo17. Kemudian buat pengguna admin pertama dengan menyediakan alamat emel dan kata laluan. Pilihan lain adalah menetapkan nombor telefon, bahasa dan negara.

Selepas menyiapkan tetapan, log masuk dengan pengguna admin yang telah dibuat dan kata laluan mereka.

Anda akan sampai ke papan pemuka Odoo untuk mengaktifkan modul dan sebagainya.

Langkah 8 – Konfigurasikan Nginx Proxy

Kita boleh menggunakan Nginx untuk memproksi permintaan ke Odoo ERP. Pasang pakej nginx.

sudo dnf -y install nginx

Dayakan perkhidmatan untuk bermula secara automatik semasa sistem dihidupkan.

sudo systemctl enable nginx

Buat fail konfigurasi Nginx untuk perkhidmatan Odoo.

 sudo vim /etc/nginx/conf.d/odoo.conf

Salin dan sunting kandungan berikut. Anda mesti menggantikan odoo.example.com dengan nama domain sebenar anda.

# Odoo Upstreams
upstream odooserver {
 server 127.0.0.1:8069;
}

server {
    listen 80;
    server_name odoo.example.com;
    access_log /var/log/nginx/odoo_access.log;
    error_log /var/log/nginx/odoo_error.log;

    # Proxy settings
    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;

    # Request for root domain
    location / {
       proxy_redirect off;
       proxy_pass http://odooserver;
    }

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

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

Sahkan konfigurasi nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Jika semuanya kelihatan baik, mulakan semula perkhidmatan.

sudo systemctl restart nginx

Akses papan pemuka web Odoo di http://yourdomain.com

Langkah 9 – Menggunakan SSL Let’s Encrypt

Untuk pelayan di domain awam, anda boleh menggunakan SSL Let’s Encrypt percuma.

Pasang certbot dan plugin Nginxnya.

sudo dnf install epel-release
sudo dnf install certbot python3-certbot-nginx -y

Permintaan untuk SSL Let’s Encrypt.

DOMAIN=odoo.example.com #replace with your actual domain
sudo certbot --nginx -d $DOMAIN --agree-tos

Jika anda tidak mahu memberikan alamat emel, gunakanL

sudo certbot --nginx -d $DOMAIN --agree-tos --register-unsafely-without-email

Contoh hasil:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Account registered.
Requesting a certificate for odoo.example.com

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/odoo.example.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/odoo.example.com/privkey.pem
This certificate expires on 2024-10-16.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for odoo.cloudlabske.com to /etc/nginx/conf.d/odoo.conf
Congratulations! You have successfully enabled HTTPS on https://odoo.example.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Ia akan secara automatik mengkonfigurasi /etc/nginx/conf.d/odoo.conf untuk menyertakan SSL.

cat /etc/nginx/conf.d/odoo.conf

Kesimpulan

Kami telah menamatkan tutorial kami mengenai pemasangan Odoo pada sistem Linux Rocky, AlmaLinux, CentOS dan RHEL 9. Kami bermula dengan menyediakan pelayan dengan kebergantungan yang diperlukan dan kemudian kami meneruskan untuk memasang dan mengkonfigurasi Odoo ERP. Dengan modul Odoo yang luas, penyesuaian yang fleksibel dan berkuasa, ia menjadikannya penyelesaian perniagaan yang sesuai untuk mengautomasikan proses.