Android

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

How to install Odoo 11 on Ubuntu 18.04

How to install Odoo 11 on 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.

Có một số cách để cài đặt Odoo tùy thuộc vào trường hợp sử dụng được yêu cầu. 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 để 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 một người dùng và nhóm hệ thống mới với thư mục chính /opt/odoo sẽ chạy dịch vụ Odoo.

sudo useradd -m -d /opt/odoo -U -r -s /bin/bash odoo Bạn có thể đặt tên cho người dùng bất cứ điều gì bạn thích, chỉ cần đảm bảo rằng bạn tạo một người dùng postgres 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

Khi quá trình 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à odoo :

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

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 để chúng tôi có thể kiểm soát nhiều hơn các phiên bản và cập nhật.

Trước khi bắt đầu với quá trình cài đặt, hãy đảm bảo bạn chuyển sang người dùng odoo .

sudo su - odoo

Để xác nhận rằng bạn đã đăng nhập với tư cách là người dùng odoo bạn có thể sử dụng lệnh sau:

whoami

Bây giờ chúng ta có thể bắt đầu với quá trình cài đặt. Đầu tiên sao chép odoo từ kho GitHub:

git clone https://www.github.com/odoo/odoo --depth 1 --branch 11.0 /opt/odoo/odoo11

  • Nếu bạn muốn cài đặt một phiên bản Odoo khác, chỉ cần thay đổi số phiên bản sau công --branch Bạn có thể đặt tên thư mục theo ý muốn, ví dụ thay vì odoo11 bạn có thể sử dụng tên miền của mình.

Để tạo một môi trường ảo mới cho phiên bản Odoo 11 chạy:

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

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

source odoo11-venv/bin/activate

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

pip3 install wheel pip3 install -r odoo11/requirements.txt

pip3 là một công cụ để cài đặt và quản lý các gói Python.

Khi quá trình cài đặt hoàn tất, hãy hủy kích hoạt môi trường và quay lại người dùng sudo của bạn bằng các lệnh sau:

deactivate

exit

sudo mkdir /opt/odoo/odoo11-custom-addons sudo chown odoo: /opt/odoo/odoo11-custom-addons

Tiếp theo, chúng ta cần tạo một tệp cấu hình, chúng ta có thể tạo một tệp mới từ đầu hoặc sao chép tệp cấu hình đi kèm:

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

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

/etc/odoo11.conf

; This is the password that allows database operations: admin_passwd = my_admin_passwd db_host = False db_port = False db_user = odoo db_password = False addons_path = /opt/odoo/odoo11/addons; If you are using custom modules; addons_path = /opt/odoo/odoo11/addons, /opt/odoo/odoo11-custom-addons Đừng quên thay đổi my_admin_passwd thành thứ gì đó an toàn hơn và điều chỉnh addons_path nếu bạn đang sử dụng các mô-đun tùy chỉnh.

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

Để chạy odoo như một dịch vụ, chúng tôi sẽ tạo tệp đơn vị odoo11.service trong thư mục /etc/systemd/system/ với các nội dung sau:

/etc/systemd/system/odoo11.service

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

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

sudo systemctl daemon-reload sudo systemctl start odoo11

Bạn có thể kiểm tra trạng thái dịch vụ bằng lệnh sau:

sudo systemctl status odoo11

● odoo11.service - Odoo11 Loaded: loaded (/etc/systemd/system/odoo11.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2018-05-03 21:23:08 UTC; 3s ago Main PID: 18351 (python3) Tasks: 4 (limit: 507) CGroup: /system.slice/odoo11.service └─18351 /opt/odoo/odoo11-venv/bin/python3 /opt/odoo/odoo11/odoo-bin -c /etc/odoo11.conf

và nếu không có lỗi, bạn có thể cho phép dịch vụ Odoo tự động khởi động khi khởi động:

sudo systemctl enable odoo11

sudo journalctl -u odoo11

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

  • Bạn có một 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 example.com . Bạn đã cài đặt Nginx bằng cách làm theo các hướng dẫn sau. Bạn đã cài đặt chứng chỉ SSL cho tên miền của mình. Bạn có thể cài đặt chứng chỉ SSL Encrypt SSL miễn phí bằng cách làm theo các hướng dẫn sau.

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

Chúng tôi cần nói với Odoo rằng chúng tôi sẽ sử dụng proxy, mở tệp cấu hình và thêm dòng sau:

/etc/odoo11.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 odoo11

Sử dụng Nginx làm proxy cho chúng tôi một số lợi ích. 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.

/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

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, vì vậy nếu bạn muốn tắt 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ẽ buộc Odoo chỉ nghe trên 127.0.0.1 , mở cấu hình Odoo thêm hai dòng sau vào cuối tệp:

/etc/odoo11.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 odoo

Cho phép đ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/odoo11.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 odoo11

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 máy của chúng tôi. 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

Đó là nó! Hướng dẫn này hướng dẫn bạn cài đặt Odoo 11 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