# Odoo 19 ni Linuxʼga oʻrnatish: toʻliq qoʻllanma

- Canonical: https://blog.bahromnajmiddinov.uz/blog/odoo-19-linux-ornatish
- Author: Bahrom Najmiddinov
- Published: 2026-10-12
- Odoo versions: 19.0
- Language: uz

> **TL;DR** Linux — Odoo uchun asosiy muhit. Odoo 19 ni uch usulda oʻrnatish mumkin: rasmiy repozitoriy, tayyor paket yoki sourcedan. Maqola PostgreSQL tayyorlash, har bir usul va worker hisobini bosqichma-bosqich koʻrsatadi.

<!-- Imported from Medium (https://medium.com/@bahromnajmiddinov/odoo-19-ni-linuxga-o-rnatish-to-liq-qo-llanma-1dc3c473402b) on 2026-10-23. Text is BAHA's; summary/description REVIEW. -->
Oldingi maqolada Windowsʼga oʻrnatishni koʻrib chiqdik va u yerda bitta ogohlantirish bor edi: **Windows production uchun mos emas.**

Linux — bu Odoo haqiqatan ishlashi uchun yaratilgan muhit. Barcha jonli serverlar shu yerda turadi.

Bu maqolada uchta usulni koʻrib chiqamiz, keyin esa production uchun eng muhim sozlamalarni. Barcha buyruqlar Odoo 19 uchun va rasmiy hujjatlardan olingan.

## Qaysi usulni tanlash kerak

**1. Repozitoriy orqali (apt / dnf)**  
 Kimga: tez ishga tushirish kerak boʻlganlarga. Faqat Community.  
 Yangilanish: apt upgrade bilan avtomatik yangilanadi.

**2. Tayyor paket (.deb / .rpm)**  
 Kimga: Enterprise kerak boʻlganlarga yoki aniq versiya kerak boʻlsa.  
 Yangilanish: qoʻlda boʻladi.

**3. Manbadan (git)**  
 Kimga: dasturchilarga, custom modul yozadiganlarga.  
 Yangilanish: git pull bilan.

Agar modul yozmoqchi boʻlsangiz — faqat uchinchi usul(tavsiya etiladi). Qolgan ikkitasi tayyor tizimni ishga tushiradi.

## Tayyorgarlik: PostgreSQL

Uchala usul ham PostgreSQL talab qiladi. Shuning uchun undan boshlaymiz.

**Odoo 19 uchun minimal versiya — PostgreSQL 13.** Bu Odoo 19 da oʻzgargan: avval 12 yetarli edi.

**Ubuntu / Debian:**

```bash
sudo apt install postgresql -y
```

**Fedora / CentOS / RHEL:**

Avval sudo buyrugʻi mavjud ekanligiga va toʻgʻri sozlanganiga ishonch hosil qiling, keyin:

```bash
sudo dnf install -y postgresql-server
sudo postgresql-setup --initdb --unit postgresql
sudo systemctl enable postgresql
sudo systemctl start postgresql
```

## 1-usul. Odoo repozitoriysi orqali

Eng tez yoʻl. Odoo S.A. oʻz repozitoriysini taqdim etadi — faqat **Community** versiyasi uchun.

**Ubuntu / Debian:**

```bash
wget -q -O - https://nightly.odoo.com/odoo.key | sudo gpg --dearmor -o /usr/share/keyrings/odoo-archive-keyring.gpg
echo 'deb [signed-by=/usr/share/keyrings/odoo-archive-keyring.gpg] https://nightly.odoo.com/19.0/nightly/deb/ ./' | sudo tee /etc/apt/sources.list.d/odoo.list
sudo apt-get update && sudo apt-get install odoo
```

Keyinchalik yangilash uchun oddiy apt-get upgrade buyrugʻi yetarli.

**Fedora:**

```bash
sudo dnf config-manager --add-repo=https://nightly.odoo.com/19.0/nightly/rpm/odoo.repo
sudo dnf install -y odoo
sudo systemctl enable odoo
sudo systemctl start odoo
```

**Muhim:** Enterprise uchun nightly repozitoriy mavjud emas. Agar Enterprise kerak boʻlsa, 2-usulga oʻting.

## 2-usul. Tayyor paket (.deb yoki .rpm)

Bu usul Community va Enterprise uchun ishlaydi.

Paketni Odoo yuklab olish sahifasidan oling: **odoo.com/page/download**

Enterprise paketini yuklab olish uchun toʻlovchi on-premise mijoz yoki hamkor sifatida tizimga kirgan boʻlishingiz kerak.

## Ubuntu

**Odoo 19 ning****deb paketi hozircha Ubuntu Noble (24.04 LTS) ni qoʻllab-quvvatlaydi.**

Yuklab olgandan keyin **root sifatida** bajaring:

```bash
apt update
apt install <paket_fayli_manzili>
```

Bu buyruq uchta ishni birdan qiladi: Odooʻni xizmat (service) sifatida oʻrnatadi, kerakli PostgreSQL foydalanuvchisini yaratadi va serverni avtomatik ishga tushiradi.

## Fedora

**Odoo 19 ning****rpm paketi Fedora 42 ni qoʻllab-quvvatlaydi.**

```bash
sudo dnf localinstall odoo_19.0.latest.noarch.rpm
sudo systemctl enable odoo
sudo systemctl start odoo
```

Brauzerda oching: [http://localhost:8069](http://localhost:8069)

## 3-usul. Manba(Source)dan oʻrnatish (dasturchilar uchun)

Agar modul yozmoqchi boʻlsangiz yoki kodni oʻzgartirmoqchi boʻlsangiz — bu yagona toʻgʻri yoʻl.

## 1-qadam. Python

Odoo 19 **Python 3.10 yoki undan yuqori** versiyani talab qiladi.

Paket menejeri orqali oʻrnating va tekshiring:

```bash
python3 --version
pip3 --version
```

Ubuntu 24.04 da Python 3.12 oldindan oʻrnatilgan — qoʻshimcha ish shart emas.

## 2-qadam. PostgreSQL foydalanuvchisi

Odoo postgres foydalanuvchisi bilan ulanishni **taqiqlaydi, yani postgres userni ishlata olmaysiz.**Yangi foydalanuvchi yaratish shart:

```bash
sudo -u postgres createuser -d -R -S $USER
createdb $USER
```

Bu yerda bitta qulaylik bor: PostgreSQL foydalanuvchisi Unix login bilan bir xil nomda boʻlgani uchun, bazaga parolsiz ulanish mumkin. Lokal ishlab chiqish uchun bu juda qulay.

## 3-qadam. Tizim kutubxonalari

Baʼzi Python paketlari kompilyatsiya qilinadi, shuning uchun tizim kutubxonalari kerak:

```bash
sudo apt install python3-pip libldap2-dev libpq-dev libsasl2-dev
```

## 4-qadam. Kodni yuklab olish

```bash
git clone --branch 19.0 --single-branch https://github.com/odoo/odoo.git
```

Enterprise ham kerak boʻlsa:

```bash
git clone --branch 19.0 --single-branch https://github.com/odoo/enterprise.git
```

**Bu yerni tushunib olish muhim.** Enterprise repozitoriysi toʻliq Odoo kodini oʻz ichiga olmaydi — u faqat qoʻshimcha modullar toʻplami. Server kodi Communityʼda. Enterpriseʼni ishlatish degani — Community serverini ishga tushirib, addons-path ga Enterprise papkasini qoʻshish degani. Shuning uchun Enterprise uchun **ikkala repozitoriy ham kerak.**

## 5-qadam. Python kutubxonalari

Odoo papkasiga oʻting va oʻrnating:

```bash
cd /CommunityPath
pip install -r requirements.txt
```

**Maslahat:** bir nechta Odoo versiyasi bilan ishlasangiz yoki tizim Pythonʼini toza saqlamoqchi boʻlsangiz, virtualenv orqali alohida muhit yarating. Majburiy emas, lekin versiyalar aralashib ketishining oldini oladi.

Bir eslatma: requirements.txt dagi paket versiyalari Odoo chiqqan paytdagi Debian/Ubuntu LTS versiyalariga mos tanlangan. Shuning uchun ularni oʻzboshimchalik bilan yangilash tavsiya etilmaydi.

## 6-qadam. wkhtmltopdf

Bu paket pip orqali oʻrnatilmaydi. Qoʻlda oʻrnatish kerak va **aynan 0.12.6 versiyasi** — faqat shu versiya kolontitullarni (header, footer) qoʻllab-quvvatlaydi.

Yuklab olish: github.com/wkhtmltopdf/packaging/releases/tag/0.12.6.1-3

Agar buni oʻtkazib yuborsangiz, Odoo ishlaydi — lekin PDF hisobot chiqarmoqchi boʻlganingizda xatolik beradi.

## 7-qadam. rtlcss (ixtiyoriy)

Faqat arab yoki ibroniy tillari kerak boʻlsa. Oʻzbek va rus tili uchun kerak emas.

```bash
sudo npm install -g rtlcss
```

## 8-qadam. Ishga tushirish

```bash
cd /CommunityPath
python3 odoo-bin --addons-path=addons -d mydb
```

Enterprise bilan — **Enterprise yoʻli birinchi turishi shart**, aks holda modullar notoʻgʻri yuklanadi:

```bash
python3 odoo-bin --addons-path=../enterprise,addons -d mydb
```

Terminalda shu qator chiqishini kuting:

```text
odoo.modules.loading: Modules loaded.
```

Brauzerda oching: [http://localhost:8069](http://localhost:8069)

Kirish: email admin, parol admin.

**Diqqat:** bu Odoo interfeysiga kirish hisobi. U PostgreSQL foydalanuvchisidan butunlay boshqa narsa.

## Konfiguratsiya fayli

Har safar uzun buyruq yozish noqulay. Sozlamalarni faylga yozing — /etc/odoo/odoo.conf:

```ini
[options]
db_host = localhost
db_port = 5432
db_user = odoo
db_password = odoo
addons_path = /opt/odoo/odoo/addons,/opt/odoo/custom-addons
logfile = /var/log/odoo/odoo.log
```

Ishga tushirish:

```bash
python3 odoo-bin -c /etc/odoo/odoo.conf -d mydb
```

Paket orqali oʻrnatilgan boʻlsa, bu fayl allaqachon mavjud boʻladi.

## Production uchun: eng muhim uchta narsa

Shu yergacha boʻlgan qismlar Odooʻni ishga tushiradi. Lekin real kompaniya ishlaydigan server uchun yana uchta narsa kerak.

## 1. Workers — koʻp jarayonli rejim

Standart holatda Odoo bitta jarayonda ishlaydi va Pythonʼning GIL cheklovi sababli protsessorning bir qismidan foydalanadi. **Multi-processing rejimi** esa ishni jarayonlar orasida taqsimlaydi.

U --workers parametri nolga teng boʻlmagan songa oʻrnatilganda yoqiladi.

**Hisoblash qoidalari (rasmiy hujjatdan):**

- Workers soni = **(CPU soni × 2) + 1**
- 1 worker ≈ **6 bir vaqtda ishlovchi foydalanuvchi**
- Cron uchun **alohida worker** kerak

**Operativ xotira.** Hisob soʻrovlarning 20% ogʻir, 80% yengil degan taxminga asoslanadi. Ogʻir worker ≈ 1 GB, yengil worker ≈ 150 MB.

```text
Kerakli RAM = workers × ((0.8 × 150MB) + (0.2 × 1024MB))
```

**Amaliy misol (rasmiy hujjatdagi namuna).** Server: 4 CPU, 8 thread. 60 bir vaqtda ishlovchi foydalanuvchi.

- 60 ÷ 6 = **10** — nazariy kerakli workers soni
- (4 × 2) + 1 = **9** — nazariy maksimal workers soni
- Tanlov: **8 worker + 1 cron**
- RAM = 9 × ((0.8×150) + (0.2×1024)) ≈ **3 GB**

Konfiguratsiya fayliga:

```ini
[options]
limit_memory_hard = 1677721600
limit_memory_soft = 629145600
limit_request = 8192
limit_time_cpu = 600
limit_time_real = 1200
max_cron_threads = 1
workers = 8
```

**Eslatma:** multi-processing rejimi Linux serverlari uchun chuqur moslashtirilgan va **Windowsʼda ishlamaydi.** Bu Linuxʼni tanlashning yana bir sababi.

## 2. Reverse proxy (nginx)

Odooʻni toʻgʻridan-toʻgʻri 8069 portda internetga chiqarish kerak emas. Oldiga nginx qoʻyiladi — u HTTPS, statik fayllar va yuklamani taqsimlash bilan shugʻullanadi.

Ikkita narsani unutmang:

**LiveChat uchun alohida yoʻnaltirish.** Multi-processing rejimida LiveChat uchun alohida worker ishga tushadi va u --gevent-port da tinglaydi. Odatiy holda HTTP soʻrovlar oddiy workerlarga boradi. Shuning uchun proxyʼda /websocket/ bilan boshlanadigan soʻrovlarni LiveChat workerʼiga yoʻnaltirish **shart**.

**Proxy rejimi.** Odooʻni --proxy-mode bilan ishga tushiring — shunda u proxyʼniki emas, haqiqiy mijoz maʼlumotlarini (hostname, scheme, IP) ishlatadi.

## 3. systemd xizmati

Server qayta ishga tushganda Odoo ham avtomatik koʻtarilishi kerak. Paket orqali oʻrnatilgan boʻlsa, bu allaqachon sozlangan:

```bash
sudo systemctl enable odoo
sudo systemctl start odoo
sudo systemctl status odoo
```

Manbadan oʻrnatgan boʻlsangiz, /etc/systemd/system/odoo.service faylini qoʻlda yaratish kerak boʻladi.

## Eng koʻp uchraydigan xatolar

**FATAL: role "odoo" does not exist**  
 PostgreSQL foydalanuvchisi yaratilmagan yoki konfiguratsiyada boshqa nom koʻrsatilgan.

**could not connect to server: Connection refused**  
 PostgreSQL ishlamayapti: sudo systemctl status postgresql

**pip install -r requirements.txt kompilyatsiya xatosi**  
 Tizim kutubxonalari oʻrnatilmagan. libldap2-dev libpq-dev libsasl2-dev ni oʻrnating.

**externally-managed-environment xatosi (Ubuntu 23.04+)**  
 Yangi Ubuntu versiyalari tizim Pythonʼiga pip bilan oʻrnatishni bloklaydi. Yechim — virtualenv ishlatish. Bu aslida toʻgʻriroq yoʻl ham.

**PDF hisobot chiqmaydi yoki kolontitulsiz**  
 wkhtmltopdf oʻrnatilmagan yoki notoʻgʻri versiya. Aynan 0.12.6 kerak.

**Port band:****Address already in use**  
 Boshqa Odoo nusxasi ishlab turibdi yoki port egallangan: --http-port=8070

**Sayt sekin ishlaydi, foydalanuvchilar kutadi**  
 Workers sozlanmagan. Standart bitta jarayonli rejim 5–10 foydalanuvchidan koʻpini koʻtarmaydi.

## Qisqa xulosa

Linuxʼda Odoo oʻrnatish murakkab emas — murakkablik **toʻgʻri usulni tanlashda**.

- Tezda koʻrib chiqish kerakmi → **repozitoriy**
- Enterprise kerakmi → **paket**
- Modul yozasizmi → **manbadan**
- Real kompaniya ishlaydimi → **manbadan yoki paket + workers + nginx + systemd**

Oxirgi qatorni eʼtiborsiz qoldirmang. Odooʻni oʻrnatish — bu 20 daqiqalik ish. Uni production uchun toʻgʻri sozlash — bu alohida mavzu va u serverning qancha foydalanuvchi koʻtarishini belgilaydi.
