6. الإعدادات المتقدمة

6.1. التسجيل (Logging)

لتسجيل الطلبات المرسلة إلى الخادم، عليك ضبط متغير البيئة التالي:

يمكن تخصيص التسجيل أكثر باستخدام المتغيرات التالية:

6.2. متغيرات البيئة

يمكنك ضبط بعض جوانب QGIS Server عبر تعيين متغيرات البيئة.

توجد عدة طرق لتعريف هذه المتغيرات بحسب خادم HTTP وطريقة تشغيلك لـ QGIS Server. وهذا موصوف بالكامل في خادم Apache HTTP.

الاسم والوصف

القيمة الافتراضية

الخدمات

المتغير QGIS_OPTIONS_PATH

يحدد مسار المجلد الذي يحتوي على الإعدادات. يعمل بالطريقة نفسها التي يعمل بها الخيار --optionspath في تطبيق QGIS. ويبحث عن ملف الإعدادات في <QGIS_OPTIONS_PATH>/QGIS/QGIS3.ini.

''

الكل

QGIS_PLUGINPATH

مفيد إذا كنت تستخدم إضافات Python للخادم، إذ يحدد المجلد الذي يُبحث فيه عن إضافات Python.

''

الكل

المتغير QGIS_PROJECT_FILE

ملف المشروع .qgs أو .qgz، ويُمرَّر عادةً معاملًا في سلسلة الاستعلام (باستخدام MAP)، ويمكنك أيضًا تعيينه متغيرَ بيئة (مثلًا باستخدام وحدة Apache mod_rewrite).

ملاحظة

يمكنك أيضًا الإشارة إلى مشروع مخزّن في PostgreSQL، مثل postgresql://localhost:5432?sslmode=disable&dbname=mydb&schema=myschema&project=myproject، أو داخل ملف GeoPackage، مثل geopackage:/path/to/geopackage/file.gpkg?projectName=myProjectName.

''

الكل

المتغير QGIS_SERVER_ALLOWED_EXTRA_SQL_TOKENS

قائمة نصوص مفصولة بفواصل تمثل رموز SQL الإضافية المسموح بقبولها مكوّناتٍ في مرشّح المعالم.

''

WMS

المتغير QGIS_SERVER_API_RESOURCES_DIRECTORY

المجلد الأساسي لجميع الموارد الثابتة لواجهات OGC API (مثل OAPIF/WFS3) (قوالب HTML و CSS و JS و...)

يعتمد على طريقة التحزيم

OAPIF/WFS3

المتغير QGIS_SERVER_APPLICATION_NAME

اسم التطبيق المستخدم، مثلًا عند الاتصال بقاعدة بيانات لتعريف نسخة QGIS Server المتصلة

QGIS3 server

الكل

المتغير QGIS_SERVER_API_WFS3_MAX_LIMIT

القيمة القصوى لـ limit في طلب معالم OAPIF/WFS3.

10000

OAPIF/WFS3

المتغير QGIS_SERVER_CACHE_DIRECTORY

يحدد مجلد ذاكرة التخزين المؤقت للشبكة في نظام الملفات.

cache في مجلد ملف التعريف

الكل

المتغير QGIS_SERVER_CACHE_SIZE

يعيّن حجم ذاكرة التخزين المؤقت للشبكة بالبايت.

50 MB

الكل

المتغير QGIS_SERVER_CAPABILITIES_CACHE_SIZE

الحد الأقصى لعدد مستندات إمكانات (Capabilities) المشاريع المخزنة مؤقتًا.

40

الكل

المتغير QGIS_SERVER_DISABLE_GETPRINT

خيار على مستوى المشروع لتحسين زمن قراءة المشروع عبر تعطيل تحميل التخطيطات.

يؤدي تفعيل هذا الخيار إلى تعطيل طلب GetPrint في خدمة WMS في QGIS. عيّن علامة مشروع QGIS هذه لعدم تحميل التخطيطات.

false

WMS

المتغير QGIS_SERVER_FORCE_READONLY_LAYERS

إجبار QGIS Server على فتح جميع الطبقات في وضع القراءة فقط

false

الكل

المتغير QGIS_SERVER_IGNORE_BAD_LAYERS

الطبقات "المعطوبة" هي الطبقات التي يتعذر تحميلها. والسلوك الافتراضي لـ QGIS Server هو اعتبار المشروع غير متاح إذا احتوى على طبقة معطوبة.

يمكن تجاوز السلوك الافتراضي بتعيين هذا المتغير إلى 1 أو true. وفي هذه الحالة ستُتجاهل الطبقات "المعطوبة" ببساطة، وسيُعدّ المشروع صالحًا ومتاحًا.

false

الكل

المتغير QGIS_SERVER_LANDING_PAGE_PREFIX

بادئة مكوّن المسار في عنوان URL الأساسي للصفحة الرئيسية (Landing page)

""

الكل

المتغير QGIS_SERVER_LANDING_PAGE_PROJECTS_DIRECTORIES

المجلدات التي تستخدمها خدمة الصفحة الرئيسية للعثور على مشاريع .qgs و .qgz

""

الكل

المتغير QGIS_SERVER_LANDING_PAGE_PROJECTS_PG_CONNECTIONS

سلاسل اتصال PostgreSQL التي تستخدمها خدمة الصفحة الرئيسية للعثور على المشاريع

""

الكل

المتغير QGIS_SERVER_LOG_FILE

حدد المسار واسم الملف. تأكد من أن الخادم يمتلك الصلاحيات المناسبة للكتابة في الملف. يُفترض أن يُنشأ الملف تلقائيًا، فقط أرسل بعض الطلبات إلى الخادم. وإن لم يظهر، فتحقق من الصلاحيات.

تحذير

المتغير QGIS_SERVER_LOG_FILE مُهمَل منذ QGIS 3.4، استخدم QGIS_SERVER_LOG_STDERR بدلًا منه. وسيُزال دعم التسجيل في ملف في QGIS 5.0.

''

الكل

المتغير QGIS_SERVER_LOG_LEVEL

حدد مستوى التسجيل المطلوب. القيم المتاحة هي:

  • 0 أو INFO (تسجيل جميع الطلبات)

  • 1 أو WARNING

  • 2 أو CRITICAL (تسجيل الأخطاء الحرجة فقط، وهو مناسب لبيئات الإنتاج)

0

الكل

المتغير QGIS_SERVER_LOG_PROFILE

إضافة معلومات تفصيلية عن الأداء (Profiling) إلى السجلات، ولا يكون فعالًا إلا عند QGIS_SERVER_LOG_LEVEL=0

false

الكل

المتغير QGIS_SERVER_LOG_STDERR

تفعيل التسجيل إلى stderr. لا تأثير لهذا المتغير عند تعيين QGIS_SERVER_LOG_FILE.

  • 0 أو false (لا يميّز حالة الأحرف)

  • 1 أو true (لا يميّز حالة الأحرف)

false

الكل

المتغير QGIS_SERVER_MAX_THREADS

عدد الخيوط (Threads) المستخدمة عند تفعيل الرسم المتوازي. إذا كانت القيمة -1 فإنه يستخدم عدد أنوية المعالج.

-1

الكل

المتغير QGIS_SERVER_OVERRIDE_SYSTEM_LOCALE

يعيّن الإعدادات المحلية (LOCALE) التي يستخدمها QGIS Server. القيمة الافتراضية فارغة (بلا تجاوز).

مثال: de_CH.utf8

''

الكل

المتغير QGIS_SERVER_PARALLEL_RENDERING

يفعّل الرسم المتوازي لطلبات WMS GetMap. وهو معطّل (false) افتراضيًا. القيم المتاحة هي:

  • 0 أو false (لا يميّز حالة الأحرف)

  • 1 أو true (لا يميّز حالة الأحرف)

false

WMS

المتغير QGIS_SERVER_PROJECT_CACHE_CHECK_INTERVAL

يتحكم في فاصل الاستراتيجية الدورية لإبطال ذاكرة التخزين المؤقت، بالمللي ثانية. القيمة الافتراضية 0، وهي تختار مراقب نظام الملفات القديم.

الكل

المتغير QGIS_SERVER_PROJECT_CACHE_SIZE

يعيّن الحد الأقصى لعدد ملفات مشاريع QGIS (.qgs/.qgz) التي تُحفظ في ذاكرة التخزين المؤقت للخادم. يمكن أن يحسّن ذلك الأداء عند تقديم المشاريع نفسها بشكل متكرر.

100

الكل

المتغير QGIS_SERVER_PROJECT_CACHE_STRATEGY

يحدد طريقة إبطال ذاكرة التخزين المؤقت للمشاريع. الاستراتيجيات المتاحة هي:

  • filesystem: يستخدم استراتيجية مراقب نظام الملفات

  • periodic: يستخدم قيمة آخر تعديل للمشروع للتحقق من تغيّر إعدادات المشروع. وهو مناسب لأنظمة الملفات غير المعتادة مثل NFS، أو عندما يكون ملف المشروع مخزّنًا في نظام قواعد بيانات مثل PostgreSQL.

  • off: يعطّل الإبطال الداخلي لذاكرة التخزين المؤقت تمامًا

filesystem

الكل

المتغير QGIS_SERVER_SERVICE_URL

خيار لتعيين عنوان URL للخدمة إذا لم يكن موجودًا في المشروع.

يُحدَّد عنوان URL للخدمة من (بحسب ترتيب الأولوية):

  • القيمة المعرّفة في المشروع لكل خدمة

  • متغير البيئة QGIS_SERVER_<service>_SERVICE_URL

  • متغير البيئة QGIS_SERVER_SERVICE_URL

  • الترويسة X-Qgis-<service>-Service-Url

  • الترويسة X-Qgis-Service-Url

  • البناء من الترويسة Forwarded

  • البناء من الترويستين X-Forwarded-Host و X-Forwarded-Proto

  • البناء من الترويسة Host وبروتوكول الخادم

  • البناء من اسم الخادم وبروتوكول الخادم.

في الحالات الأربع الأخيرة، يُبنى عنوان URL الناتج للخدمة استنادًا إلى المعامل MAP المُمرَّر في سلسلة الاستعلام وإلى مسار الطلب الوارد.

''

الكل

المتغير QGIS_SERVER_SHOW_GROUP_SEPARATOR

يحدد ما إذا كان يجب استخدام فاصل المجموعات (مثل فاصل الآلاف) للقيم الرقمية (مثلًا في استجابات GetFeatureInfo). القيمة الافتراضية هي 0.

  • 0 أو false (لا يميّز حالة الأحرف)

  • 1 أو true (لا يميّز حالة الأحرف)

false

WMS

المتغير QGIS_SERVER_TRUST_LAYER_METADATA

خيار على مستوى المشروع لتحسين زمن قراءة المشروع باستخدام امتدادات الطبقات المتجهية المعرّفة في البيانات الوصفية للمشروع وتعطيل التحقق من تفرّد المفتاح الأساسي لطبقات PostgreSQL/PostGIS.

يمكن فرض الوثوق في البيانات الوصفية للطبقات بتعيين هذا المتغير إلى 1 أو true. وعندها سيكون امتداد الطبقة المتجهية هو المعرّف في المشروع، ويُعدّ المفتاح الأساسي لطبقة PostgreSQL/PostGIS المعرّف في مصدر البيانات فريدًا دون تحقق.

لا تستخدمه إذا لم يكن امتداد الطبقات ثابتًا أثناء استخدام المشروع.

false

الكل

المتغير QGIS_SERVER_WCS_SERVICE_URL

خيار لتعيين عنوان URL للخدمة إذا لم يكن موجودًا في المشروع. انظر QGIS_SERVER_SERVICE_URL لمزيد من المعلومات.

''

WCS

المتغير QGIS_SERVER_WFS_SERVICE_URL

خيار لتعيين عنوان URL للخدمة إذا لم يكن موجودًا في المشروع. انظر QGIS_SERVER_SERVICE_URL لمزيد من المعلومات.

''

WFS

المتغير QGIS_SERVER_WMS_MAX_HEIGHT

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

-1

WMS

المتغير QGIS_SERVER_WMS_MAX_WIDTH

العرض الأقصى لطلب WMS. تُستخدم القيمة الأكثر تحفظًا بين هذه القيمة وقيمة المشروع. إذا كانت القيمة -1 فهذا يعني عدم تعيين حد أقصى.

-1

WMS

المتغير QGIS_SERVER_WMS_SERVICE_URL

خيار لتعيين عنوان URL للخدمة إذا لم يكن موجودًا في المشروع. انظر QGIS_SERVER_SERVICE_URL لمزيد من المعلومات.

''

WMS

المتغير QGIS_SERVER_WMTS_SERVICE_URL

خيار لتعيين عنوان URL للخدمة إذا لم يكن موجودًا في المشروع. انظر QGIS_SERVER_SERVICE_URL لمزيد من المعلومات.

''

WMTS

QUERY_STRING

سلسلة الاستعلام، ويمررها خادم الويب عادةً. يمكن أن يكون هذا المتغير مفيدًا عند اختبار الملف التنفيذي لـ QGIS Server من سطر الأوامر.

على سبيل المثال، لاختبار طلب GetCapabilities من سطر الأوامر على مشروع يتطلب أيضًا اتصال PostgreSQL معرّفًا في ملف pg_service.conf:

PGSERVICEFILE=/etc/pg_service.conf \
QUERY_STRING="MAP=/home/projects/world.qgs&SERVICE=WMS&REQUEST=GetCapabilities" \
/usr/lib/cgi-bin/qgis_mapserv.fcgi

يُفترض أن تكون النتيجة إما محتوى استجابة GetCapabilities، أو رسالة خطأ إذا كان هناك خلل ما.

''

الكل

6.3. ملخص الإعدادات

عند بدء تشغيل QGIS Server، يظهر لك ملخص لجميع المعاملات القابلة للضبط عبر متغيرات البيئة. كما تُعرض القيمة المستخدمة حاليًا ومصدرها.

على سبيل المثال باستخدام spawn-fcgi:

export QGIS_OPTIONS_PATH=/home/user/.local/share/QGIS/QGIS3/profiles/default/
export QGIS_SERVER_LOG_STDERR=1
export QGIS_SERVER_LOG_LEVEL=2
spawn-fcgi -f /usr/lib/cgi-bin/qgis_mapserv.fcgi -s /tmp/qgisserver.sock -U www-data -G www-data -n

 QGIS Server Settings:

   - QGIS_OPTIONS_PATH / '' (Override the default path for user configuration): '/home/user/.local/share/QGIS/QGIS3/profiles/default/' (read from ENVIRONMENT_VARIABLE)

   - QGIS_SERVER_PARALLEL_RENDERING / '/qgis/parallel_rendering' (Activate/Deactivate parallel rendering for WMS getMap request): 'true' (read from INI_FILE)

   - QGIS_SERVER_MAX_THREADS / '/qgis/max_threads' (Number of threads to use when parallel rendering is activated): '4' (read from INI_FILE)

   - QGIS_SERVER_LOG_LEVEL / '' (Log level): '2' (read from ENVIRONMENT_VARIABLE)

   - QGIS_SERVER_LOG_STDERR / '' (Activate/Deactivate logging to stderr): '1' (read from ENVIRONMENT_VARIABLE)

   - QGIS_PROJECT_FILE / '' (QGIS project file): '' (read from DEFAULT_VALUE)

   - MAX_CACHE_LAYERS / '' (Specify the maximum number of cached layers): '100' (read from DEFAULT_VALUE)

   - QGIS_SERVER_CACHE_DIRECTORY / '/cache/directory' (Specify the cache directory): '/root/.local/share/QGIS/QGIS3/profiles/default/cache' (read from DEFAULT_VALUE)

   - QGIS_SERVER_CACHE_SIZE / '/cache/size' (Specify the cache size): '52428800' (read from INI_FILE)

 Ini file used to initialize settings: /home/user/.local/share/QGIS/QGIS3/profiles/default/QGIS/QGIS3.ini

في هذه الحالة تحديدًا، نعلم أن قيمتي QGIS_SERVER_MAX_THREADS و QGIS_SERVER_PARALLEL_RENDERING تُقرآن من ملف ini الموجود في المجلد QGIS_OPTIONS_PATH (المعرّف عبر متغير بيئة). والمدخلات المقابلة في ملف ini هي /qgis/max_threads و /qgis/parallel_rendering، وقيمتاهما true و 4 خيوط.

6.4. الاتصال بملف الخدمة

لجعل Apache على دراية بملف خدمة PostgreSQL (انظر قسم ملف اتصال خدمة PostgreSQL)، عليك جعل ملف *.conf يبدو كما يلي:

SetEnv PGSERVICEFILE /home/web/.pg_service.conf

<Directory "/home/web/apps2/bin/">
  AllowOverride None
.....

6.5. إضافة الخطوط إلى خادم Linux

ضع في اعتبارك أنك قد تستخدم مشاريع QGIS تشير إلى خطوط قد لا تكون موجودة افتراضيًا على أجهزة أخرى. وهذا يعني أنك إذا شاركت المشروع فقد يبدو مختلفًا على الأجهزة الأخرى (إذا لم تكن الخطوط موجودة على الجهاز الهدف).

لضمان عدم حدوث ذلك، يكفي أن تثبّت الخطوط الناقصة على الجهاز الهدف. وعادةً ما يكون ذلك سهلًا جدًا على أنظمة سطح المكتب (بالنقر المزدوج على الخطوط).

على Linux، إذا لم تكن لديك بيئة سطح مكتب مثبتة (أو كنت تفضّل سطر الأوامر)، فعليك:

  • على الأنظمة المبنية على Debian:

    sudo su
    mkdir -p /usr/local/share/fonts/truetype/myfonts && cd /usr/local/share/fonts/truetype/myfonts
    
    # copy the fonts from their location
    cp /fonts_location/* .
    
    chown root *
    cd .. && fc-cache -f -v
    
  • على الأنظمة المبنية على Fedora:

    sudo su
    mkdir /usr/share/fonts/myfonts && cd /usr/share/fonts/myfonts
    
    # copy the fonts from their location
    cp /fonts_location/* .
    
    chown root *
    cd .. && fc-cache -f -v