ذكري المظهر

كيفية نشر odoo 11 على أوبونتو 18.04

apt VS apt-get والفرق بينهما

apt VS apt-get والفرق بينهما

جدول المحتويات:

Anonim

Odoo هو برنامج الأعمال الأكثر شعبية الكل في واحد في العالم. إنه يوفر مجموعة من تطبيقات الأعمال بما في ذلك CRM ، والموقع الإلكتروني ، والتجارة الإلكترونية ، وإعداد الفواتير ، والمحاسبة ، والتصنيع ، والمستودعات ، وإدارة المشاريع ، والمخزون ، وأكثر من ذلك بكثير ، كلها متكاملة.

هناك عدة طرق لتثبيت Odoo اعتمادًا على حالة الاستخدام المطلوبة. إن أسهل وأسرع طريقة لتثبيت Odoo هي باستخدام مستودعات APT الرسمية الخاصة بهم.

يغطي هذا الدليل الخطوات اللازمة لتثبيت وتكوين Odoo للإنتاج باستخدام Git source وبيئة Python الافتراضية على نظام Ubuntu 18.04.

قبل ان تبدأ

قم بتسجيل الدخول إلى جهاز Ubuntu الخاص بك كمستخدم sudo وقم بتحديث النظام إلى أحدث الحزم:

sudo apt update && sudo apt upgrade

تثبيت Git و Pip و Node.js والأدوات اللازمة لبناء تبعيات Odoo:

sudo apt install git python3-pip build-essential wget python3-dev python3-venv python3-wheel libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-setuptools node-less

إنشاء مستخدم Odoo

قم بإنشاء مستخدم نظام جديد ومجموعة باستخدام الدليل الرئيسي /opt/odoo الذي سيتم تشغيل خدمة Odoo.

sudo useradd -m -d /opt/odoo -U -r -s /bin/bash odoo يمكنك تسمية المستخدم ما تريد ، فقط تأكد من إنشاء مستخدم postgres بنفس الاسم.

تثبيت وتكوين بوستجرس

قم بتثبيت حزمة PostgreSQL من مستودعات أوبونتو الافتراضية:

sudo apt install postgresql

بمجرد اكتمال التثبيت ، قم بإنشاء مستخدم PostgreSQL بنفس اسم مستخدم النظام الذي تم إنشاؤه مسبقًا ، في حالتنا odoo :

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

تثبيت Wkhtmltopdf

توفر حزمة wkhtmltox مجموعة من أدوات سطر الأوامر مفتوحة المصدر والتي يمكن أن تجعل HTML في PDF وتنسيقات الصور المختلفة. من أجل طباعة تقارير PDF ، ستحتاج إلى أداة wkhtmltopdf . الإصدار الموصى به لـ Odoo هو 0.12.1 وهو غير متوفر في مستودعات Ubuntu 18.04 الرسمية.

قم بتنزيل الحزمة باستخدام الأمر wget التالي:

wget

بمجرد اكتمال التنزيل ، قم بتثبيت الحزمة عن طريق الكتابة:

sudo apt install./wkhtmltox_0.12.1.3-1~bionic_amd64.deb

تثبيت وتكوين Odoo

سنقوم بتثبيت Odoo من مستودع GitHub داخل بيئة Python افتراضية معزولة حتى نتمكن من التحكم بشكل أكبر في الإصدارات والتحديثات.

قبل البدء في عملية التثبيت ، تأكد من التبديل إلى مستخدم odoo .

sudo su - odoo

لتأكيد تسجيل دخولك كمستخدم odoo يمكنك استخدام الأمر التالي:

whoami

الآن يمكننا أن نبدأ مع عملية التثبيت. أولاً استنساخ odoo من مستودع GitHub:

git clone https://www.github.com/odoo/odoo --depth 1 --branch 11.0 /opt/odoo/odoo11

  • إذا كنت تريد تثبيت إصدار Odoo مختلف ، فما عليك سوى تغيير رقم الإصدار بعد --branch الامتياز. يمكنك تسمية الدليل كما تريد ، على سبيل المثال بدلاً من odoo11 يمكنك استخدام اسم المجال الخاص بك.

لإنشاء بيئة افتراضية جديدة لتشغيل مثيل Odoo 11:

cd /opt/odoo python3 -m venv odoo11-venv

قم بتنشيط البيئة باستخدام الأمر التالي:

source odoo11-venv/bin/activate

وتثبيت جميع وحدات بيثون المطلوبة مع pip3:

pip3 install wheel pip3 install -r odoo11/requirements.txt

pip3 هي أداة لتثبيت وإدارة حزم Python.

بمجرد اكتمال التثبيت ، قم بإلغاء تنشيط البيئة والعودة إلى مستخدم sudo الخاص بك باستخدام الأوامر التالية:

deactivate

exit

sudo mkdir /opt/odoo/odoo11-custom-addons sudo chown odoo: /opt/odoo/odoo11-custom-addons

بعد ذلك ، نحتاج إلى إنشاء ملف تكوين ، يمكننا إما إنشاء ملف جديد من البداية أو نسخ ملف التكوين المضمّن:

sudo cp /opt/odoo/odoo11/debian/odoo.conf /etc/odoo11.conf

افتح الملف وقم بتحريره كما يلي:

/etc/odoo11.conf

; This is the password that allows database operations: admin_passwd = my_admin_passwd db_host = False db_port = False db_user = odoo db_password = False addons_path = /opt/odoo/odoo11/addons; If you are using custom modules; addons_path = /opt/odoo/odoo11/addons, /opt/odoo/odoo11-custom-addons لا تنسَ تغيير my_admin_passwd إلى شيء أكثر أمانًا وضبط addons_path إذا كنت تستخدم وحدات نمطية مخصصة.

إنشاء ملف وحدة systemd

لتشغيل odoo كخدمة سنقوم بإنشاء ملف وحدة خدمة odoo11.service في /etc/systemd/system/ directory بالمحتويات التالية:

/etc/systemd/system/odoo11.service

Description=Odoo11 Requires=postgresql.service After=network.target postgresql.service Type=simple SyslogIdentifier=odoo11 PermissionsStartOnly=true User=odoo Group=odoo ExecStart=/opt/odoo/odoo11-venv/bin/python3 /opt/odoo/odoo11/odoo-bin -c /etc/odoo11.conf StandardOutput=journal+console WantedBy=multi-user.target

أخبر systemd بأننا أنشأنا ملف وحدة جديدًا وبدء تشغيل خدمة Odoo عن طريق تنفيذ:

sudo systemctl daemon-reload sudo systemctl start odoo11

يمكنك التحقق من حالة الخدمة باستخدام الأمر التالي:

sudo systemctl status odoo11

● odoo11.service - Odoo11 Loaded: loaded (/etc/systemd/system/odoo11.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2018-05-03 21:23:08 UTC; 3s ago Main PID: 18351 (python3) Tasks: 4 (limit: 507) CGroup: /system.slice/odoo11.service └─18351 /opt/odoo/odoo11-venv/bin/python3 /opt/odoo/odoo11/odoo-bin -c /etc/odoo11.conf

وفي حالة عدم وجود أخطاء ، يمكنك تمكين تشغيل خدمة Odoo تلقائيًا في وقت التمهيد:

sudo systemctl enable odoo11

sudo journalctl -u odoo11

اختبار التثبيت

افتح متصفحك واكتب: http://:8069 http://:8069

على افتراض نجاح التثبيت ، ستظهر شاشة مشابهة للشاشة التالية:

قم بتكوين Nginx كوكيل إنهاء SSL

  • لديك اسم مجال يشير إلى خادم IP العام الخاص بك. في هذا البرنامج التعليمي ، سنستخدم example.com . لديك تثبيت Nginx باتباع هذه التعليمات. لديك شهادة SSL مثبتة لنطاقك. يمكنك تثبيت شهادة Let's Encrypt SSL المجانية من خلال اتباع هذه التعليمات.

خادم الويب الافتراضي Odoo يقدم حركة مرور عبر HTTP. لجعل نشر Odoo أكثر أمانًا ، سنقوم بتهيئة Nginx كبديل لإنهاء طبقة المقابس الآمنة (SSL) والذي سيخدم حركة المرور عبر

وكيل إنهاء SSL هو خادم وكيل يعالج تشفير / فك تشفير SSL. هذا يعني أن وكيل الإنهاء لدينا (Nginx) سيقوم بمعالجة وفك تشفير اتصالات TLS الواردة (HTTPS) ، وسوف ينقل الطلبات غير المشفرة إلى خدمتنا الداخلية (Odoo) وبالتالي لن يتم تشفير حركة المرور بين Nginx و Odoo (HTTP).

نحتاج إلى إخبار Odoo بأننا سنستخدم وكيلًا ، وفتح ملف التكوين وإضافة السطر التالي:

/etc/odoo11.conf

proxy_mode = True

أعد تشغيل خدمة Odoo لتصبح التغييرات نافذة المفعول:

sudo systemctl restart odoo11

باستخدام Nginx كوكيل تعطينا العديد من الفوائد. في هذا المثال ، سنقوم بتهيئة SSL Termination ، HTTP لإعادة توجيه HTTPS ، WWW إلى إعادة توجيه غير WWW ، تخزين مؤقت للملفات الثابتة وتمكين ضغط GZip.

/etc/nginx/sites-enabled/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; # 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 إلى المنفذ 8069 على جميع الواجهات ، لذلك إذا كنت ترغب في تعطيل الوصول المباشر إلى مثيل Odoo الخاص بك ، يمكنك إما حظر المنفذ 8069 لجميع الواجهات العامة أو إجبار Odoo على الاستماع فقط على الواجهة المحلية.

في هذا الدليل ، سنجبر Odoo على الاستماع فقط على 127.0.0.1 ، افتح تكوين Odoo أضف السطرين التاليين في نهاية الملف:

/etc/odoo11.conf

xmlrpc_interface = 127.0.0.1 netrpc_interface = 127.0.0.1

احفظ ملف التكوين وأعد تشغيل خادم Odoo لتصبح التغييرات نافذة المفعول:

sudo systemctl restart odoo

تمكين المعالجة المتعددة

بشكل افتراضي ، تعمل Odoo في وضع multithreading. بالنسبة لعمليات نشر الإنتاج ، يوصى بالتبديل إلى خادم المعالجة المتعددة لأنه يزيد من الاستقرار ، ويستخدم موارد النظام بشكل أفضل. لتمكين المعالجة المتعددة ، نحتاج إلى تعديل تكوين Odoo وتعيين عدد غير صفري من العمليات المنفذة.

يتم حساب عدد العمال بناءً على عدد مراكز وحدة المعالجة المركزية في النظام وذاكرة RAM المتوفرة.

وفقًا لوثائق Odoo الرسمية لحساب عدد العاملين وحجم ذاكرة RAM المطلوبة ، سنستخدم الصيغ والافتراضات التالية:

حساب عدد العمال

  • العدد الأقصى النظري للعامل = (system_cpus * 2) + 11 عامل يمكن أن يخدم ~ = 6 مستخدمين متزامنين يتطلب عاملون كرون أيضًا وحدة المعالجة المركزية

ذاكرة الوصول العشوائي حجم الحساب

  • سوف نعتبر أن 20 ٪ من جميع الطلبات هي طلبات ثقيلة ، في حين أن 80 ٪ منها أخف وزنا. تستخدم الطلبات الثقيلة حوالي 1 غيغابايت من ذاكرة الوصول العشوائي بينما تستخدم الطلبات الأخف حوالي 150 ميغابايت من RAMNeeded RAM = number_of_workers * ((light_worker_ratio * light_worker_ram_estimation) + ((heavy_worker_ratio * heavy_worker_ram_estimation))

grep -c ^processor /proc/cpuinfo

دعنا نقول أن لدينا نظامًا مزودًا بـ 4 مراكز وحدة معالجة مركزية وذاكرة وصول عشوائي سعة 8 جيجابايت و 30 مستخدمًا متزامنًا لـ Odoo.

  • 30 users / 6 = **5** (5 هو العدد النظري للعمال المطلوبين) (4 * 2) + 1 = **9** (9 هو العدد الأقصى النظري للعاملين)

استنادًا إلى الحساب أعلاه ، يمكننا استخدام 5 عمال + عامل واحد لعامل cron وهو ما مجموعه 6 عمال.

حساب استهلاك ذاكرة RAM بناءً على عدد العمال:

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

يوضح الحساب أعلاه أن تثبيت Odoo سيحتاج إلى حوالي 2 جيجابايت من ذاكرة الوصول العشوائي.

للتبديل إلى وضع المعالجة المتعددة ، افتح ملف التكوين وإلحاق الأسطر التالية:

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

سيتم استخدام بقية موارد النظام بواسطة الخدمات الأخرى التي تعمل على الجهاز لدينا. في هذا الدليل ، قمنا بتثبيت Odoo جنبًا إلى جنب مع PostgreSQL و Nginx على نفس الخادم ووفقًا لإعدادك ، فقد يكون لديك أيضًا خدمات أخرى تعمل على الخادم الخاص بك.

استنتاج

هذا هو! مررتك هذه الدورة التعليمية عبر تثبيت Odoo 11 على Ubuntu 18.04 في بيئة بيثون الافتراضية باستخدام Nginx كوكيل عكسي. لقد تعلمت أيضًا كيفية تمكين المعالجة المتعددة وتحسين Odoo لبيئة الإنتاج. قد ترغب أيضًا في مراجعة البرنامج التعليمي الخاص بنا حول كيفية إنشاء نسخ احتياطية تلقائية يومية لقواعد بيانات Odoo.

أوبونتو odoo postgresql بيثون pip nginx الوكيل SSL