نحوه نصب Odoo 14 در اوبونتو ۲۰٫۰۴

نحوه نصب Odoo 14 در اوبونتو ۲۰٫۰۴

سعیده مهاجری

Odoo 14 یک مجموعه محبوب و اپن سورس از برنامه های تجاری است که به شرکت ها برای مدیریت و اداره تجارت خود کمک می کند. این شامل طیف گسترده ای از برنامه ها مانند CRM ، تجارت الکترونیکی ، سازنده وب سایت ، صورتحساب ، حسابداری ، تولید ، انبار ، مدیریت پروژه ،موجودی و موارد دیگر است که همگی بصورت یکپارچه تلفیق شده اند.بسته به نوع استفاده و فناوری های موجود ، Odoo به روش های مختلف قابل نصب است. ساده ترین و سریع ترین راه برای نصب Odoo 14 استفاده از Odoo APT است.نصب Odoo در یک محیط مجازی یا استقرار بهعنوان یک Docker container ، به شما امکان کنترل بیشتر برنامه را می دهد و به شما امکان می دهد چندین نمونه Odoo را در همان سیستم اجرا کنید.در این مقاله نحوه نصب و استقرار Odoo 14 در محیط مجازی Python در اوبونتو ۲۰٫۰۴ توضیح خواهیم داد .  Odoo را از GitHubدانلود کنید  و از Nginx به عنوان reverse proxy استفاده کنید.

نصب پیش نیازها :

دستور زیر Git ، Pip ، Node.js را نصب می کند یا (https://linuxize.com/post/how-to-in-gcc-on-ubuntu-20-04/ Odoo dependencies ):

sudo apt updatesudo apt install git python3-pip build-essential wget python3-dev python3-venv \    python3-wheel libfreetype6-dev libxml2-dev libzip-dev libldap2-dev libsasl2-dev \    python3-setuptools node-less libjpeg-dev zlib1g-dev libpq-dev \    libxslt1-dev libldap2-dev libtiff5-dev libjpeg8-dev libopenjp2-7-dev \    liblcms2-dev libwebp-dev libharfbuzz-dev libfribidi-dev libxcb1-dev

ایجاد System User :

اجرای Odoo در زیر کاربر اصلی مجاز نیست ، زیرا این یک خطر امنیتی است. ما یک کاربر و گروه سیستم جدید با فهرست اصلی / opt / odoo14 ایجاد خواهیم کرد که سرویس Odoo را اجرا می کند. برای انجام این کار ، دستور زیر را وارد کنید:

sudo useradd -m -d /opt/odoo14 -U -r -s /bin/bash odoo14

به شرطی که یک کاربر PostgreSQL با همان نام ایجاد کنید ، می توانید هر چیزی را که می خواهید در کاربر بنویسید.

نصب و کانفیگ PostgreSQL :

Odoo از PostgreSQL به عنوان پایگاه داده استفاده می کند. PostgreSQL در اوبونتو موجود است . برای نصب آن ، دستور زیر را اجرا کنید:

sudo apt install postgresql

پس از اتمام نصب ، یک کاربر PostgreSQL با همان نام کاربر سیستم ایجاد شده قبلی ایجاد کنید. در این مثال ، odoo14 است:

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

Installing wkhtmltopdf  :

wkhtmltopdf مجموعه ای از ابزارهای command-line اپن سورس برای ارائه صفحات HTML به PDF و قالب های مختلف تصویر است. برای چاپ گزارش های PDF در Odoo ، باید wkhtmltox package را نصب کنید. نسخه پیشنهادی Odoo نسخه ۰٫۱۲٫۵ است که می توانید از

Github دانلود کنید:

sudo wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.bionic_amd64.deb

پس از دانلود فایل ، آن را با وارد کردن دستور زیر نصب کنید:

sudo apt install ./wkhtmltox_0.12.6-1.bionic_amd64.deb

نصب و کانفیگ Odoo 14 :

Odoo را از یک محیط مجازی Python جداگانه نصب خواهید کرد.

ابتدا user را به “odoo14” تغییر دهید:

sudo su - odoo14

کد منبع Odoo 14 را از GitHub تغییر دهید:

git clone https://www.github.com/odoo/odoo --depth 1 --branch 14.0 /opt/odoo14/odoo

یک محیط مجازی جدید Python برای Odoo ایجاد کنید:

cd /opt/odoo14python3 -m venv odoo-venv

محیط مجازی را فعال کنید:

source odoo-venv/bin/activate

تمام ماژول های مورد نیاز Python را با pip3 نصب کنید:

pip3 install wheelpip3 install -r odoo/requirements.txt

اگر هنگام نصب با خطای compilation مواجه شدید ، مطمئن شوید که تمام موارد مورد نیاز ذکر شده در بخش پیش نیازها نصب شده باشند .

پس از اتمام ، با اجرای دستور زیر محیط را deactivate کنید:

deactivate

یک directory جدید ایجاد کنید که شامل موارد زیر باشد:

 mkdir /opt/odoo14/odoo-custom-addons

این directory را به پارامتر addons_path اضافه کنید. این پارامتر لیستی از directories را که Odoo ماژول ها را جستجو می کند تعریف می کند.

بازگشت به sudo user خود:

exit

یک فایل کانفیگ با محتوای زیر ایجاد کنید:

sudo nano /etc/odoo14.conf
[options]
; This is the password that allows database operations:
admin_passwd = my_admin_passwd
db_host = False
db_port = False
db_user = odoo14
db_password = False
addons_path = /opt/odoo14/odoo/addons,/opt/odoo14/odoo-custom-addons

فراموش نکنید که my_admin_passwd را محفوظ نگهدارید.

ایجاد فایل Systemd Unit :

ویرایشگر متن خود را باز کنید و یک فایل به نام odoo14.service با محتوای زیر ایجاد کنید:

sudo nano /etc/systemd/system/odoo14.service
[Unit]
Description=Odoo14
Requires=postgresql.service
After=network.target postgresql.service

[Service]
Type=simple
SyslogIdentifier=odoo14
PermissionsStartOnly=true
User=odoo14
Group=odoo14
ExecStart=/opt/odoo14/odoo-venv/bin/python3 /opt/odoo14/odoo/odoo-bin -c /etc/odoo14.conf
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target

در systemd اعمال کید که یک فایل جدید وجود دارد:

sudo systemctl daemon-reload

سرویس Odoo را شروع کرده و با راه اندازی مجدد ، آن را فعال کنید:

sudo systemctl enable --now odoo14

وضعیت سرویس را بررسی کنید:

sudo systemctl status odoo14

خروجی باید به شکل زیر باشد ،خروجی نشان می دهد که سرویس Odoo فعال و در حال اجرا است:

● odoo14.service - Odoo14
     Loaded: loaded (/etc/systemd/system/odoo14.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-10-16 19:05:32 UTC; 3s ago

برای دیدن پیام های ثبت شده توسط سرویس Odoo ، دستور زیر را اجرا کنید:

sudo journalctl -u odoo14

امتحان نصب :

مرورگر خود را باز کرده و تایپ کنید: http: // <your_domain_or_IP_address>: 8069

اگر نصب درست انجام شده باشد ، صفحه ای مشابه تصویر زیر ظاهر می شود:

نحوه نصب Odoo 14 در اوبونتو 20.04

کانفیگ Nginx به عنوان SSL Termination Proxy :

وب سرور پیش فرض Odoo در حال بازدید از طریق HTTP است. برای ایمن سازی استقرار Odoo ، حتما Nginx را به عنوان SSL termination proxy تنظیم کنید  که به ترافیک ، از طریق HTTPS سرویس می دهد.

SSL termination proxy یک سرور proxy است که رمزگذاری / رمزگشایی SSL را کنترل می کند. این به این معنی است که proxy Nginx اتصالات TLS ورودی  یا (HTTPS) را پردازش و رمزگشایی می کند و درخواست های رمزگذاری نشده را به سرویس داخلی یا (Odoo) منتقل میکند.

ترافیک بین Nginx و Odoo رمزگذاری نخواهد شد (HTTP).

استفاده از reverse proxy مزایای زیادی مانند Load Balancing, SSL Termination, Caching, Compression, Serving Static Content و موارد دیگر به شما می دهد.

قبل از ادامه ، مطمئن شوید که موارد زیر را رعایت کرده اید:

  • نام دامنه به IP سرور عمومی شما اشاره دارد.  از example.com استفاده کنید.
  • Nginx نصب شد
  • گواهینامه SSL برای دامنه شماست . می توانید یک گواهینامه Let’s Encrypt SSL رایگان نصب کنید.

ویرایشگر متن خود را باز کرده و domain server block را ایجاد و ویرایش کنید:

sudo nano /etc/nginx/sites-enabled/example.com.conf

کانفیگ زیر SSL Termination ، تغییر مسیر HTTP به HTTPS ، تغییر مسیر WWW به غیر WWW ، ذخیره فایل های استاتیک و فشرده سازی GZip را تنظیم می کند.

# 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;
    include snippets/letsencrypt.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;
    include snippets/letsencrypt.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;
}

فراموش نکنید که example.com را با دامنه Odoo خود جایگزین کرده و مسیر صحیح را برای فایل های گواهینامه SSL تنظیم کنید. قطعه های استفاده شده در این کانفیگ در این راهنما ایجاد شده است.

پس از پایان کار ، سرویس Nginx را مجدداً راه اندازی کنید:

sudo systemctl restart nginx

Odoo باید از proxy استفاده کند. برای انجام این کار ، فایل کانفیگ را باز کرده و دستور زیر را اضافه کنید:

proxy_mode = True

سرویس Odoo را مجدداً راه اندازی کنید تا تغییرات اعمال شود:

sudo systemctl restart odoo14

در این مرحله ، reverse proxy کانفیگ شده است و می توانید از طریق https://example.com به نمونه Odoo خود دسترسی پیدا کنید.

تغییر Binding Interface :

این مرحله اختیاری است ، اما یک روش امنیتی مناسب است.

به طور پیش فرض ، سرور Odoo از درگاه ۸۰۶۹ در همه interfaces پیروی میکند . برای غیرفعال کردن دسترسی مستقیم به نمونه Odoo ، می توانید پورت ۸۰۶۹ را برای همه interfaces عمومی مسدود کنید یا Odoo را مجبور کنید فقط از طریق local interface پیروی کند.

Odoo را کانفیگ کنید تا فقط در تاریخ ۱۲۷٫۰٫۰٫۱ پیروی کند . کانفیگ را باز کنید و دو دستور زیر را در انتهای فایل اضافه کنید:

xmlrpc_interface = 127.0.0.1
netrpc_interface = 127.0.0.1

فایل کانفیگ را ذخیره کرده و سرور Odoo را مجدداً راه اندازی کنید تا تغییرات اعمال شود:

sudo systemctl restart odoo14

امکان پردازش چندگانه :

به طور پیش فرض ، Odoo در حالت چند رشته ای کار می کند. برای production deployments ، توصیه می شود به سرور چند پردازشی تغییر دهید زیرا باعث افزایش ثبات و استفاده بهتر از منابع سیستم می شود.

برای فعال کردن پردازش چندگانه ، باید کانفیگ Odoo را ویرایش کرده و تعداد غیر صفر worker processes را تنظیم کنید. تعداد workers بر اساس تعداد هسته های پردازنده در سیستم و حافظه RAM موجود محاسبه می شود.

طبق اسناد رسمی Odoo ، برای محاسبه تعداد workers و اندازه حافظه RAM مورد نیاز ، می توانید از فرمول ها و فرضیات زیر استفاده کنید:

محاسبه تعداد worker :

  • حداکثر worker = (system_cpus * 2) + 1
  • ۱ worker می تواند ۶ = ۶ کاربر همزمان بکار ببرد
  • Cron workers نیز به CPU نیاز دارند

محاسبه اندازه حافظه RAM :

  • در نظر بگیرید که ۲۰٪ از کل  requests heavy ، requests  و ۸۰٪ requests  lighter  است. requests heavy از حدود ۱ گیگابایت رم استفاده می کنند در حالی که در موارد lighter  از حدود ۱۵۰ مگابایت رم استفاده می شود.
  • RAM مورد نیاز = تعداد workers

اگر نمی دانید چند CPU روی سیستم خود دارید ، از دستور grep زیر استفاده کنید:

grep -c ^processor /proc/cpuinfo

فرض کنید شما سیستمی با ۴ هسته پردازنده ، ۸ گیگابایت حافظه RAM و ۳۰ کاربر همزمان Odoo دارید.

  • ۳۰ کاربر / ۶ = ** ۵ ** (۵ تعداد  workers مورد نیاز است)
  • (۴ * ۲) + ۱ = ** ۹ ** (۹ حداکثر workers است)

بر اساس محاسبه فوق ، می توانید از  worker 1+ worker 5  برای cron worker که در مجموع ۶ worker است استفاده کنید.

مصرف حافظه RAM را بر اساس تعداد workers محاسبه کنید:

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

این محاسبه نشان می دهد که نصب Odoo به حدود ۲ گیگابایت RAM نیاز دارد.

برای رفتن به حالت پردازش چندگانه ، فایل کانفیگ را باز کرده و مقادیر محاسبه شده را ضمیمه کنید:

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

سرویس Odoo را مجدداً راه اندازی کنید تا تغییرات اعمال شود:

sudo systemctl restart odoo14

بقیه منابع سیستم توسط سرویسهای دیگری که روی این سیستم کار می کنند استفاده خواهد شد. در این راهنما ، Odoo را به همراه PostgreSQL و Nginx روی همان سرور نصب کردید. باتوجه به تنظیمات خود ، ممکن است سرویس های دیگری را نیز در سرور خود اجرا کنید.

جمع بندی :

در این مقاله شما را در نصب Odoo 14 در اوبونتو ۲۰٫۰۴ در یک محیط مجازی Python با استفاده از Nginx به عنوان یک reverse proxy راهنمایی کردیم . ما همچنین به شما نشان دادیم که چگونه چندین پردازش را فعال کنید و Odoo را برای یک محیط تولید بهینه کنید.

امیدواریم مطالب مورد پسند بوده باشد.

ما را در شتابان هاست همراهی کنید.

 

 

 

برچسب ها: دستورات لینوکس