الحاويات¶
نظرة عامة¶
يتم عزل كل بناء داخل الحاوية الخاصة به (حاوية مساحة الاسم Linux).
الأساس هو نظام Ubuntu، حيث يتم تثبيت كافة التبعيات المطلوبة في أودو، بالإضافة إلى الحزم المفيدة الشائعة.
إذا كان مشروعك يتطلب تبعيات إضافية لـ Python، أو إصدارات أحدث، فيمكنك تحديد ملف requirements.txt في جذر فروعك التي تدرجها. ستقوم المنصة بتثبيت تلك التبعيات في حاوياتك. يمكن أن تساعدك محددات متطلبات pip على كتابة ملف requirements.txt. لرؤية مثال ملموس، ألقِ نظرة على ملف requirements.txt الخاص بأودو.
يتم أيضاً اعتبار ملفات requirements.txt الخاصة بالتطبيقات الفرعية. تبحث المنصة عن ملفات requirements.txt في كل مجلد يحتوي على تطبيقات أودو: ليس في مجلد التطبيق نفسه، ولكن في المجلد الأصلي الخاص به.
بنية الدليل¶
بما أن الحاويات تعتمد على نظام Ubuntu، فإن بنية الدليل الخاصة بها تتبع معيار التسلسل الهرمي لنظام ملفات Linux. نظرة عامة على شجرة نظام ملفات Ubuntu تشرح الدلائل الرئيسية.
فيما يلي دلائل Odoo.sh ذات الصلة:
.
├── home
│ └── odoo
│ ├── src
│ │ ├── odoo Odoo Community source code
│ │ │ └── odoo-bin Odoo server executable
│ │ ├── enterprise Odoo Enterprise source code
│ │ ├── themes Odoo Themes source code
│ │ └── user Your repository branch source code
│ ├── data
│ │ ├── filestore database attachments, as well as the files of binary fields
│ │ └── sessions visitors and users sessions
│ └── logs
│ ├── install.log Database installation logs
│ ├── odoo.log Running server logs
│ ├── update.log Database updates logs
│ └── pip.log Python packages installation logs
└── usr
├── lib
│ ├── python2.7
│ └── dist-packages Python 2.7 standard libraries
│ ├── python3
│ └── dist-packages Python 3 standard libraries
│ └── python3.5
│ └── dist-packages Python 3.5 standard libraries
├── local
│ └── lib
│ ├── python2.7
│ │ └── dist-packages Python 2.7 third-party libraries
│ └── python3.5
│ └── dist-packages Python 3.5 third-party libraries
└── usr
└── bin
├── python2.7 Python 2.7 executable
└── python3.5 Python 3.5 executable
تم تثبيت كل من Python 2.7 و3.5 في الحاويات، ولكن:
إذا تمت تهيئة مشروعك لاستخدام أودو 10.0، فسيعمل خادم أودو مع Python 2.7.
إذا تمت تهيئة مشروعك لاستخدام أودو 11.0 أو أعلى، فسيعمل خادم أودو مع Python 3.5.
shell قاعدة البيانات¶
عند الوصول إلى حاوية باستخدام shell، يمكنك الوصول إلى قاعدة البيانات عن طريق psql.
odoo@odoo-addons-master-1.odoo.sh:~$ psql
psql (9.5.2, server 9.5.11)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.
odoo-addons-master-1=>
كن حذراً! استخدم المعاملات (BEGIN...COMMIT/ROLLBACK) لكل بيانات sql * التي تؤدي إلى تغييرات (*UPDATE، DELETE، ALTER، ...)، خاصة لقاعدة بيانات الإنتاج الخاصة بك.
آلية المعاملة هي شبكة الأمان الخاصة بك في حالة وقوع خطأ. كل ما عليك فعله هو التراجع عن تغييراتك لإعادة قاعدة بياناتك إلى حالتها السابقة.
على سبيل المثال، قد يحدث أنك نسيت تعيين شرط WHERE.
odoo-addons-master-1=> BEGIN;
BEGIN
odoo-addons-master-1=> UPDATE res_users SET password = '***';
UPDATE 457
odoo-addons-master-1=> ROLLBACK;
ROLLBACK
في مثل هذه الحالة، يمكنك العودة للتراجع عن التغييرات غير المرغوب بها التي قمت بها عن طريق الخطأ، وإعادة الكتابة:
odoo-addons-master-1=> BEGIN;
BEGIN
odoo-addons-master-1=> UPDATE res_users SET password = '***' WHERE id = 1;
UPDATE 1
odoo-addons-master-1=> COMMIT;
COMMIT
ومع ذلك، لا تنس الالتزام بمعاملتك أو التراجع عنها بعد الانتهاء منها. قد تؤدي المعاملات المفتوحة إلى قفل السجلات في جداولك وقد تضطر قاعدة بياناتك الجارية إلى الانتظار حتى يتم إصدارها. يمكن أن يتسبب ذلك في تعليق الخادم إلى أجل غير مسمى.
بالإضافة إلى ذلك، عندما يكون ذلك ممكناً، استخدم قواعد بياناتك التجريبية لاختبار بياناتك أولاً. يمنحك ذلك شبكة أمان إضافية.
تشغيل خادم أودو¶
يمكنك بدء مثيل خادم أودو من shell الحاوية. لن تتمكن من الوصول إليه من الخارج باستخدام المتصفح، ولكن يمكنك على سبيل المثال:
استخدم shell أودو،
$ odoo-bin shell
>>> partner = env['res.partner'].search([('email', '=', 'asusteK@yourcompany.example.com')], limit=1)
>>> partner.name
'ASUSTeK'
>>> partner.name = 'Odoo'
>>> env['res.partner'].search([('email', '=', 'asusteK@yourcompany.example.com')], limit=1).name
'Odoo'
قم بتثبيت تطبيق،
$ odoo-bin -i sale --without-demo=all --stop-after-init
قم بتحديث تطبيق،
$ odoo-bin -u sale --stop-after-init
أجرِ الاختبارات على التطبيق،
$ odoo-bin -i sale --test-enable --log-level=test --stop-after-init
في الأوامر أعلاه، الوسيط:
--without-demo=allيمنع البيانات التجريبية من أن يتم تحميلها لكافة التطبيقات--stop-after-initسوف يقوم بإيقاف تشغيل مثيل الخادم على الفور بعد إكمال العمليات التي طلبتها.
ستجد المزيد من الخيارات المتاحة والموضحة في وثائق CLI.
ستجد في السجلات (~/logs/odoo.log) مسار الوظائف الإضافية المستخدم من قِبَل Odoo.sh لتشغيل الخادم الخاص بك. ابحث عن "أودو: مسارات الوظائف الإضافية":
2018-02-19 10:51:39,267 4 INFO ? odoo: Odoo version 18.0
2018-02-19 10:51:39,268 4 INFO ? odoo: Using configuration file at /home/odoo/.config/odoo/odoo.conf
2018-02-19 10:51:39,268 4 INFO ? odoo: addons paths: ['/home/odoo/data/addons/18.0', '/home/odoo/src/user', '/home/odoo/src/enterprise', '/home/odoo/src/themes', '/home/odoo/src/odoo/addons', '/home/odoo/src/odoo/odoo/addons']
كن حذراً، خاصة فيما يتعلق بقاعدة بيانات الإنتاج لديك. العمليات التي تقوم بها عند تشغيل مثيل خادم أودو ليست معزولة: ستكون التغييرات سارية وفعالة في قاعدة البيانات. قم دائماً بإجراء اختباراتك في قواعد بياناتك التجريبية.
تصحيح الأخطاء في Odoo.sh¶
لا تختلف عملية تصحيح الأخطاء لإصدار Odoo.sh في الواقع عن تطبيق Python آخر. تشرح هذه المقالة فقط خصوصيات وقيود منصة Odoo.sh، وتفترض أنك تعرف بالفعل كيفية استخدام أداة تصحيح الأخطاء.
ملاحظة
إذا كنت لا تعرف كيفية تصحيح أخطاء تطبيق Python حتى الآن، فهناك العديد من الدورات التدريبية التمهيدية التي يمكن العثور عليها بسهولة على الإنترنت.
يمكنك استخدام pdb أو pudb أو ipdb لتصحيح الكود الخاص بك على Odoo.sh. نظراً لأن الخادم يتم تشغيله خارج shell، فلا يمكنك تشغيل أداة تصحيح الأخطاء مباشرة من الواجهة الخلفية لمثيل أودو الخاص بك، حيث تحتاج أداة تصحيح الأخطاء إلى shell لتعمل.
pdb مثبت في كل حاوية.
إذا كنت ترغب في تثبيت pudb أو ipdb عليك تثبيته أولاً.
للقيام بذلك، لديك خياران:
مؤقَّت (فقط في البنية الحالية):
$ pip install pudb --user
أو
$ pip install ipdb --user
دائم: قم بإضافة
pudbأوipdbإلى ملفrequirements.txtلمشروعك.
ثم قم بتحرير الكود الذي ترغب في تشغيل أداة تصحيح الأخطاء فيه وأضف ما يلي:
import sys
if sys.__stdin__.isatty():
import pdb; pdb.set_trace()
الشرط sys.__stdin__.isatty() هو عبارة عن وسيلة لاكتشاف ما إذا كنت تقوم بتشغيل أودو من shell.
احفظ الملف ثم قم بتشغيل shell أودو:
$ odoo-bin shell
وأخيراً، عن طريق Shell أودو، يمكنك تشغيل الجزء من الكود/الوظيفة/الطريقة التي تريد تصحيح الأخطاء فيها.