Android

Jak wdrożyć odoo 12 na Ubuntu 18.04

1. Install Odoo 12 on Ubuntu 18.04

1. Install Odoo 12 on Ubuntu 18.04

Spisu treści:

Anonim

Odoo to najpopularniejsze oprogramowanie biznesowe typu „wszystko w jednym” na świecie. Oferuje szereg aplikacji biznesowych, w tym CRM, strony internetowe, handel elektroniczny, fakturowanie, księgowość, produkcję, magazyn, zarządzanie projektami, inwentaryzację i wiele innych, wszystkie bezproblemowo zintegrowane.

Odoo można zainstalować na kilka różnych sposobów. Najłatwiejszym i najszybszym sposobem na zainstalowanie Odoo jest użycie ich oficjalnych repozytoriów APT.

Ten samouczek obejmuje kroki wymagane do zainstalowania i skonfigurowania Odoo 12 do produkcji przy użyciu źródła Git i wirtualnego środowiska Python w systemie Ubuntu 18.04.

Zanim zaczniesz

Zaloguj się do komputera Ubuntu jako użytkownik sudo i zaktualizuj system do najnowszych pakietów:

sudo apt update && sudo apt upgrade

Zainstaluj Git, Pip, Node.js i narzędzia wymagane do zbudowania zależności Odoo:

sudo apt install git python3-pip build-essential wget python3-dev python3-venv python3-wheel libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-setuptools node-less

Utwórz użytkownika Odoo

Utwórz nowego użytkownika systemu dla Odoo o nazwie odoo12 z katalogiem /opt/odoo12 za pomocą następującego polecenia:

sudo useradd -m -d /opt/odoo12 -U -r -s /bin/bash odoo12 Możesz używać dowolnej nazwy dla swojego użytkownika Odoo, dopóki tworzysz użytkownika PostgreSQL o tej samej nazwie.

Zainstaluj i skonfiguruj PostgreSQL

Zainstaluj pakiet PostgreSQL z domyślnych repozytoriów Ubuntu:

sudo apt install postgresql

Po zakończeniu instalacji utwórz użytkownika PostgreSQL o takiej samej nazwie jak poprzednio utworzony użytkownik systemu, w naszym przypadku jest to odoo12 :

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

Zainstaluj Wkhtmltopdf

Pakiet wkhtmltox zapewnia zestaw narzędzi wiersza poleceń o otwartym kodzie źródłowym, które mogą renderować HTML do formatu PDF i różne formaty obrazów. Aby wydrukować raporty PDF, potrzebujesz narzędzia wkhtmltopdf . Zalecana wersja dla Odoo to 0.12.1 która nie jest dostępna w oficjalnych repozytoriach Ubuntu 18.04.

Pobierz pakiet za pomocą następującego polecenia wget:

wget

Po zakończeniu pobierania zainstaluj pakiet, wpisując:

sudo apt install./wkhtmltox_0.12.1.3-1~bionic_amd64.deb

Zainstaluj i skonfiguruj Odoo

Zainstalujemy Odoo z repozytorium GitHub w izolowanym środowisku wirtualnym Python.

Przed rozpoczęciem procesu instalacji zmień użytkownika na „odoo12”:

sudo su - odoo12

Zacznij od klonowania kodu źródłowego Odoo 12 z repozytorium GitHub:

git clone https://www.github.com/odoo/odoo --depth 1 --branch 12.0 /opt/odoo12/odoo

Po pobraniu kodu źródłowego utwórz nowe środowisko wirtualne Python dla instalacji Odoo 12:

cd /opt/odoo12 python3 -m venv odoo-venv

Następnie aktywuj środowisko za pomocą następującego polecenia:

source odoo-venv/bin/activate

Zainstaluj wszystkie wymagane moduły Python za pomocą pip3:

pip3 install wheel pip3 install -r odoo/requirements.txt Jeśli podczas instalacji wystąpią jakiekolwiek błędy kompilacji, upewnij się, że zainstalowałeś wszystkie wymagane zależności wymienione w sekcji Before you begin .

Dezaktywuj środowisko za pomocą następującego polecenia:

deactivate

Utwórz nowy katalog dla niestandardowych dodatków:

mkdir /opt/odoo12/odoo-custom-addons

Wróć do użytkownika sudo:

exit

Następnie utwórz plik konfiguracyjny, kopiując dołączony przykładowy plik konfiguracyjny:

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

Otwórz plik i edytuj go w następujący sposób:

sudo nano /etc/odoo12.conf /etc/odoo12.conf

; This is the password that allows database operations: admin_passwd = my_admin_passwd db_host = False db_port = False db_user = odoo12 db_password = False addons_path = /opt/odoo12/odoo/addons, /opt/odoo12/odoo-custom-addons Nie zapomnij zmienić my_admin_passwd na coś bezpieczniejszego.

Utwórz plik jednostki systemowej

Aby uruchomić Odoo jako usługę, musimy utworzyć plik jednostki serwisowej w katalogu /etc/systemd/system/ .

Otwórz edytor tekstu i wklej następującą konfigurację:

sudo nano /etc/systemd/system/odoo12.service /etc/systemd/system/odoo12.service

Description=Odoo12 Requires=postgresql.service After=network.target postgresql.service Type=simple SyslogIdentifier=odoo12 PermissionsStartOnly=true User=odoo12 Group=odoo12 ExecStart=/opt/odoo12/odoo-venv/bin/python3 /opt/odoo12/odoo/odoo-bin -c /etc/odoo12.conf StandardOutput=journal+console WantedBy=multi-user.target

Powiadom systemd, że istnieje nowy plik jednostki i uruchom usługę Odoo, uruchamiając:

sudo systemctl daemon-reload sudo systemctl start odoo12

Sprawdź status usługi za pomocą następującego polecenia:

sudo systemctl status odoo12

Dane wyjściowe powinny wyglądać mniej więcej tak, jak poniżej, wskazując, że usługa Odoo jest aktywna i działa.

* odoo12.service - Odoo12 Loaded: loaded (/etc/systemd/system/odoo12.service; disabled; vendor preset: enabled) Active: active (running) since Tue 2018-10-09 14:15:30 PDT; 3s ago Main PID: 24334 (python3) Tasks: 4 (limit: 2319) CGroup: /system.slice/odoo12.service `-24334 /opt/odoo12/odoo-venv/bin/python3 /opt/odoo12/odoo/odoo-bin -c /etc/odoo12.conf

Włącz usługę Odoo, aby była automatycznie uruchamiana podczas rozruchu:

sudo systemctl enable odoo12

sudo journalctl -u odoo12

Przetestuj instalację

Otwórz przeglądarkę i wpisz: http://:8069 http://:8069

Zakładając, że instalacja się powiodła, pojawi się ekran podobny do następującego:

Skonfiguruj Nginx jako serwer proxy terminacji SSL

Przed kontynuowaniem tej sekcji upewnij się, że zostały spełnione następujące wymagania wstępne:

  • Nazwa domeny wskazująca adres IP twojego publicznego serwera. W tym samouczku wykorzystamy example.com Zainstalowany.Nginx.SSL certyfikat dla Twojej domeny. Możesz zainstalować bezpłatny certyfikat Let's Encrypt SSL.

Domyślny serwer internetowy Odoo obsługuje ruch przez HTTP. Aby nasze wdrożenie Odoo było bezpieczniejsze, skonfigurujemy Nginx jako serwer proxy terminacji SSL, który będzie obsługiwał ruch przez

Serwer proxy zakończenia SSL to serwer proxy, który obsługuje szyfrowanie / deszyfrowanie SSL. Oznacza to, że nasz serwer proxy terminacji (Nginx) będzie obsługiwał i deszyfrował przychodzące połączenia TLS (HTTPS) i przekaże niezaszyfrowane żądania do naszej usługi wewnętrznej (Odoo), aby ruch między Nginx a Odoo nie był szyfrowany (HTTP).

Korzystanie z odwrotnego proxy daje wiele korzyści, takich jak równoważenie obciążenia, zakończenie SSL, buforowanie, kompresja, serwowanie treści statycznych i wiele innych.

W tym przykładzie skonfigurujemy Zakończenie SSL, przekierowanie HTTP na HTTPS, przekierowanie z WWW na inne niż WWW, buforowanie plików statycznych i włączenie kompresji GZip.

Otwórz edytor tekstu i utwórz następujący plik:

sudo nano /etc/nginx/sites-enabled/example.com /etc/nginx/sites-enabled/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; # 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; } Nie zapomnij zastąpić example.com domeną Odoo i ustawić prawidłową ścieżkę do plików certyfikatów SSL. Fragmenty użyte w tej konfiguracji są tworzone w tym przewodniku.

Po zakończeniu uruchom ponownie usługę Nginx za pomocą:

sudo systemctl restart nginx

Następnie musimy powiedzieć Odoo, że będziemy używać proxy. Aby to zrobić, otwórz plik konfiguracyjny i dodaj następujący wiersz:

/etc/odoo12.conf

proxy_mode = True

Uruchom ponownie usługę Odoo, aby zmiany odniosły skutek:

sudo systemctl restart odoo12

W tym momencie serwer jest skonfigurowany i możesz uzyskać dostęp do instancji Odoo pod https://example.com : https://example.com

Zmień interfejs powiązania

Ten krok jest opcjonalny, ale stanowi dobrą praktykę bezpieczeństwa.

Domyślnie serwer Odoo nasłuchuje na porcie 8069 na wszystkich interfejsach. Jeśli chcesz wyłączyć bezpośredni dostęp do instancji Odoo, możesz zablokować port 8069 dla wszystkich publicznych interfejsów lub zmusić Odoo do nasłuchiwania tylko na interfejsie lokalnym.

W tym przewodniku skonfigurujemy Odoo, aby nasłuchiwał tylko w wersji 127.0.0.1 . Otwórz konfigurację, dodaj następujące dwa wiersze na końcu pliku:

/etc/odoo12.conf

xmlrpc_interface = 127.0.0.1 netrpc_interface = 127.0.0.1

Zapisz plik konfiguracyjny i zrestartuj serwer Odoo, aby zmiany odniosły skutek:

sudo systemctl restart odoo12

Włącz wieloprocesowość

Domyślnie Odoo działa w trybie wielowątkowym. W przypadku wdrożeń produkcyjnych zaleca się przejście na serwer wieloprocesowy, ponieważ zwiększa stabilność i lepiej wykorzystuje zasoby systemowe. Aby włączyć przetwarzanie wieloprocesowe, musimy edytować konfigurację Odoo i ustawić niezerową liczbę procesów roboczych.

Liczbę pracowników oblicza się na podstawie liczby rdzeni procesora w systemie i dostępnej pamięci RAM.

Zgodnie z oficjalną dokumentacją Odoo w celu obliczenia liczby pracowników i wymaganego rozmiaru pamięci RAM zastosujemy następujące formuły i założenia:

Obliczanie liczby pracowników

  • teoretyczna maksymalna liczba pracowników = (system_cpus * 2) + 11 pracowników może obsłużyć ~ = 6 równoczesnych użytkowników Robotnicy wymagają również procesora

Obliczanie wielkości pamięci RAM

  • Rozważymy, że 20% wszystkich żądań to ciężkie żądania, a 80% mniejszych. Ciężkie żądania zużywają około 1 GB pamięci RAM, a lżejsze używają około 150 MB RAM Potrzebne RAM = number_of_workers * ((light_worker_ratio * light_worker_ram_estimation) + (heavy_worker_ratio * heavy_worker_ram_estimation))

grep -c ^processor /proc/cpuinfo

Załóżmy, że mamy system z 4 rdzeniami procesora, 8 GB pamięci RAM i 30 równoczesnymi użytkownikami Odoo.

  • 30 users / 6 = **5** (5 to teoretyczna liczba potrzebnych pracowników) (4 * 2) + 1 = **9** (9 to teoretyczna maksymalna liczba pracowników)

W oparciu o powyższe obliczenia możemy użyć 5 pracowników + 1 pracownika dla pracownika cron, który łącznie wynosi 6 pracowników.

Oblicz zużycie pamięci RAM na podstawie liczby pracowników:

  • RAM = 6 * ((0.8*150) + (0.2*1024)) ~= 2 GB of RAM

Powyższe obliczenia pokazują nam, że nasza instalacja Odoo będzie wymagała około 2 GB pamięci RAM.

Aby przełączyć do trybu wieloprocesowego, otwórz plik konfiguracyjny i dołącz następujące wiersze:

/etc/odoo12.conf

limit_memory_hard = 2684354560 limit_memory_soft = 2147483648 limit_request = 8192 limit_time_cpu = 600 limit_time_real = 1200 max_cron_threads = 1 workers = 5

Uruchom ponownie usługę Odoo, aby zmiany odniosły skutek:

sudo systemctl restart odoo12

Reszta zasobów systemowych będzie używana przez inne usługi działające w tym systemie. W tym przewodniku zainstalowaliśmy Odoo wraz z PostgreSQL i Nginx na tym samym serwerze, a w zależności od konfiguracji możesz mieć również inne usługi działające na twoim serwerze.

Wniosek

Ten samouczek przeprowadził Cię przez proces instalacji Odoo 12 na Ubuntu 18.04 w środowisku wirtualnym Python przy użyciu Nginx jako odwrotnego proxy. Nauczyłeś się również, jak włączyć wieloprocesowość i optymalizować Odoo dla środowiska produkcyjnego.

Możesz także sprawdzić nasz samouczek dotyczący tworzenia automatycznych codziennych kopii zapasowych baz danych Odoo.

ubuntu odoo postgresql python pip nginx proxy ssl