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

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

سعیده مهاجری

Odoo 14 یک مجموعه محبوب و اپن سورس از برنامه های تجاری است که به شرکت ها برای مدیریت و اداره تجارت خود کمک می کند. این شامل طیف گسترده ای از برنامه ها مانند CRM ، وب سایت ، تجارت الکترونیکی ، صورتحساب ، حسابداری ، تولید ، warehouse، مدیریت پروژه ، inventory و موارد دیگر را ارائه می دهد  که همگی بصورت یکپارچه تلفیق شده اند . بسته به نوع استفاده و فناوری های موجود ، Odoo به روش های مختلف قابل نصب است. ساده ترین و سریع ترین راه برای نصب آن استفاده از مخازن رسمی Odoo APT است. نصب Odoo در یک محیط مجازی یا استقرار به عنوان یک Docker container ، به شما امکان کنترل بیشتر برنامه را می دهد و به شما امکان می دهد چندین نمونه Odoo را در همان سیستم اجرا کنید . در این مقاله نحوه نصب Odoo 14 روی CentOS 8 توضیح خواهیم داد . آن را از مخزن رسمی GitHub دانلود کنید و از Nginx به عنوان reverse proxy استفاده کنید .

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

Odoo در Python نوشته شده است. اولین قدم نصب Python 3 ، Git ، pip و همه libraries و ابزارهای مورد نیاز برای ساخت Odoo از منبع است:

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

ایجاد System User :

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

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

شما می توانید نام کاربر را هرچه دوست دارید ، بگذارید. فقط مطمئن شوید که یک کاربر PostgreSQL با همین نام ایجاد کرده اید.

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

Odoo از PostgreSQL به عنوان database back-end استفاده می کند. PostgreSQL 12 را از مخازن استاندارد CentOS 8 نصب کنید:

sudo dnf install @postgresql:12

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

sudo postgresql-setup initdb

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

sudo systemctl enable --now postgresql

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

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

نصب Wkhtmltopdf :

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

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

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

Odoo را از source inside یک محیط مجازی Python جداگانه نصب کنید.ابتدا user را به “odoo14” تغییر دهید:

sudo su - odoo14

کد منبع Odoo 14 را از مخزن Odoo GitHub شبیه سازی کنید:

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

به فهرست / opt / odoo14 بروید و یک محیط مجازی جدید Python برای نصب Odoo  ایجاد کنید:

cd /opt/odoo14python3 -m venv venv

با استفاده از دستور   environment ، source را فعال کنید:

source venv/bin/activate

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

pip3 install -r odoo/requirements.txt

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

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

deactivate

برای custom addons یک فهرست جدید ایجاد کنید:

mkdir /opt/odoo14/odoo-custom-addons

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

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

exit

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

sudo nano /etc/odoo14.conf
[options]
admin_passwd = superadmin_passwd
db_host = False
db_port = False
db_user = odoo14
db_password = False
addons_path = /opt/odoo14/odoo/addons, /opt/odoo14/odoo-custom-addons

ذخیره کنید و فایل را ببندید.

فراموش نکنید که superadmin_passwd را به something امن تر تغییر دهید.

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

ویرایشگر متن خود را باز کنید و یک فایل service 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/venv/bin/python3 /opt/odoo14/odoo/odoo-bin -c /etc/odoo14.conf
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target

به systemd اطلاع دهید که یک فایل new unit وجود دارد:

sudo systemctl daemon-reload

سرویس Odoo را شروع کرده و فعال کنید:

sudo systemctl enable --now odoo14

بررسی کنید که Odoo با دستور زیر اجرا شود:

sudo systemctl status odoo14

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

odoo14.service - Odoo14
   Loaded: loaded (/etc/systemd/system/odoo14.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-11-02 20:12:24 UTC; 3s ago

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

sudo journalctl -u odoo14

نصب را امتحان کنید :

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

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

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

رمزگذاری نخواهد شد .

استفاده از reverse proxy مزایای زیادی مانند Load Balancing ، خاتمه SSL ، ذخیره سازی ، فشرده سازی ، ارائه محتوای استاتیک و موارد دیگر به شما می دهد.

قبل از ادامه این بخش ، اطمینان حاصل کنید که پیش نیازهای زیر را رعایت کرده اید:

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

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

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

فراموش نکنید که 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 در CentOS 8 در یک محیط مجازی Python با استفاده از Nginx به عنوان یک reverse proxy راهنمایی کردیم . ما همچنین به شما نشان دادیم که چگونه چندین پردازش را فعال کنید و Odoo را برای یک محیط تولید بهینه کنید.

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

 

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