التكوين

يمكن لمواقع Frappe مشاركة نفس خادم التطبيق، حيث يكون كل موقع خلف حلول وقواعد بيانات وتكوينات ومواقع مختلفة، بدقة متفاوتة عبر تكوين الموقع (Site Config) في Bench.

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

تكوين الموقع

يخزن site_config.json التكوين العام لموقع معين وهو موجود في دليل الموقع. يتم إنشاء الملف وملؤه تلقائيًا بواسطة Frappe. نظرًا لأن هذا يعتمد على Frappe، فقد تتغير الإعدادات أو السلوكيات الافتراضية أيضًا اعتمادًا على أي تحديثات.

{
  "db_name": "frappe_database_name",
  "db_password": "frappe_database_password",
  "admin_password": "admin_password"
}

ملاحظة: يُعتبر هذا الملف أنه يحتوي على معلومات مهمة تتعلق بحالة الموقع ويمكن أن يسبب مشاكل في حالة فقدان ملفات التكوين أو تلفها. يتم عمل نسخة احتياطية منه بشكل دوري مع نسخ قاعدة البيانات الاحتياطية في الإعدادات العادية.

التكوين المشترك للموقع

يخزن common_site_config.json التكوين المشترك بواسطة الـ Bench الخاص بك. الإجراءات التي يتم تنفيذها على مستوى Bench ترتبط عمومًا بهذا التكوين. قد تُستخدم مفاتيح التكوين المحددة لتغيير سلوك عمليات مستوى Bench أو تؤثر على جميع المواقع على الـ Bench الخاص بك، مع الأخذ في الاعتبار أولية قيمة التكوين.

يتم إنشاء وإدارة هذا الملف تلقائيًا بواسطة واجهة سطر أوامر Bench (Bench CLI). قد تؤثر التغييرات في هذا الملف على تغيير سلوك إعدادات Frappe الخاصة بك اعتمادًا على إعدادات النظام وإصدار Bench CLI.

{
  "background_workers": 1,
  "developer_mode": true,
  "dns_multitenant": true,
  "file_watcher_port": 6789,
  "frappe_user": "frappe",
  "gunicorn_workers": 2,
  "maintenance_mode": 0,
  "pause_scheduler": 0,
  "redis_cache": "redis://localhost:13000",
  "redis_cache_sentinel_enabled": 1,
  "redis_cache_sentinels": [
    "redis-cache-sentinel-1:26379",
    "redis-cache-sentinel-2:26379"
  ],
  "redis_cache_sentinel_password": "sentinelpassword",
  "redis_cache_master_service": "mymaster",
  "redis_cache_master_password": "masterpassword",
  "redis_queue": "redis://localhost:11000",
  "redis_queue_sentinel_enabled": 1,
  "redis_queue_sentinels": [
    "redis-queue-sentinel-1:26379",
    "redis-queue-sentinel-2:26379"
  ],
  "redis_queue_sentinel_password": "sentinelpassword",
  "redis_queue_master_service": "mymaster",
  "redis_queue_master_password": "masterpassword",
  "redis_socketio": "redis://localhost:12000",
  "scheduler_tick_interval": 120,
  "serve_default_site": true,
  "socketio_port": 9000,
  "webserver_port": 8000,
  "root_password": "MARIADB_PASSWORD",
  "live_reload": true
}

إعدادات اختيارية للـ Bench:

المفتاح الوصف
workers يسمح بإنشاء عمال مخصصين. المعامل background_workers اختياري، إذا لم يتم تعيينه، سيتم استخدام background_workers العام. مثال: "workers": { "custom_worker1": { "timeout": 5000, "background_workers": 4 } }. أعد توليد التكوين وأعد تشغيل العمليات لتفعيل التغيير.
rediscachesentinel_enabled إذا تم تعيينه إلى 1، يتصل بـ Redis Sentinel في إعداد الإنتاج.
rediscachesentinels مصفوفة من خوادم الـ Sentinel (المضيف/العنوان IP والمنافذ).
rediscachesentinel_password كلمة المرور للاتصال بـ Sentinels.
rediscachemaster_service خدمة Master للاتصال بها.
rediscachemaster_password كلمة مرور خادم Redis الرئيسي (Master).
redisqueuesentinel_enabled إذا تم تعيينه إلى 1، يتصل بـ Redis Sentinel في إعداد الإنتاج.
redisqueuesentinels مصفوفة من خوادم الـ Sentinel (المضيف/العنوان IP والمنافذ).
redisqueuesentinel_password كلمة المرور للاتصال بـ Sentinels.
redisqueuemaster_service خدمة Master للاتصال بها.
redisqueuemaster_password كلمة مرور خادم Redis الرئيسي (Master).

بالإضافة إلى ذلك، يمكنك تعيين أي مفاتيح ترغب في أن تكون متاحة لجميع المواقع.

أولية قيمة التكوين

ستكون القيمة لمفتاح معين تم تعيينه في site_config.json لها أولوية (precedence) على القيمة المعرفة في common_site_config.json. هذا يعني أنه قد يتم استخدام أزواج المفتاح والقيمة المحددة في التكوين المشترك كخيار احتياطي في بعض الحالات.

تخيل أنك تريد تمكين مسجل Frappe (Frappe Web Logger) على جميع المواقع على الـ Bench الخاص بك، باستثناء موقع واحد worker.frappe.xyz لأن لنفترض أنه موقع عالي النشاط ولا تحتاج إلى أن تغمرك الكثير من المعلومات في وقت واحد. يمكنك تعيين enable_frappe_logger كـ true في common_site_config.json وتعيينه على false في site_config.json الخاص بـ worker.frappe.xyz.

$ bench config set-common-config -c enable_frappe_logger true
$ bench --site worker.frappe.xyz set-config enable_frappe_logger false

وبالمثل، من الممكن أن يدعم خادم تطبيق واحد عددًا من المواقع، لكل منها موفر أو موقع مختلف لقاعدة البيانات. إذا اخترت نقل جميع المواقع على الـ Bench الخاص بك إلى خادم قاعدة بيانات آخر، فقد يكون التبديل بسيطًا مثل تحديث القيم في common_site_config.json الخاص بـ Bench.

مفاتيح التكوين القياسية

هذه بعض المفاتيح القياسية التي يستخدمها إطار عمل Frappe وBench.

الإعدادات الإلزامية

يتم تعيين هذه المفاتيح في site_config.json ويتم إنشاؤها تلقائيًا ما لم يتم توفير القيم أثناء إنشاء الموقع.

المفتاح الوصف
db_type نوع قاعدة البيانات. تشمل الخيارات "mariadb" و "postgres".
db_name اسم قاعدة البيانات (يُستخدم أيضًا كاسم مستخدم قاعدة البيانات الافتراضي).
db_password كلمة مرور قاعدة البيانات.

إعدادات اختيارية

المفتاح الوصف
admin_password كلمة المرور الافتراضية لمستخدم "Administrator" القياسي. سيتم استخدامها ككلمة مرور لمستخدم Administrator لجميع المواقع الجديدة.
allow_tests يسمح تعيين هذا بإجراء الاختبارات على هذا الموقع.
allow_cors يمكّن طلبات HTTP عبر المواقع. يمكن تعيينه إلى:
  • مصدر محدد، على سبيل المثال: "https://example.com"
  • قائمة أصول، على سبيل المثال: ["https://portal.example.com", "https://shop.example.com"]
  • حرف بدل: "*" (غير موصى به للاستخدام في الإنتاج)
allowed_referrers النطاقات المذكورة هنا سيُسمح لها بتجاوز CSRF إذا كانت هي المرجع (referer) أو الأصل (origin) لطلب.
backupencryptionkey المفتاح المستخدم لتشفير/فك تشفير النسخ الاحتياطية.
dataimportbatch_size حجم الدفعة لاستيراد البيانات.
db_user بدءًا من الإصدار v16، حدد اسم مستخدم منفصل لقاعدة البيانات.
denymultiplelogins يمنع المستخدمين من امتلاك أكثر من جلسة نشطة واحدة.
denymultiplesessions رفض الجلسات المتعددة.
developer_mode إذا تم تعيين وضع المطور، يتم تحديث تغييرات نوع المستند تلقائيًا في الملفات.
disable_async يعطل عميل socket.io؛ يتوقف العميل عن استطلاع خادم socket.io.
disableerrorsnapshot تعطيل لقطة الخطأ (Error Snapshot).
disableglobalsearch تعطيل البحث العام (Global Search).
disable_scheduler تعطيل المجدول (Scheduler).
disablesessioncache تعطيل ذاكرة التخزين المؤقت للجلسة (Session Cache).
disablewebsitecache تعطيل ذاكرة التخزين المؤقت للموقع (Website Cache).
encryption_key المفتاح المستخدم لتشفير كلمات المرور. يتم إنشاء هذه كلمة المرور تلقائيًا على موقع جديد. عند استعادة الموقع، يجب أيضًا استعادة هذا المفتاح لتتمكن من استخدام كلمات المرور الحالية.
enablefrappelogger إذا تم تعيينه، يسجل معلومات أساسية من الطلبات ويحفظها تحت ./sites/{site}/logs/frappe.web.log.
errorreportemail تعيين بريد الإبلاغ عن الأخطاء (Error Report Email) الافتراضي.
ignore_csrf تجاهل CSRF.
install_apps ذكر قائمة التطبيقات المراد تثبيتها عند استعادة الموقع، إعادة التثبيت وعند الإنشاءات الجديدة.
host_name اسم المضيف (host name) مطلوب للوظائف في الخلفية والطباعة لتحديد عنوان URL للموقع بشكل صحيح. يجب أن تتضمن القيمة البروتوكول والمنفذ (إذا لم يكن افتراضيًا)، بدون شرطة مائلة في النهاية. على سبيل المثال: "https://erp.example.org:2424"
http_port تغيير منفذ HTTP لإعداد Frappe الخاص بك.
keepbackupsfor_hours يُستخدم في frappe.utils.new_backup ليمر عبر frappe.utils.delete_temp_backups. يحتفظ بملفات النسخ الاحتياطية اعتمادًا على عمرها بالساعات.
local_infile تعيين العلم للسماح بالبيانات من الملف المحلي (local infile) لاتصالات MySQL.
logging استخدام frappe.debug_log عبر frappe.log لتمكين مستويات تسجيل مختلفة. في المستوى 2، يظهر الاستعلامات والنتائج التي تم تشغيلها في كل إجراء.
maintenance_mode تمكين وضع الصيانة (Maintenance Mode).
maxfilesize الحد الأقصى لحجم الملف المسموح به لرفع الملفات. الافتراضي هو 10 ميجابايت.
maxreportsper_user الحد الأقصى لعدد تقارير البريد الإلكتروني التلقائي (Auto Email Reports) التي يمكن إنشاؤها بواسطة مستخدم، الافتراضي هو 3.
monitor إذا تم تعيينه، يسجل جميع الطلبات ويحفظ تحت ./logs/monitor.json.log. تحقق من المراقبة (monitoring) تحت وثائق التصحيح.
mute_emails يوقف إرسال البريد الإلكتروني إذا كان true.
pause_scheduler إيقاف المجدول (Scheduler) مؤقتًا.
rate_limit تحديد حدود المعدل (Rate Limits) باستخدام frappe.rate_limiter. تحقق من مرجع المستند: تحديد المعدل (rate limiting).
robots_txt المسار إلى ملف robots.txt ليتم تقديمه عند الذهاب إلى frappe-site.com/robots.txt.
root_login اسم مستخدم جذر قاعدة البيانات (Database root username).
root_password كلمة مرور جذر قاعدة البيانات (Database root password).
serverscriptenabled تمكين/تعطيل البرنامج النصي للخادم (Server Script).
skipsetupwizard تخطي معالج الإعداد (Setup Wizard).
socketio_port تحديد منفذ Socket.IO.
webserver_port يُستخدم عمومًا كخيار احتياطي لمفتاح التكوين http_port.
appincludejs حقن سكريبت JavaScript عن طريق عنوان URL في /app. يجب أن تكون قائمة بعناوين URL المطلقة.
appincludecss حقن ورقة أنماط CSS عن طريق عنوان URL في /app. يجب أن تكون قائمة بعناوين URL المطلقة.
disabletransactionlog تعطيل إنشاء سجل المعاملات (Transaction Log) لفواتير المبيعات وإدخالات الدفع (ميزة إقليمية في ERPNext).

إعدادات مضيف قاعدة البيانات البعيدة

للاتصال بخادم قاعدة بيانات بعيد باستخدام SSL، يجب أولاً تكوين مضيف قاعدة البيانات لقبول اتصالات SSL. يتوفر مثال لكيفية القيام بذلك في هذا البرنامج التعليمي بواسطة Digital Ocean. بعد القيام بالتكوين، قم بتعيين الخيارات الثلاثة التالية. يجب تعيين جميع الخيارات لمحاولة Frappe الاتصال باستخدام SSL.

المفتاح الوصف
db_host مضيف قاعدة البيانات إذا لم يكن localhost.
db_port تحديد المنفذ لقاعدة البيانات الخاصة بك.
dbsslca المسار الكامل لملف ca.pem المستخدم للاتصال بمضيف قاعدة بيانات باستخدام ssl. مثال على القيمة هو "/etc/mysql/ssl/ca.pem".
dbsslcert المسار الكامل لملف cert.pem المستخدم للاتصال بمضيف قاعدة بيانات باستخدام SSL. مثال على القيمة هو "/etc/mysql/ssl/client-cert.pem".
dbsslkey المسار الكامل لملف key.pem المستخدم للاتصال بمضيف قاعدة بيانات باستخدام SSL. مثال على القيمة هو "/etc/mysql/ssl/client-key.pem".
rds_db منح امتيازات معينة بدلاً من جميعها، أثناء إعداد قاعدة بيانات الموقع. يُستخدم في db_manager.py.

إعدادات مضيف قاعدة البيانات للقراءة فقط المتماثل

يتوفر دليل لإعداد عمليات القراءة من خادم MariaDB ثانوي في إعداد متماثل (replica) في أدلة المستخدم.

المفتاح الوصف
readfromreplica لتمكين/تعطيل القراءة من النسخة المتماثلة (replica). القيم المقبولة هي 1/0 أو true/false.
differentcredentialsfor_replica إذا كانت بيانات اعتماد قاعدة البيانات مختلفة على النسخة المتماثلة، فاضبط على 1 وإلا 0.
replica_host عنوان IP للنسخة المتماثلة (Replica).
replicadbname اسم قاعدة بيانات النسخة المتماثلة (Replica DB name).
replicadbpassword كلمة مرور قاعدة بيانات النسخة المتماثلة (Replica DB password).

إعدادات البريد الإلكتروني الصادر الافتراضية

بعض التكوينات المتاحة منخفضة المستوى لوحدة البريد الإلكتروني في Frappe.

المفتاح الوصف
autoemailid إذا تم تعيينه، سيكون هذا هو البريد الإلكتروني الافتراضي للرسائل الصادرة.
mail_login يُستخدم كتفضيل ثاني و "notifications@example.com" يُستخدم كخيار احتياطي.
alwaysuseaccountemailidassender استخدام معرف بريد الحساب كمرسل (Sender).
alwaysuseaccountnameassendername استخدام اسم الحساب كاسم المرسل (Sender Name).
emailsendername اسم مرسل البريد الإلكتروني (Email Sender Name).
mail_server اسم مضيف خادم SMTP.
mail_port منفذ STMP.
mail_login معرف تسجيل الدخول لخادم SMTP.
mail_password كلمة المرور لخادم SMTP.
pop_timeout مهلة POP.
use_ssl الاتصال عبر SSL.
use_tls الاتصال عبر TLS.

تكوين Bench

يتم استخدام هذه التكوينات بواسطة واجهة سطر أوامر Bench CLI ويمكن تعيينها بشكل مختلف لكل Bench على نظامك من خلال التكوين المشترك للموقع.

المفتاح الوصف
restartsupervisoron_update إعادة تشغيل supervisord عند تحديث Bench.
restartsystemdon_update إعادة تشغيل systemd عند تحديث Bench.
release_bench إذا تم تعيينه، سيتم التعامل مع الـ Bench الحالي كأداة بحتة لإجراء عمليات الإصدار (releases).
background_workers عدد العمال المخصصين للتعامل مع الوظائف في الخلفية.
dns_multitenant إذا تم تعيينه، يقوم بتشغيل DNS متعدد الإيجارات (multitenancy) للـ Bench. يُستخدم أثناء إنشاءات تكوين NGINX.
filewatcherport رقم المنفذ لمراقب الملفات (File Watcher).
frappe_user المستخدم الذي تم إنشاء الـ Bench الحالي تحته.
gunicorn_workers عدد عمال Gunicorn. الحد الأدنى للقيمة الافتراضية هو 2.
gunicornmaxrequests عدد الطلبات بعدها سيتم إعادة تشغيل عمال Gunicorn. القيمة الافتراضية هي 5000.
maintenance_mode إذا تم تعيينه، يأخذ المواقع إلى وضع عدم الاتصال (offline) ويوقف جميع العمليات في الخلفية والوظائف المجدولة. يُستخدم أثناء هجرات الموقع وعمليات تحديث Bench.
pause_scheduler إذا تم تعيينه، يوقف المجدول (Scheduler) مؤقتًا للمواقع المحددة.
redis_cache رقم المنفذ لعملية redis cache المحددة في Procfile الخاص بالـ Bench.
redis_queue رقم المنفذ لعملية redis queue المحددة في Procfile الخاص بالـ Bench.
redis_socketio رقم المنفذ لعملية redis Socket.IO المحددة في Procfile الخاص بالـ Bench.
schedulertickinterval يعمل مجدول الوظائف (Job Scheduler) في حلقة (loop) تقوم بإدراج جميع الوظائف المجدولة المعلقة التنفيذ مرة واحدة كل scheduler_tick_interval ثانية. هذا يجعل من الممكن تعيين الحد الأدنى للتردد لجدولة الوظائف. الافتراضي هو 60.
socketio_port رقم المنفذ لعملية Socket.IO المحددة في Procfile الخاص بالـ Bench.
webserver_port رقم المنفذ لخادم الويب Frappe.
live_reload إعادة تحميل Desk تلقائيًا عند إعادة بناء الأصول.

التكاملات

قد تتطلب بعض التكاملات من طرف ثالث تكوينات منخفضة المستوى قد ترغب في تعريفها لجميع المواقع على الـ Bench الخاص بك، إذا كنت موفر خدمة. يتيح لك Frappe تعريف إعدادات التكوين هذه لتكاملاتك عبر تكوين الموقع.

Sandbox

المفتاح الوصف
sandboxapikey مفتاح Sandbox API.
sandboxapisecret سر Sandbox API.
sandboxapipassword كلمة مرور Sandbox API.
sandboxapiusername اسم مستخدم Sandbox API.
sandboxpublishablekey مفتاح Sandbox قابل للنشر (Publishable Key).
sandbox_signature توقيع Sandbox.

DropBox

المفتاح الوصف
dropboxaccesskey مفتاح الوصول إلى Dropbox.
dropboxbrokersite موقع وسيط Dropbox.
dropboxsecretkey المفتاح السري لـ Dropbox.

PayPal

المفتاح الوصف
paypal_username اسم مستخدم PayPal.
paypal_password كلمة مرور PayPal.
paypal_signature توقيع PayPal.

أخرى

المفتاح الوصف
googleanalyticsid معرف Google Analytics.
convertedrupeeto_paisa روبية محولة إلى بايسة لإعدادات RazorPay.

التمديد الخارجي للتكوين

في بعض الأحيان، قد لا يرغب الأشخاص في وجود قيم للتكوينات مثل كلمة مرور قاعدة البيانات مشفرة مباشرةً في JSON لتكوين الموقع. في هذه الحالة، بعد إعداد الموقع بشكل طبيعي، يمكنك تثبيت تطبيق مخصص يُسمح له بتمديد تكوين الموقع عن طريق إرجاع قاموس (dict) لأي قيم ترغب في إلحاقها/تجاوزها. يمكن للتطبيق جلب هذه القيم كما هو مرغوب، ولكن يُفضل شيء ذو زمن انتقال منخفض جدًا لأنه سيتعين تشغيله لكل طلب إلى الموقع.

يمكن تكوينه على النحو التالي (يجب القيام به بعد الإعداد الأولي للموقع + تثبيت التطبيق):

{
    "extra_config": "vault.vault.conf_hook"
}

أو إذا كان لديك عدة تكوينات:

{
    "extra_config": ["vault.vault.conf_hook1", "vault.vault.conf_hook2"]
}

مثال على الطريقة في تطبيق مخصص سيكون:

def conf_hook() -> dict:
    password = get_password()
    return {"db_password": password}

التجاوز من البيئة

يمكن تجاوز قيم تكوين معينة عبر متغيرات البيئة.

الأولوية هي: البيئة -> تكوين الموقع -> القيمة الافتراضية (إذا كان لدى Frappe واحد مُكون).

التكوين متغير البيئة
redis_queue FRAPPE_REDIS_QUEUE
redis_cache FRAPPE_REDIS_CACHE
db_type FRAPPE_DB_TYPE
db_socket FRAPPE_DB_SOCKET
db_host FRAPPE_DB_HOST
db_port FRAPPE_DB_PORT
db_user FRAPPE_DB_USER
db_name FRAPPE_DB_NAME
db_password FRAPPE_DB_PASSWORD
Discard
Save

On this page

Review Changes ← Back to Content
Message Status Space Raised By Last update on