Android

Cách triển khai odoo 12 trên Ubuntu 18.04

How to Install and Configure Odoo 12 using Pycharm in Ubuntu 18.04?

How to Install and Configure Odoo 12 using Pycharm in Ubuntu 18.04?

Mục lục:

Anonim

Odoo là phần mềm kinh doanh tất cả trong một phổ biến nhất trên thế giới. Nó cung cấp một loạt các ứng dụng kinh doanh bao gồm CRM, trang web, Thương mại điện tử, thanh toán, kế toán, sản xuất, kho, quản lý dự án, hàng tồn kho và nhiều hơn nữa, tất cả được tích hợp hoàn hảo.

Odoo có thể được cài đặt theo nhiều cách khác nhau. Cách dễ nhất và nhanh nhất để cài đặt Odoo là sử dụng kho APT chính thức của họ.

Hướng dẫn này bao gồm các bước cần thiết để cài đặt và định cấu hình Odoo 12 để sản xuất bằng nguồn Git và môi trường ảo Python trên hệ thống Ubuntu 18.04.

Trước khi bắt đầu

Đăng nhập vào máy Ubuntu của bạn với tư cách là người dùng sudo và cập nhật hệ thống lên các gói mới nhất:

sudo apt update && sudo apt upgrade

Cài đặt Git, Pip, Node.js và các công cụ cần thiết để xây dựng các phụ thuộc 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

Tạo người dùng Odoo

Tạo người dùng hệ thống mới cho Odoo có tên odoo12 với thư mục chính /opt/odoo12 bằng lệnh sau:

sudo useradd -m -d /opt/odoo12 -U -r -s /bin/bash odoo12 Bạn có thể sử dụng bất kỳ tên nào cho người dùng Odoo của mình miễn là bạn tạo người dùng PostgreSQL có cùng tên.

Cài đặt và cấu hình PostgreSQL

Cài đặt gói PostgreSQL từ kho lưu trữ mặc định của Ubuntu:

sudo apt install postgresql

Sau khi cài đặt hoàn tất, hãy tạo một người dùng PostgreSQL có cùng tên với người dùng hệ thống được tạo trước đó, trong trường hợp của chúng tôi là odoo12 :

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

Cài đặt Wkhtmltopdf

Gói wkhtmltox cung cấp một bộ công cụ dòng lệnh nguồn mở có thể kết xuất HTML thành PDF và các định dạng hình ảnh khác nhau. Để in báo cáo PDF, bạn sẽ cần công cụ wkhtmltopdf . Phiên bản được đề xuất cho Odoo là 0.12.1 , không có sẵn trong kho chính thức của Ubuntu 18.04.

Tải xuống gói bằng lệnh wget sau:

wget

Khi quá trình tải xuống hoàn tất, hãy cài đặt gói bằng cách gõ:

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

Cài đặt và cấu hình Odoo

Chúng tôi sẽ cài đặt Odoo từ kho GitHub bên trong môi trường ảo Python bị cô lập.

Trước khi bắt đầu với quá trình cài đặt, hãy thay đổi thành người dùng của od od1212:

sudo su - odoo12

Bắt đầu bằng cách nhân bản mã nguồn Odoo 12 từ kho GitHub:

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

Khi mã nguồn được tải xuống, hãy tạo môi trường ảo Python mới cho bản cài đặt Odoo 12:

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

Tiếp theo, kích hoạt môi trường bằng lệnh sau:

source odoo-venv/bin/activate

Cài đặt tất cả các mô-đun Python cần thiết với pip3:

pip3 install wheel pip3 install -r odoo/requirements.txt Nếu bạn gặp phải bất kỳ lỗi biên dịch nào trong quá trình cài đặt, hãy đảm bảo rằng bạn đã cài đặt tất cả các phụ thuộc bắt buộc được liệt kê trong phần Before you begin .

Vô hiệu hóa môi trường bằng lệnh sau:

deactivate

Tạo một thư mục mới cho các addon tùy chỉnh:

mkdir /opt/odoo12/odoo-custom-addons

Chuyển về người dùng sudo của bạn:

exit

Tiếp theo, tạo một tệp cấu hình, bằng cách sao chép tệp cấu hình mẫu đi kèm:

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

Mở tệp và chỉnh sửa nó như sau:

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 Đừng quên thay đổi my_admin_passwd thành thứ gì đó an toàn hơn.

Tạo một tệp đơn vị Systemd

Để chạy Odoo như một dịch vụ, chúng ta cần tạo tệp đơn vị dịch vụ trong thư mục /etc/systemd/system/ .

Mở trình soạn thảo văn bản của bạn và dán cấu hình sau:

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

Thông báo cho systemd rằng một tệp đơn vị mới tồn tại và bắt đầu dịch vụ Odoo bằng cách chạy:

sudo systemctl daemon-reload sudo systemctl start odoo12

Kiểm tra trạng thái dịch vụ bằng lệnh sau:

sudo systemctl status odoo12

Đầu ra sẽ trông giống như bên dưới chỉ ra rằng dịch vụ Odoo đang hoạt động và đang chạy.

* 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

Cho phép dịch vụ Odoo được tự động khởi động khi khởi động:

sudo systemctl enable odoo12

sudo journalctl -u odoo12

Kiểm tra cài đặt

Mở trình duyệt của bạn và gõ: http://:8069 http://:8069

Giả sử cài đặt thành công, một màn hình tương tự như sau sẽ xuất hiện:

Định cấu hình Nginx làm Proxy chấm dứt SSL

Đảm bảo rằng bạn đã đáp ứng các điều kiện tiên quyết sau đây trước khi tiếp tục với phần này:

  • Tên miền trỏ đến IP máy chủ công cộng của bạn. Trong hướng dẫn này, chúng tôi sẽ sử dụng chứng chỉ example.com .Nginx đã cài đặt.SSL cho tên miền của bạn. Bạn có thể cài đặt chứng chỉ SSL Encrypt SSL miễn phí.

Máy chủ web Odoo mặc định đang phục vụ lưu lượng truy cập qua HTTP. Để làm cho việc triển khai Odoo của chúng tôi an toàn hơn, chúng tôi sẽ định cấu hình Nginx làm proxy chấm dứt SSL sẽ phục vụ lưu lượng truy cập qua

Proxy chấm dứt SSL là một máy chủ proxy xử lý mã hóa / giải mã SSL. Điều này có nghĩa là proxy chấm dứt (Nginx) của chúng tôi sẽ xử lý và giải mã các kết nối TLS đến (HTTPS) và nó sẽ chuyển các yêu cầu không được mã hóa đến dịch vụ nội bộ của chúng tôi (Odoo) để lưu lượng giữa Nginx và Odoo sẽ không được mã hóa (HTTP).

Sử dụng proxy ngược mang lại cho bạn rất nhiều lợi ích như Cân bằng tải, Chấm dứt SSL, Lưu đệm, Nén, Phục vụ Nội dung tĩnh và hơn thế nữa.

Trong ví dụ này, chúng tôi sẽ định cấu hình Chuyển hướng SSL, chuyển hướng HTTP sang HTTPS, WWW sang chuyển hướng không WWW, lưu trữ các tệp tĩnh và cho phép nén GZip.

Mở trình soạn thảo văn bản của bạn và tạo tệp sau:

sudo nano /etc/nginx/sites-enabled/example.com /etc/nginx/sites-enables/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; } Đừng quên thay thế example.com bằng tên miền Odoo của bạn và đặt đường dẫn chính xác đến các tệp chứng chỉ SSL. Các đoạn được sử dụng trong cấu hình này được tạo trong hướng dẫn này.

Khi bạn đã hoàn tất, hãy khởi động lại dịch vụ Nginx với:

sudo systemctl restart nginx

Tiếp theo, chúng tôi cần nói với Odoo rằng chúng tôi sẽ sử dụng proxy. Để làm như vậy, hãy mở tệp cấu hình và thêm dòng sau:

/etc/odoo12.conf

proxy_mode = True

Khởi động lại dịch vụ Odoo để các thay đổi có hiệu lực:

sudo systemctl restart odoo12

Tại thời điểm này, máy chủ của bạn được định cấu hình và bạn có thể truy cập vào phiên bản Odoo của mình tại: https://example.com

Thay đổi giao diện liên kết

Bước này là tùy chọn, nhưng nó là một thực hành bảo mật tốt.

Theo mặc định, máy chủ Odoo lắng nghe cổng 8069 trên tất cả các giao diện. Nếu bạn muốn vô hiệu hóa quyền truy cập trực tiếp vào phiên bản Odoo của mình, bạn có thể chặn cổng 8069 cho tất cả các giao diện công cộng hoặc buộc Odoo chỉ nghe trên giao diện cục bộ.

Trong hướng dẫn này, chúng tôi sẽ cấu hình Odoo chỉ nghe trên 127.0.0.1 . Mở cấu hình thêm hai dòng sau vào cuối tệp:

/etc/odoo12.conf

xmlrpc_interface = 127.0.0.1 netrpc_interface = 127.0.0.1

Lưu tệp cấu hình và khởi động lại máy chủ Odoo để các thay đổi có hiệu lực:

sudo systemctl restart odoo12

Kích hoạt đa xử lý

Theo mặc định, Odoo đang làm việc ở chế độ đa luồng. Để triển khai sản xuất, nên chuyển sang máy chủ đa xử lý vì nó làm tăng tính ổn định và sử dụng tốt hơn các tài nguyên hệ thống. Để kích hoạt đa xử lý, chúng ta cần chỉnh sửa cấu hình Odoo và đặt số lượng quy trình worker khác nhau.

Số lượng công nhân được tính dựa trên số lượng lõi CPU trong hệ thống và bộ nhớ RAM khả dụng.

Theo tài liệu chính thức của Odoo để tính số công nhân và kích thước bộ nhớ RAM cần thiết, chúng tôi sẽ sử dụng các công thức và giả định sau:

Tính toán số công nhân

  • số lượng công nhân tối đa theo lý thuyết = (system_cpus * 2) + 11 worker có thể phục vụ ~ = 6 người dùng đồng thời Công nhân cũng yêu cầu CPU

Tính toán kích thước bộ nhớ RAM

  • Chúng tôi sẽ xem xét rằng 20% ​​tất cả các yêu cầu là yêu cầu nặng nề, trong khi 80% là những yêu cầu nhẹ hơn. Các yêu cầu nặng đang sử dụng khoảng 1 GB RAM trong khi các yêu cầu nhẹ hơn đang sử dụng khoảng 150 MB RAMNeeded RAM = number_of_workers * ((light_worker_ratio * light_worker_ram_estimation) + (heavy_worker_ratio * heavy_worker_ram_estimation))

grep -c ^processor /proc/cpuinfo

Giả sử chúng ta có một hệ thống với 4 lõi CPU, bộ nhớ RAM 8 GB và 30 người dùng Odoo đồng thời.

  • 30 users / 6 = **5** (5 là số công nhân lý thuyết cần thiết) (4 * 2) + 1 = **9** (9 là số lượng công nhân tối đa theo lý thuyết)

Dựa trên tính toán ở trên, chúng ta có thể sử dụng 5 công nhân + 1 công nhân cho công nhân cron với tổng số 6 công nhân.

Tính toán mức tiêu thụ bộ nhớ RAM dựa trên số lượng công nhân:

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

Tính toán ở trên cho chúng ta thấy rằng cài đặt Odoo của chúng ta sẽ cần khoảng 2GB RAM.

Để chuyển sang chế độ đa xử lý, hãy mở tệp cấu hình và nối các dòng sau:

/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

Khởi động lại dịch vụ Odoo để các thay đổi có hiệu lực:

sudo systemctl restart odoo12

Phần còn lại của tài nguyên hệ thống sẽ được sử dụng bởi các dịch vụ khác chạy trên hệ thống này. Trong hướng dẫn này, chúng tôi đã cài đặt Odoo cùng với PostgreSQL và Nginx trên cùng một máy chủ và tùy thuộc vào thiết lập của bạn, bạn cũng có thể có các dịch vụ khác chạy trên máy chủ của mình.

Phần kết luận

Hướng dẫn này hướng dẫn bạn cài đặt Odoo 12 trên Ubuntu 18.04 trong môi trường ảo Python sử dụng Nginx làm proxy ngược. Bạn cũng đã học cách kích hoạt đa xử lý và tối ưu hóa Odoo cho môi trường sản xuất.

Bạn cũng có thể muốn kiểm tra hướng dẫn của chúng tôi về cách tạo bản sao lưu tự động hàng ngày của cơ sở dữ liệu Odoo của bạn.

ubfox odoo postgresql python pip nginx proxy ssl