apt VS apt-get والفرق بينهما
جدول المحتويات:
- قبل ان تبدأ
- إنشاء مستخدم Odoo
- تثبيت وتكوين بوستجرس
- تثبيت Wkhtmltopdf
- تثبيت وتكوين Odoo
- إنشاء ملف وحدة systemd
- اختبار التثبيت
- قم بتكوين Nginx كوكيل إنهاء SSL
- تغيير واجهة الربط
- تمكين المعالجة المتعددة
- استنتاج
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 بالمحتويات التالية:
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
اختبار التثبيت
افتح متصفحك واكتب:
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 باستخدام:
تغيير واجهة الربط
هذه الخطوة اختيارية ، لكنها ممارسة أمنية جيدة. بشكل افتراضي ، يستمع خادم Odoo إلى المنفذ 8069 على جميع الواجهات ، لذلك إذا كنت ترغب في تعطيل الوصول المباشر إلى مثيل Odoo الخاص بك ، يمكنك إما حظر المنفذ 8069 لجميع الواجهات العامة أو إجبار Odoo على الاستماع فقط على الواجهة المحلية.
في هذا الدليل ، سنجبر Odoo على الاستماع فقط على
127.0.0.1
، افتح تكوين Odoo أضف السطرين التاليين في نهاية الملف:
xmlrpc_interface = 127.0.0.1 netrpc_interface = 127.0.0.1
احفظ ملف التكوين وأعد تشغيل خادم 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كيفية نشر odoo 12 على أوبونتو 18.04
يغطي هذا البرنامج التعليمي الخطوات المطلوبة لتثبيت وتكوين Odoo 12 للإنتاج باستخدام مصدر Git وبيئة Python الافتراضية على نظام Ubuntu 18.04.
كيفية نشر rocket.chat على أوبونتو 18.04
Rocket.Chat عبارة عن منصة اتصالات مفتوحة المصدر ، وهي بديل بديل لـ Slack. Rocket.Chat هو الحل الأمثل للشركات والمجتمعات التي ترغب في استضافة نظام الدردشة الخاص بها.
كيفية نشر المسألة على أوبونتو 18.04
يجلب Mattermost جميع اتصالات فريقك إلى مكان واحد ويوفر العديد من الميزات بما في ذلك مشاركة الملفات ورسائل فردية وجماعية ورموز تعبيرية مخصصة ومكالمات فيديو والمزيد.







