Rocky, Alma, CentOS, RHEL 9|8 Üzerine Odoo EPR 17 Kurulumu


Bu makale yazılırken, Odoo ERP 17, iş süreçlerinizin düzene girmesine yardımcı olmak için oluşturulmuş harika açık kaynaklı Kurumsal Kaynak Planlama (ERP) yazılımının en güncel sürümüdür. Odoo ERP, İK, CRM, Envanter yönetimi, Finans, Üretim, Satış'tan E-ticarete kadar tüm iş sorunlarınızı çözmek için entegre uygulamalara sahip bir platform sunar. Odoo ERP'de tüm bu entegrasyonlar modüler bir yaklaşım üzerinden dağıtılır; bu sayede birkaç modülle başlayabilir ve ihtiyaç duydukça daha fazlasını entegre edebilirsiniz. Bu durum Odoo'yu son derece esnek ve ölçeklenebilir bir çözüm haline getirir.

Odoo ERP 17'yi Rocky Linux, AlmaLinux, CentOS veya RHEL 9/8 üzerine kurmak için birkaç adımı takip etmeniz gerekir:

  • Odoo 17'yi çalıştırmak için gerekli bağımlılıkların kurulumu
  • Python sanal ortamının oluşturulması
  • Rocky/AlmaLinux/RHEL 9|8 Üzerine Odoo 17 Kurulumu
  • Odoo ve web sunucusunun yapılandırması
  • Odoo'ya erişim ve kullanımı

Odoo ERP 17 özellikleri için Odoo 17 Sürüm Notlarına bakın

Önkoşullar

Devam edebilmek için aşağıdaki gereksinimleri karşılamanız gerekecek.

Sistem Gereksinimleri:
  1. İşletim Sistemi: Rocky, Alma, CentOS Stream veya RHEL 8/9 yüklü
  2. CPU: Minimum çift çekirdekli CPU (Eğer dört çekirdekli varsa daha iyi).
  3. RAM: Minimum 2GB bellek (4GB veya daha fazlasını alırsanız daha iyi).
  4. Disk: Odoo verilerini depolamak için en az 20GB boş disk alanı.
Yazılım Gereksinimleri:
  1. Python: Python 3.10 veya üzeri.
  2. PostgreSQL: PostgreSQL 12 veya üzeri.
  3. Node.js ve npm: Varlık yönetimi için Node.js 12.x veya daha yüksek sürüm ve npm.
  4. Wkhtmltopdf: PDF raporlarını yazdırmak için wkhtmltopdf'in belirli bir sürümü (0.12.5 veya 0.12.6) gereklidir.
  5. Nginx veya Apache: Reverse proxy için (genellikle Nginx tercih edilir).

Odoo ERP kurulumuna başlayalım.

Adım 1 – Derleme bağımlılıklarını yükleyin

Herhangi bir kurulumdan önce sisteminizi güncelleyin:

sudo dnf -y update

Kernel güncellemeleriniz varsa, devam etmeden önce sistemi yeniden başlatmayı düşünün:

sudo reboot

Sonraki adım olarak sisteminize geliştirme araçlarını yükleyin.

sudo dnf groupinstall -y "Development Tools"

Odoo'yu kaynaktan derlerken gerekebilecek ek kütüphaneleri yükleyin:

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

Adım 2 – Python 3.11 ve Node.js'i Yükleyin

Python 3.10+ yüklememiz gerekiyor. Bu makalede Python 3.11 kullanacağız.

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

Sürümü kontrol ederek başarıyla yüklendiğini doğrulayın.

$ python3.11 --version
Python 3.11.9

Hadi Node.js'i de yükleyelim. Belirli bir sürüm yok, Node.js v18 kullanacağız.

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

Node.js sürüm numarasını kontrol ederek doğrulayın.

$ node --version
v18.20.2

rtlcss node modülünü npm kullanarak yükleyin:

sudo npm install -g rtlcss

Ayrıca Less ve Less Plugin Clean CSS'i yükleyin:

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

Adım 3 – PostgreSQL veritabanını yükleyin ve yapılandırın

PostgreSQL 12+ gereklidir. OS APPStream depolarında bulunan PostgreSQL 16'yı yükleyebiliriz. Mevcut PostgreSQL modülünü sıfırlayın.

sudo dnf module -y disable postgresql

PostgreSQL 16 modülünü etkinleştir.

sudo dnf install -y @postgresql:16

Ayrıca postgresql-devel paketini yükleyin.

sudo dnf install -y  postgresql-devel

Veritabanı sunucusunu başlat.

sudo postgresql-setup initdb

Veritabanı servisini başlatın ve etkinleştirin.

sudo systemctl enable --now postgresql

Son olarak odoo veritabanı kullanıcısını oluşturun. İstendiğinde kullanıcı için bir şifre girin.

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

Şifreli bir kullanıcı oluşturmak için şunu çalıştırın:

sudo -u postgres createuser odoo -U postgres -dP

Uzak PostgreSQL veritabanı sunucusu için Odoo'nun bağlanabilmesi amacıyla veritabanı sunucunuzda uzaktan bağlantıları etkinleştireceksiniz.

Adım 4 – wkhtmltopdf'i yükleyin

Wkhtmltopdf, Odoo tarafından HTML'yi PDF ve diğer görüntü formatlarına dönüştürmek için kullanılan açık kaynaklı bir CLI aracıdır ve güçlü Webkit render motorunu kullanır. Bu, faturalar, raporlar ve diğer yazdırılabilir belgeler gibi dökümanların oluşturulması için gereklidir.

wkhtmltopdf RPM paketini indirip yükleyin.

  • RHEL 9 tabanlı sistemler
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
  • RHEL 8 tabanlı sistemler
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

Kurulumu doğrula:

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

Adım 5 – Odoo Python Ortamını Kurma

Odoo servislerini çalıştıracak odoo adlı bir kullanıcı oluşturun.

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

virtualenv'i yükleyin:

sudo pip3.11 install virtualenv

Oluşturulan odoo kullanıcı hesabına geç.

sudo su - odoo

Odoo’nun Github deposunu yerel olarak klonlayın.

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

Odoo ERP için Python sanal ortamını oluşturmak amacıyla virtualenv komutunu kullanın.

virtualenv odoo-venv

Oluşturulan sanal ortamı etkinleştirin.

source odoo-venv/bin/activate

Etkinleştirdikten sonra pip'i güncelleyin.

pip3.11 install --upgrade pip

Ortamda wheel Python paketini yükleyin

pip3.11 install wheel

Odoo 17 Python gereksinimlerini yükleyin

pip3.11 install -r odoo/requirements.txt

Sanal ortamda yüklü tüm Python paketlerini listelemek için aşağıdaki komutu çalıştırın:

pip3.11 list

Tüm üçüncü taraf eklentileri depolayacak bir dizin oluşturun.

mkdir odoo/custom-addons

Sanal ortamdan çık.

exit

Adım 6 – Odoo ERP'yi Yapılandır

Örnek Odoo yapılandırma dosyasını sisteminizdeki /etc dizinine kopyalayın.

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

odoo.conf dosyası, Odoo'nun doğru şekilde çalışması için gerekli ana yapılandırmaları içerir. Düzenlemek için dosyayı açın.

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

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

Ayarları aşağıdaki gibi yapın.

[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

Uzak PostgreSQL sunucusu için şunu ayarlayın:

  • db_host: PostgreSQL veritabanı sunucusu IP adresi
  • db_password: Uzak veritabanında oluşturulan kullanıcı için şifre
  • db_user: Uzak veritabanı kullanıcısı oluşturuldu.

Dosyaya uygun izinleri ver:

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

Odoo systemd hizmeti oluştur.

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

Logs dizini oluştur.

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

odoo servisini başlatın ve etkinleştirin.

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

Servisin doğru çalışıp çalışmadığını kontrol edin.

$ 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.

Adım 7 – firewalld yapılandırması

Servis 8069 portunda dinliyor.

$ 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 <->

Eğer firewalld kullanıyorsanız, 8069 numaralı portu açın

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

Odoo web konsoluna http://serverip:8069 adresinden erişebilir ve kurulumu tamamlayabilirsiniz.

Master şifre için odoo.conf içinde belirlenen admin_passwd değerini girin. Örnek oluşturmak için veritabanı adını belirtin, örneğin odoo17. Daha sonra e-posta adresi ve şifre sağlayarak ilk yönetici kullanıcıyı oluşturun. İsteğe bağlı olarak telefon numarası, dil ve ülkeyi de belirleyebilirsiniz.

Kurulumu tamamladıktan sonra, oluşturduğunuz yönetici kullanıcı ve şifresi ile giriş yapın.

Modülleri etkinleştirmek vb. işlemler için Odoo kontrol paneline ulaşacaksınız.

Adım 8 – Nginx Proxy'yi Yapılandırın

İstekleri Odoo ERP'ye yönlendirmek için Nginx kullanabiliriz. Nginx paketini yükleyin.

sudo dnf -y install nginx

Hizmetin sistem başlatıldığında otomatik olarak başlamasını etkinleştir.

sudo systemctl enable nginx

Odoo servisi için Nginx yapılandırma dosyası oluşturun.

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

Aşağıdaki içeriği yapıştırın ve düzenleyin. odoo.example.com adresini kendi gerçek alan adınızla değiştirmeniz gerekmektedir.

# 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;
}

Nginx yapılandırmalarını doğrulayın.

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

Her şey yolunda görünüyorsa servisi yeniden başlatın.

sudo systemctl restart nginx

Odoo web kontrol paneline http://yourdomain.com adresinden erişin

Adım 9 – Let’s Encrypt SSL Kullanımı

Kamuya açık bir alan adındaki sunucular için ücretsiz Let’s Encrypt SSL kullanabilirsiniz.

certbot ve Nginx eklentisini yükleyin.

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

Let’s Encrypt SSL için Talep.

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

E-posta adresi vermek istemiyorsanız kullanınL

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

Örnek çıktı:

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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

SSL'i dahil etmek için /etc/nginx/conf.d/odoo.conf dosyasını otomatik olarak yapılandıracaktır.

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

Sonuç

Odoo'nun Rocky, AlmaLinux, CentOS ve RHEL 9 Linux sistemlerine kurulumu ile ilgili eğitimimizi tamamladık. Gerekli bağımlılıklarla sunucuyu hazırlayarak başladık, ardından Odoo ERP'yi kurup yapılandırmaya geçtik. Odoo'nun geniş modül yapısı, esnek ve güçlü özelleştirme imkanları sayesinde, süreçleri otomatikleştirmek için oldukça uygun bir iş çözümü sunmaktadır.