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

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

سعیده مهاجری

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

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

Git ، Pip ، Node.js و ابزارهای مورد نیاز برای ساخت وابستگی Odoo را نصب کنید:

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

ایجاد کاربر سیستم :

ما یک کاربر سیستم و گروه جدید با دایرکتوری اصلی /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"

نصب wkhtmltopdf :

بسته wkhtmltopdf مجموعه ای از ابزارهای خط فرمان اپن سورس را ارائه می دهد که می توانند HTML را به PDF و قالب های مختلف تصویر تبدیل کنند. برای نمایش گزارش های PDF در Odoo ، باید بسته wkhtmltox را نصب کنید. ورژن توصیه شده برای 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 نصب خواهیم کرد. ابتدا به کاربر “odoo14” تغییر دهید:

sudo su - odoo14

کد منبع Odoo 14 را از GitHub کلون کنید:

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

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

cd /opt/odoo14python3 -m venv odoo-venv

محیط را با دستور زیر فعال کنید:

source odoo-venv/bin/activate

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

pip3 install wheelpip3 install -r odoo/requirements.txt

اگر هنگام نصب با خطای کامپایل مواجه شدید ، مطمئن شوید که همه پیش نیازهای ذکر شده در قسمت Installing Prerequisites (نصب پیش نیازها) نصب شده اند. پس از اتمام کار ، محیط را با تایپ کردن دستور زیر غیرفعال کنید:

deactivate

یک دایرکتوری جدید ایجاد خواهیم کرد که افزونه های شخص ثالث را در خود جای دهد.

mkdir /opt/odoo14/odoo-custom-addons

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

به کاربر sudo خود برگردید:

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 را به چیزی امن تر تغییر دهید.

ایجاد فایل واحد سیستمی :

ویرایشگر متن خود را باز کرده و یک فایل واحد خدماتی به نام 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 یک سرور پروکسی است که رمزگذاری/رمزگشایی SSL را به عهده دارد. این بدان معناست که پروکسی خاتمه (Nginx) اتصالات TLS ورودی (HTTPS) را پردازش و رمزگشایی می کند و درخواست های رمزگذاری نشده را به سرویس داخلی (Odoo) منتقل می کند. ترافیک بین Nginx و Odoo رمزگذاری نمی شود (HTTP). استفاده از پروکسی معکوس مزایای بسیاری از قبیل Loading Balancing ، خاتمه SSL ، ذخیره سازی ، فشرده سازی ، ارائه محتوای استاتیک و موارد دیگر را به شما می دهد. قبل از ادامه این بخش اطمینان حاصل کنید که پیش نیازهای زیر را رعایت کرده اید:

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

ویرایشگر متن خود را باز کرده و بلوک سرور دامنه را ایجاد و ویرایش کنید:

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;
}

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

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

sudo systemctl restart nginx

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

proxy_mode = True

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

sudo systemctl restart odoo14

در این مرحله ، پروکسی معکوس کانفیگ شده است و می توانید به آدرس Odoo خود در https://example.com دسترسی پیدا کنید.

تغییر رابط اتصال:

این مرحله اختیاری است ، اما یک عمل امنیتی خوب است. به طور پیش فرض ، سرور Odoo در همه رابط ها به پورت ۸۰۶۹ فراخوانی می شود. برای غیرفعال کردن دسترسی مستقیم به نمونه Odoo ، می توانید پورت ۸۰۶۹ را برای همه رابط های عمومی مسدود کنید یا Odoo را مجبور کنید فقط در رابط local فراخوانی شود. ما Odoo را طوری تنظیم می کنیم که فقط در ۱۲۷٫۰٫۰٫۱  فراخوانی شود. کانفیگ را باز کنید و دستورات زیر را در انتهای فایل اضافه کنید:

xmlrpc_interface = 127.0.0.1
netrpc_interface = 127.0.0.1

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

sudo systemctl restart odoo14

فعال کردن پردازش چندگانه :

به طور پیش فرض ، Odoo در حالت چند رشته ای کار می کند. برای استقرار تولید ، توصیه می شود به سرور چند پردازشی تغییر دهید زیرا باعث افزایش ثبات و استفاده بهتر از منابع سیستم می شود. برای فعال کردن پردازش چندگانه ، باید کانفیگ Odoo را ویرایش کرده و تعداد غیر صفر فرآیندهای در حال کار را تنظیم کنید. تعداد کارهای فعال بر اساس تعداد هسته های CPU در سیستم و حافظه RAM موجود محاسبه می شود. طبق اسناد رسمی Odoo ، برای محاسبه تعداد کارها و اندازه حافظه RAM مورد نیاز ، می توانید از فرمول ها و فرضیات زیر استفاده کنید:

محاسبه شماره فعالیت ها :

  • تعداد نظری حداکثر فعالیت ها= (system_cpus * 2) + 1
  • ۱ فعالیت می تواند تقریبا ۶ کاربر همزمان ارائه دهد
  • فعالیت Cron نیز به CPU احتیاج دارند

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

  • ما در نظر خواهیم گرفت که ۲۰٪ از کلیه درخواستها درخواستهای سنگین و ۸۰٪ سبکتر هستند. درخواست های سنگین از حدود ۱ گیگابایت رم استفاده می کنند در حالی که سبک تر آنها از حدود ۱۵۰ مگابایت رم استفاده می کنند
  • RAM مورد نیاز = * ( (light_worker_ratio * light_worker_ram_estimation) + (heavy_worker_ratio * heavy_worker_ram_estimation) )

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

grep -c ^processor /proc/cpuinfo

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

  • ۳۰ users / 6 = **5** (5 تعداد نظری فعالیت های مورد نیاز است)
  • (۴ * ۲) + ۱ = **۹** (۹ حداکثر تعداد نظری کارفعالیت ها است)

براساس محاسبه فوق می توانید برای فعالیت های کرن ۵ فعالیت + ۱ فعالیت استفاده کنید که در مجموع ۶ فعالیت هستند. میزان مصرف حافظه RAM را بر اساس تعداد فعایت ها محاسبه کنید:

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

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

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 در اوبونتو ۲۰٫۰۴ در محیط مجازی پایتون و استفاده از Nginx به عنوان یک پروکسی معکوس آشنا کردیم. ما همچنین نحوه فعال سازی چند پردازشی و بهینه سازی Odoo را برای محیط تولید به شما نشان دادیم.

امیدواریم مطالب مورد پسند بوده و از آن بهره لازم را برده باشید. خوشحال میشویم نظرات و سوالات خود را در قسمت دیدگاه به اشتراک بگذارید و ما را در شتابان هاست همراهی کنید.😊

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