نحوه نصب Odoo 13 در CentOS 8

نحوه نصب Odoo 13 در CentOS 8

سعیده مهاجری
Odoo محبوب ترین نرم افزار تجاری همه کاره در جهان است. این نرم افزار طیف وسیعی از برنامه های تجاری از جمله CRM ، وب سایت ، تجارت الکترونیک ، صورتحساب ، حسابداری ، تولید ، warehouse ، مدیریت پروژه ، موجودی و موارد دیگر را ارائه می دهد که همه آنها یکپارچه شده اند. در این آموزش با ما همراه باشید تا شما عزیزان را با نحوه نصب Odoo 13 بر روی دستگاه CentOS 8 آشنا کنیم. ما Odoo را از Github دانلود می کنیم و Nginx را به عنوان یک پروکسی معکوس کانفیگ می کنیم.
پیش نیازها :
برای تکمیل نصب باید به عنوان root یا کاربر با امتیازات sudo وارد سیستم شوید.

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

Python 3 ، Git ، pip و همه کتابخانه ها و ابزارهای مورد نیاز برای ساخت Odoo را نصب کنید:

sudo dnf install python3 python3-devel git gcc redhat-rpm-config libxslt-devel bzip2-devel openldap-devel libjpeg-devel freetype-devel

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

یک کاربر و گروه جدید با دایرکتوری opt /odoo /، home ایجاد کنید که سرویس Odoo را اجرا می کند:

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

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

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

ما PostgreSQL 10 را از مخازن استاندارد CentOS 8 نصب می کنیم:

sudo dnf install @postgresql:10

پس از اتمام نصب ، یک cluster دیتابیس PostgreSQL جدید ایجاد کنید:

sudo postgresql-setup initdb

سرویس PostgreSQL را فعال و راه اندازی کنید:

sudo systemctl enable --now postgresql

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

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

نصب Wkhtmltopdf :

بسته wkhtmltox مجموعه ای از ابزارهای خط فرمان اپن سورس را ارائه می دهد که می تواند HTML را به PDF و فرمت های مختلف تصویر تبدیل کند. برای اینکه بتوانید گزارش های PDF را نمایش دهید ، باید ابزار wkhtmltopdf را نصب کنید. ورژن پیشنهادی شده برای Odoo ، ورژن ۰٫۱۲٫۵ است که در مخازن پیش فرض CentOS 8 موجود نیست. بسته را با استفاده از دستور  Github  نصب کنید:

sudo dnf install https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos8.x86_64.rpm

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

قبل از شروع مراحل نصب ، به کاربر “odoo13” تغییر دهید:

sudo su - odoo13

کد source نصب Odoo 13 را از مخزن GitHub کلون کنید:

git clone https://www.github.com/odoo/odoo --depth 1 --branch 13.0 /opt/odoo13/odoo

به دایرکتوری /opt /odoo13 بروید و یک محیط مجازی جدید پایتون برای نصب Odoo ایجاد کنید:

cd /opt/odoo13python3 -m venv venv

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

source venv/bin/activate

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

pip3 install -r odoo/requirements.txt

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

deactivate

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

mkdir /opt/odoo13/odoo-custom-addons

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

exit

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

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

ذخیره کنید و فایل را ببندید. فراموش نکنید که superadmin_passwd را به چیزی امن تر تغییر دهید.

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

ویرایشگر متن خود را باز کرده و فایلی با نام odoo13.service در دایرکتوری /etc/systemd/system/ ایجاد کنید:

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

دستورات زیر را جایگذاری کنید:

[Unit]
Description=Odoo13
Requires=postgresql.service
After=network.target postgresql.service

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

[Install]
WantedBy=multi-user.target

فایل را ذخیره کرده و ویرایشگر را ببندید. با اجرای دستور زیر به سیستم اطلاع دهید که فایل جدیدی وجود دارد:

sudo systemctl daemon-reload

سرویس Odoo را با اجرای دستور زیر شروع و فعال کنید:

sudo systemctl enable --now odoo13

با استفاده از دستور زیر می توانید وضعیت سرویس را بررسی کنید:

sudo systemctl status odoo13
 odoo13.service - Odoo13
   Loaded: loaded (/etc/systemd/system/odoo13.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2019-12-11 20:04:52 UTC; 5s ago
 Main PID: 28539 (python3)
    Tasks: 4 (limit: 11524)
   Memory: 94.6M
   CGroup: /system.slice/odoo13.service
           └─۲۸۵۳۹ /opt/odoo13/venv/bin/python3 /opt/odoo13/odoo/odoo-bin -c /etc/odoo13.conf

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

sudo journalctl -u odoo13

تست نصب :

مرورگر خود را باز کرده و http: // <your_domain_or_IP_address>: 8069 را تایپ کنید. با فرض موفقیت آمیز بودن نصب ، صفحه ای مشابه تصویر زیر ظاهر می شود:

نحوه نصب Odoo 13 در CentOS 8

اگر نمی توانید به صفحه دسترسی پیدا کنید ، احتمالاً فایروال شما پورت ۸۰۶۹ را مسدود کرده است. از دستورات زیر برای بازکردن پورت لازم استفاده کنید:

sudo firewall-cmd --permanent --zone=public --add-port=8069/tcpsudo firewall-cmd --reload

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

وب سرور پیش فرض Odoo در حال انتقال ترافیک از طریق HTTP است. برای ایمن سازی استقرار Odoo ، ما Nginx را به عنوان یک SSL Termination Proxy کانفگ می کنیم که به ترافیک HTTPS کمک می کند. SSL Termination Proxy یک سرور پروکسی است که رمزگذاری/رمزگشایی SSL را به عهده دارد. این بدان معناست که Termination Proxy (Nginx) اتصالات TLS ورودی (HTTPS) را پردازش و رمزگشایی می کند و درخواست های رمزگذاری نشده را به سرویس داخلی (Odoo) منتقل می کند. ترافیک بین Nginx و Odoo رمزگذاری نمی شود (HTTP). استفاده از یک پروکسی معکوس مزایای زیادی مانند Load Balancing ، خاتمه SSL ، ذخیره سازی ، فشرده سازی ، ارائه محتوای استاتیک و موارد دیگر را به شما می دهد. قبل از ادامه این بخش اطمینان حاصل کنید که پیش نیازهای زیر را رعایت کرده اید:

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

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

sudo nano /etc/nginx/conf.d/example.com

کانفیگ زیر تنظیم 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;

    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 odoo13

در این مرحله ، پروکسی معکوس کانفیگ شده است و می توانید به نمونه 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 odoo13

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

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

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

  • تعداد نظری حداکثر فعالیت ها = (system_cpus * 2) + 1
  • ۱ فعالیت می تواند تقریبا ۶ کاربر همزمان ارائه دهد.
  • فعالیت کرون نیز به 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 و ۸ گیگابایت حافظه RAM و ۳۰ کاربر همزمان Odoo هستید.

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

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

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

محاسبه نشان می دهد که نصب 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 odoo13

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

جمع بندی :

در این آموزش شما را با نحوه نصب Odoo 13 در CentOS 8 در یک محیط مجازی Python با استفاده از Nginx به عنوان یک پروکسی معکوس راهنمایی کردیم. ما همچنین نحوه فعال سازی چند پردازشی و بهینه سازی Odoo 13 را برای محیط تولید به شما نشان دادیم.

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

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