Skip to main content
هناك بعض الاختلافات بين بيئة التطوير وبيئة الإنتاج إذا أردت إعداد Sandbox Compiles لبيئة التطوير. وهناك 3 أمور عليك الانتباه إليها:
  • مشكلة أذونات الملفات
  • مشاركة وحدة التخزين (Volume) بين history-v1 و filestore
  • مشكلة المجلدات الفرعية

تفعيل Sandbox Compiles

هنا، نحتاج فقط إلى تفعيل Sandbox Compiles كما نفعل في overleaf ce. لكن علينا الانتباه إلى المستخدم فقط، وهنا نضبطه على root. في بيئة الإنتاج، نستخدم www-data كمستخدم مشترك بين حاوية overleaf وحاوية ترجمة tex. أما في بيئة التطوير، فإن node هو المستخدم الافتراضي في الحاوية، ولا يوجد مستخدم www-data للربط به. لذلك نستخدم root كحل بديل.
يُرجى عدم استخدام صورة قمت ببنائها بنفسك، فقد تواجه سلسلة من الأخطاء.

إصلاح أذونات الملفات

يعمل LaTeX في الحاويات الشقيقة بصلاحيات المستخدم المحدد في متغير البيئة TEXLIVE_IMAGE_USER. وفي المثال أعلاه، تم ضبطه على root الذي يملك uid 0. ويسبب ذلك مشكلة مع الأذونات المذكورة أعلاه، إذ لا يملك المستخدم root إذن الكتابة في المجلدات الفرعية لـ compiles. يتمثل الحل السريع في منح المجموعة root ملكية compiles وأذونات القراءة والكتابة عليه، مع ضبط setgid بحيث ترث المجلدات الفرعية الجديدة هذه الملكية أيضًا:
bash
للاطلاع على التوثيق التفصيلي، يمكنك مراجعة services/clsi/README.md.

مشاركة وحدة التخزين (Volume) بين history-v1 و filestore

افتراضيًا، تعمل filestore كجسر بين s3 والخدمات الأخرى في overleaf. لكن في overleaf ce أو server pro، تُخزَّن جميع الملفات محليًا بشكل افتراضي. ولذلك اعتمدت overleaf طريقة ملتوية جدًا.
server-ce/config/settings.js
وفي الوقت نفسه، تستخدم خدمة history أيضًا المجلد data/history. وبهذه الطريقة، يمكن للخدمات المصغّرة المختلفة مشاركة البيانات نفسها. عليك إضافة وحدة التخزين history-v1-buckets إلى خدمة filestore في بيئة التطوير. وإلا، فلن تتمكن clsi من سحب ملفات blob من خدمة filestore.
develop/docker-compose.yml
كما تحتاج إلى إضافة اسم BUCKET إلى إعدادات dev.env:
develop/dev.env

استخدام المجلدات الفرعية

تستخدم filestore الخيار useSubdirectories بقيمة true افتراضيًا، لكن في بيئة التطوير، ستقوم history v1 بتسطيح جميع البيانات. ويسبب ذلك بعض التعارض. ولإصلاح ذلك، عليك إضافة ما يلي:
develop/dev.env
في history v1، تُخزَّن جميع ملفات project_blobs في الأصل بهذا الشكل:
عليك ضبط useSubdirectories على true لتغييرها إلى وضع المجلدات الفرعية. وعندها سيُستبدل الحرف _ الأصلي في blob بالحرف /.
آخر تعديل في ٥ أكتوبر ٢٠٢٦