وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

Odoo 13 را روی CentOS 8 نصب کنید

0 9
زمان لازم برای مطالعه: 7 دقیقه



Odoo محبوب ترین نرم افزار تجاری همه در یک در جهان است. طیف وسیعی از کاربردهای تجاری از جمله CRM، وب‌سایت، تجارت الکترونیک، صورت‌حساب، حسابداری، تولید، انبار، مدیریت پروژه، موجودی و موارد دیگر را ارائه می‌دهد که همه به‌طور یکپارچه یکپارچه شده‌اند.

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

پیش نیازها

برای تکمیل نصب باید به عنوان root یا کاربر با امتیازات sudo وارد شوید.

نصب Dependencies

پایتون 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 که سرویس Odoo را اجرا می کند:

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

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

نصب و پیکربندی PostgreSQL

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

sudo dnf install @postgresql:10

پس از اتمام نصب، یک خوشه پایگاه داده PostgreSQL جدید ایجاد کنید:

sudo postgresql-setup initdb

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

sudo systemctl enable --now postgresql

یک کاربر PostgreSQL با همان نام کاربر سیستمی که قبلا ایجاد شده ایجاد کنید، در مورد ما “odoo13” است:

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

نصب Wkhtmltopdf

این wkhtmltox بسته مجموعه ای از منبع باز را ارائه می دهد command-line ابزارهایی که می توانند HTML را به PDF و فرمت های تصویری مختلف تبدیل کنند. برای چاپ گزارش های PDF، به این نیاز دارید wkhtmltopdf ابزار نسخه پیشنهادی برای Odoo است 0.12.5، که در مخازن رسمی CentOS 8 موجود نیست.

را نصب کنید rpm بسته از 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

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

sudo su - odoo13

با شبیه سازی کد منبع Odoo 13 از مخزن Odoo 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

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

pip3 install -r odoo/requirements.txt
اگر در حین نصب با خطاهای کامپایل مواجه شدید، مطمئن شوید که تمام وابستگی های مورد نیاز فهرست شده در Installing Dependencies بخش.

پس از اتمام نصب، محیط را غیرفعال کنید:

deactivate

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

mkdir /opt/odoo13/odoo-custom-addons

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

exit

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

sudo nano /etc/odoo13.conf
/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 به چیزی امن تر

ایجاد فایل Systemd Unit

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

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

محتوای زیر را بچسبانید:

/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

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

پیشنهاد می‌کنیم بخوانید:  راهنمای دیکشنری ها در پایتون

به Systemd اطلاع دهید که یک فایل واحد جدید وجود دارد:

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
           └─28539 /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

اگر نمی توانید به page، احتمالاً فایروال شما پورت را مسدود می کند 8069.

برای باز کردن پورت لازم از دستورات زیر استفاده کنید:

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

پیکربندی Nginx به عنوان پروکسی خاتمه SSL

وب سرور پیش‌فرض Odoo ترافیک را از طریق HTTP ارائه می‌کند. برای ایمن‌تر کردن استقرار Odoo، Nginx را به عنوان یک پروکسی خاتمه SSL پیکربندی می‌کنیم که به ترافیک از طریق HTTPS سرویس می‌دهد.

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

استفاده از یک پروکسی معکوس مزایای زیادی مانند Load Balancing، SSL Termination، Caching، فشرده سازی، ارائه محتوای ثابت و غیره به شما می دهد.

قبل از ادامه این بخش، مطمئن شوید که پیش نیازهای زیر را برآورده کرده اید:

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

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

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

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

/etc/nginx/conf.d/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;
    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 بگوییم که از پروکسی استفاده کند. برای انجام این کار، فایل پیکربندی را باز کرده و خط زیر را اضافه کنید:

/etc/odoo13.conf
proxy_mode = True

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

sudo systemctl restart odoo13

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

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

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

پیشنهاد می‌کنیم بخوانید:  آرگومان های با طول متغیر در پایتون با *args و **kwargs

به طور پیش فرض، سرور Odoo به پورت گوش می دهد 8069 در تمام رابط ها برای غیرفعال کردن دسترسی مستقیم به نمونه Odoo، می‌توانید پورت را مسدود کنید 8069 برای همه رابط های عمومی یا Odoo را مجبور کنید که فقط در رابط محلی گوش دهد.

ما Odoo را طوری پیکربندی می‌کنیم که فقط به آن گوش دهد 127.0.0.1. پیکربندی را باز کنید دو خط زیر را در انتهای فایل اضافه کنید:

/etc/odoo13.conf
xmlrpc_interface = 127.0.0.1
netrpc_interface = 127.0.0.1

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

sudo systemctl restart odoo13

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

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

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

به گفته این مقام مسئول اسناد Odoo
برای محاسبه تعداد کارگران و اندازه حافظه رم مورد نیاز می توانید از فرمول ها و مفروضات زیر استفاده کنید:

محاسبه تعداد کارگر

  • حداکثر نظری تعداد کارگر = (system_cpus * 2) + 1
  • 1 کارگر می تواند به ~= 6 کاربر همزمان سرویس دهد
  • کارگران Cron همچنین به CPU نیاز دارند

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

  • ما در نظر خواهیم گرفت که 20٪ از همه درخواست ها درخواست های سنگین و 80٪ درخواست های سبک تر هستند. درخواست های سنگین از حدود 1 گیگابایت رم استفاده می کنند در حالی که درخواست های سبک تر از 150 مگابایت رم استفاده می کنند.
  • رم مورد نیاز = number_of_workers * ( (light_worker_ratio * light_worker_ram_estimation) + (heavy_worker_ratio * heavy_worker_ram_estimation) )

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

grep -c ^processor /proc/cpuinfo

فرض کنید سیستمی با 4 هسته CPU، 8 گیگابایت حافظه رم و 30 کاربر همزمان Odoo دارید.

  • 30 users / 6 = **5** (5 تعداد تئوری کارگر مورد نیاز است)
  • (4 * 2) + 1 = **9** (9 حداکثر نظری تعداد کارگران است)

بر اساس محاسبات بالا می توانید از 5 کارگر + 1 کارگر برای cron worker استفاده کنید که در مجموع 6 کارگر می شود.

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

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

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

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

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

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

sudo systemctl restart odoo13

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

نتیجه

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

همچنین ممکن است بخواهید آموزش ما را در مورد روش ایجاد پشتیبان گیری روزانه خودکار از پایگاه داده های Odoo بررسی کنید.

اگر سوالی دارید، در زیر نظر دهید.

centos odoo postgresql
python
pip
برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-27 11:24:02

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید