PostgreSQL jest sercem każdej instalacji Odoo. Prawidłowa konfiguracja bazy danych ma kluczowe znaczenie dla wydajności, bezpieczeństwa i stabilności całego systemu ERP. W tym przewodniku pokażemy, jak profesjonalnie skonfigurować bazę danych PostgreSQL dla Odoo.
Dlaczego PostgreSQL jest niezbędny dla Odoo?
Odoo wykorzystuje PostgreSQL jako swoją wyłączną bazę danych. To potężny, otwartoźródłowy system zarządzania relacyjnymi bazami danych, który oferuje zaawansowane funkcje, wysoką wydajność i niezawodność. Bez prawidłowo skonfigurowanej instancji PostgreSQL, Odoo po prostu nie będzie działać.
PostgreSQL zapewnia Odoo wsparcie dla złożonych zapytań, transakcji ACID, wielowersyjność (MVCC) oraz szeroki zakres typów danych, w tym JSON, który jest intensywnie wykorzystywany przez Odoo. To właśnie te cechy sprawiają, że jest idealnym wyborem dla systemu ERP obsługującego dane biznesowe.
Instalacja PostgreSQL
Instalacja na systemach Linux (Ubuntu/Debian)
Przed rozpoczęciem konfiguracji bazy danych dla Odoo, należy zainstalować serwer PostgreSQL. Na systemach opartych na Ubuntu lub Debianie proces jest prosty:
sudo apt update
sudo apt install postgresql postgresql-client -y
Po instalacji usługa PostgreSQL uruchomi się automatycznie. Możesz sprawdzić jej status używając komendy:
sudo systemctl status postgresql
Ważne: Upewnij się, że instalujesz odpowiednią wersję PostgreSQL. Odoo 17 wymaga PostgreSQL w wersji 12 do 16, podczas gdy Odoo 16 wspiera wersje 10 do 15. Zalecana jest instalacja PostgreSQL 14 lub nowszej dla optymalnej wydajności.
Instalacja na systemach Windows
Na systemach Windows należy pobrać instalator PostgreSQL ze strony oficjalnej. Po pobraniu, uruchom instalator i postępuj zgodnie z instrukcjami kreatora. Podczas instalacji zapamiętaj hasło administratora (postgres), które będzie potrzebne później.
Jeśli instalujesz Odoo na Windows, zapoznaj się z naszym przewodnikiem: Jak zainstalować Odoo na Windows? Przewodnik krok po kroku.
Tworzenie użytkownika PostgreSQL dla Odoo
Odoo wymaga dedykowanego użytkownika PostgreSQL z odpowiednimi uprawnieniami. Ze względów bezpieczeństwa, nie należy używać konta superużytkownika postgres dla połączeń aplikacji.
Krok 1: Przełączenie na użytkownika postgres
W systemach Linux, przełącz się na użytkownika systemowego postgres:
sudo su - postgres
Krok 2: Utworzenie nowego użytkownika
Utwórz nowego użytkownika PostgreSQL dla Odoo. Nazwa użytkownika powinna odpowiadać nazwie użytkownika systemowego, który będzie uruchamiał Odoo:
createuser -d -R -S odoo
Parametry oznaczają:
- -d: użytkownik może tworzyć bazy danych (wymagane, aby Odoo mógł tworzyć nowe bazy przez interfejs webowy)
- -R: użytkownik nie może tworzyć nowych ról
- -S: użytkownik nie jest superużytkownikiem
Alternatywnie, możesz utworzyć użytkownika z hasłem używając interfejsu psql:
psql
CREATE USER odoo WITH PASSWORD 'silne_haslo' CREATEDB;
\q
Krok 3: Instalacja wymaganych rozszerzeń PostgreSQL
Odoo wymaga kilku rozszerzeń PostgreSQL dla pełnej funkcjonalności. Zaloguj się jako postgres i włącz niezbędne rozszerzenia:
sudo su - postgres
psql
CREATE EXTENSION IF NOT EXISTS pg_trgm;
CREATE EXTENSION IF NOT EXISTS unaccent;
\q
Rozszerzenie pg_trgm jest wymagane dla wyszukiwania pełnotekstowego w Odoo, a unaccent umożliwia wyszukiwanie bez uwzględniania znaków diakrytycznych.
Konfiguracja PostgreSQL dla optymalnej wydajności Odoo
Domyślna konfiguracja PostgreSQL nie jest zoptymalizowana pod kątem Odoo. Aby zapewnić najlepszą wydajność, należy dostosować kilka parametrów.
Edycja pliku postgresql.conf
Plik konfiguracyjny PostgreSQL zwykle znajduje się w lokalizacji:
- Ubuntu/Debian:
/etc/postgresql/[wersja]/main/postgresql.conf - Windows:
C:\Program Files\PostgreSQL\[wersja]\data\postgresql.conf
Otwórz plik jako administrator i dostosuj następujące parametry:
shared_buffers = 512MB
effective_cache_size = 2GB
maintenance_work_mem = 128MB
work_mem = 16MB
max_connections = 100
wal_buffers = 16MB
checkpoint_completion_target = 0.9
random_page_cost = 2.0
Te wartości są odpowiednie dla serwera z 4GB RAM. Dla większych serwerów, możesz proporcjonalnie zwiększyć te wartości. Parametr shared_buffers powinien wynosić około 25% dostępnej pamięci RAM, a effective_cache_size około 50-75%.
Parametr random_page_cost ustawiony na 2.0 jest optymalny dla dysków SSD. Dla tradycyjnych dysków HDD pozostaw wartość domyślną 4.0.
Konfiguracja autovacuum
Autovacuum jest kluczowy dla utrzymania wydajności bazy danych Odoo w czasie. Odoo generuje dużo transakcji, więc regularne czyszczenie jest niezbędne:
autovacuum = on
autovacuum_max_workers = 3
autovacuum_naptime = 1min
autovacuum_vacuum_scale_factor = 0.05
autovacuum_analyze_scale_factor = 0.02
Restart usługi PostgreSQL
Po dokonaniu zmian, zrestartuj PostgreSQL:
sudo systemctl restart postgresql
Konfiguracja bezpieczeństwa
Plik pg_hba.conf
Plik pg_hba.conf kontroluje, kto może łączyć się z bazą danych. Znajduje się w tym samym katalogu co postgresql.conf.
Dla lokalnych instalacji Odoo, dodaj następującą linię:
local all odoo md5
Dla zdalnych połączeń (tylko w bezpiecznych sieciach!):
host all odoo 192.168.1.0/24 md5
Zastąp zakres IP odpowiednim dla Twojej sieci. Dla środowisk produkcyjnych zalecane jest użycie SSL:
hostssl all odoo 192.168.1.0/24 md5
Po zmianach przeładuj konfigurację PostgreSQL:
sudo systemctl reload postgresql
Tworzenie bazy danych dla Odoo
Odoo automatycznie tworzy bazę danych podczas pierwszej konfiguracji przez interfejs webowy. Ważne: Aby móc tworzyć bazy danych przez interfejs Odoo, musisz ustawić parametr admin_passwd (master password) w pliku konfiguracyjnym Odoo.
Możesz jednak utworzyć bazę ręcznie:
createdb -O odoo nazwa_bazy
Parametr -O odoo ustawia użytkownika odoo jako właściciela bazy danych.
Po utworzeniu bazy, upewnij się, że rozszerzenia są dostępne:
psql -d nazwa_bazy -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
psql -d nazwa_bazy -c "CREATE EXTENSION IF NOT EXISTS unaccent;"
Konfiguracja połączenia Odoo z PostgreSQL
Po skonfigurowaniu PostgreSQL, musisz poinformować Odoo, jak połączyć się z bazą danych. Odbywa się to poprzez plik konfiguracyjny Odoo (odoo.conf).
Dodaj lub zmodyfikuj następujące parametry:
db_host = localhost
db_port = 5432
db_user = odoo
db_password = silne_haslo
db_name = False
db_maxconn = 64
admin_passwd = bardzo_silne_master_haslo
Parametr db_name = False pozwala Odoo zarządzać wieloma bazami danych. Jeśli pracujesz tylko z jedną bazą, możesz podać jej nazwę.
Parametr db_maxconn określa maksymalną liczbę połączeń do bazy danych na proces Odoo. Wartość 64 jest odpowiednia dla większości instalacji. Upewnij się, że max_connections w PostgreSQL jest wyższa niż db_maxconn × liczba workers.
Parametr admin_passwd (master password) jest wymagany do zarządzania bazami danych przez interfejs webowy Odoo - tworzenia, duplikowania, usuwania oraz backupu baz danych.
Jeśli instalujesz Odoo na Ubuntu, sprawdź nasz szczegółowy przewodnik: Jak zainstalować Odoo na Ubuntu? Kompletny przewodnik krok po kroku.
Testowanie połączenia
Aby przetestować, czy wszystko działa prawidłowo, uruchom Odoo i sprawdź logi. Jeśli połączenie jest prawidłowe, powinieneś zobaczyć komunikaty o pomyślnym połączeniu z bazą danych.
Możesz również przetestować połączenie ręcznie:
psql -U odoo -h localhost -d postgres
Jeśli możesz się zalogować (i podać hasło jeśli je ustawiłeś), konfiguracja jest poprawna.
Backup i utrzymanie bazy danych
Regularne tworzenie kopii zapasowych jest kluczowe dla bezpieczeństwa danych biznesowych. PostgreSQL oferuje narzędzie pg_dump:
pg_dump -U odoo -F c nazwa_bazy > backup.dump
Parametr -F c tworzy backup w formacie custom, który jest skompresowany i umożliwia selektywne przywracanie.
Przywracanie z kopii zapasowej:
pg_restore -U odoo -d nazwa_bazy -c backup.dump
Parametr -c czyści istniejące obiekty przed przywróceniem, co zapobiega konfliktom.
Ważne: Backup bazy danych to tylko część kopii zapasowej Odoo. Musisz również zabezpieczyć katalog filestore, który zawiera załączniki i pliki. Domyślnie znajduje się w ~/.local/share/Odoo/filestore/nazwa_bazy (Linux) lub w katalogu danych Odoo (Windows).
Pełny backup Odoo powinien obejmować:
- Dump bazy danych PostgreSQL
- Katalog filestore
- Plik konfiguracyjny odoo.conf
- Ewentualne niestandardowe moduły
Rozważ automatyzację backupów za pomocą cron (Linux) lub Harmonogramu zadań (Windows). Przykładowy skrypt cron dla codziennego backupu o 2:00:
0 2 * * * pg_dump -U odoo -F c nazwa_bazy > /backup/odoo_$(date +\%Y\%m\%d).dump
Monitorowanie i optymalizacja wydajności
Regularne monitorowanie wydajności PostgreSQL jest kluczowe dla utrzymania optymalnej pracy Odoo. Możesz użyć narzędzia pgBadger do analizy logów PostgreSQL i identyfikacji wolnych zapytań.
Włącz logowanie wolnych zapytań w postgresql.conf:
log_min_duration_statement = 1000 # loguj zapytania dłuższe niż 1 sekunda
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
Alternatywa: Instalacja z Dockerem
Jeśli chcesz uniknąć ręcznej konfiguracji PostgreSQL, rozważ użycie Dockera. Docker automatycznie konfiguruje PostgreSQL wraz z Odoo w izolowanych kontenerach. Zobacz nasz przewodnik: Jak zainstalować Odoo za pomocą Dockera?
FAQ - Najczęściej zadawane pytania
Czy mogę używać innej bazy danych niż PostgreSQL dla Odoo?
Nie, Odoo wymaga wyłącznie PostgreSQL. System został zaprojektowany specjalnie do pracy z PostgreSQL i wykorzystuje specyficzne funkcje tej bazy danych, takie jak JSONB, tablice, i zaawansowane indeksowanie. Nie obsługuje innych systemów zarządzania bazami danych, takich jak MySQL, MariaDB czy Microsoft SQL Server.
Jaką wersję PostgreSQL powinienem zainstalować dla Odoo?
Zalecana wersja zależy od wersji Odoo:
- Odoo 17: PostgreSQL 12, 13, 14, 15 lub 16 (zalecana 14 lub nowsza)
- Odoo 16: PostgreSQL 10, 11, 12, 13, 14 lub 15 (zalecana 12 lub nowsza)
- Odoo 15: PostgreSQL 10, 11, 12, 13 lub 14
Zawsze sprawdzaj oficjalną dokumentację Odoo dla aktualnych wymagań. Unikaj używania wersji PostgreSQL starszych niż 12, ponieważ mogą występować problemy z kompatybilnością i wydajnością.
Jak mogę zresetować hasło użytkownika PostgreSQL dla Odoo?
Zaloguj się jako użytkownik postgres i użyj komendy SQL:
sudo su - postgres
psql
ALTER USER odoo WITH PASSWORD 'nowe_haslo';
\q
Następnie zaktualizuj hasło w pliku konfiguracyjnym Odoo (odoo.conf) w parametrze db_password i zrestartuj usługę Odoo:
sudo systemctl restart odoo
Czy potrzebuję rozszerzeń PostgreSQL dla Odoo?
Tak, Odoo wymaga co najmniej dwóch rozszerzeń PostgreSQL:
- pg_trgm - niezbędne dla funkcji wyszukiwania pełnotekstowego i wydajności zapytań z operatorem LIKE
- unaccent - umożliwia wyszukiwanie bez uwzględniania znaków diakrytycznych (np. wyszukiwanie "cafe" znajdzie również "café")
Bez tych rozszerzeń Odoo może nie działać poprawnie lub będzie znacznie wolniejsze.
Podsumowanie
Prawidłowa konfiguracja bazy danych PostgreSQL dla Odoo jest fundamentem stabilnego i wydajnego systemu ERP. Postępując zgodnie z tym przewodnikiem, utworzyłeś bezpieczne środowisko bazodanowe zoptymalizowane pod kątem potrzeb Odoo. Pamiętaj o:
- Regularnych backupach (zarówno bazy danych, jak i filestore)
- Monitorowaniu wydajności i analizie wolnych zapytań
- Aktualizowaniu zarówno PostgreSQL, jak i Odoo do najnowszych kompatybilnych wersji
- Stosowaniu zasad bezpieczeństwa, szczególnie w środowiskach produkcyjnych
- Ustawieniu master password dla bezpiecznego zarządzania bazami
Potrzebujesz pomocy z konfiguracją Odoo?
Konfiguracja PostgreSQL i Odoo może być wyzwaniem, szczególnie dla złożonych środowisk produkcyjnych. KK Innovations specjalizuje się we wdrożeniach Odoo i może pomóc w profesjonalnej konfiguracji, optymalizacji i utrzymaniu Twojego systemu ERP. Skontaktuj się z nami, aby dowiedzieć się, jak możemy wspierać Twój biznes!