شرح مفصل لبنية مجلدات ServBay
ServBay هي بيئة تطوير ويب محلية مصممة خصيصًا لنظام macOS، وتتميز ببنية مجلدات مرتبة وبسيطة. إذا كنت معتادًا على أنظمة Linux/Unix ستلاحظ أن طريقة تنظيم الملفات في ServBay تشبه كثيرًا البنية القياسية لأنظمة UNIX، وهو ما يسهل على المطورين العثور على الملفات وإدارتها بسرعة.
فهمك لهرمية مجلدات ServBay أمر أساسي لتطويرك المحلي بكفاءة، وضبط البيئة، واستكشاف المشكلات، وكذلك لعملية نسخ البيانات احتياطيًا. في هذا الدليل ستتعرف على الوظائف والاستخدامات لكل مجلد رئيسي ضمن ServBay.
البنية النموذجية لمجلد تثبيت ServBay كالتالي:
ServBay
|____backup # مجلد نسخ احتياطية
| |____config # نسخ احتياطية للإعدادات
| |____databases # نسخ احتياطية لقواعد البيانات
| |____ssl # نسخ احتياطية لشهادات SSL
| |____websites # نسخ احتياطية لملفات المواقع
|____bin # ملفات تنفيذية للمستخدم (رابط رمزي لـ package/bin)
|____data # بيانات داخلية لـ ServBay
| |____servbay # إعدادات ServBay الأساسية وبياناته
|____db # تخزين ملفات قواعد البيانات
| |____mariadb # بيانات MariaDB
| |____mongodb # بيانات MongoDB
| |____mysql # بيانات MySQL
| |____postgresql # بيانات PostgreSQL
| |____redis # بيانات Redis
|____etc # ملفات الإعدادات (رابط رمزي لـ package/etc)
|____logs # ملفات السجلات (رابط رمزي لـ package/var/log)
|____package # مجلد تثبيت الحزم البرمجية
| |____bin # ملفات تنفيذية للحزم البرمجية
| |____common # مكتبات عامة ومكتبات تطوير
| | |____imap-uw
| | |____include # ملفات الرأس (مكتبة تطوير ServBay)
| | |____lib # مكتبات مشتركة وثابتة (مكتبة تطوير ServBay)
| | |____libexec
| | |____openssl
| | |____share
| |____etc # التخزين الفعلي لملفات إعدادات الحزم
| | |____caddy
| | |____dnsmasq
| | |____mariadb
| | |____mongodb
| | |____mysql
| | |____nginx
| | |____openldap
| | |____php
| | |____postgresql
| | |____redis
| | |____... (إعدادات حزم أخرى مثل Python، Go، Java، إلخ)
| |____<package_name> # المجلد الرئيسي لكل حزمة برمجية
| | |____<major_version> # مجلد الإصدار الرئيسي
| | | |____<full_version> # مجلد الإصدار الكامل (يحوي الحزمة نفسها)
| | | |____current # رابط رمزي للنسخة الأحدث من الإصدار
| | |____...
| |____sbin # ملفات تنفيذية نظامية للحزم البرمجية
| |____var # بيانات متغيرة للحزم (مثل موقع السجلات الفعلي)
| | |____log # المكان الفعلي لتخزين السجلات
| | |____run # ملفات للعمليات الجارية (مثل ملفات .pid)
|____sbin # ملفات تنفيذية نظامية (رابط رمزي لـ package/sbin)
|____script # سكريبتات إدارية داخلية لـ ServBay
|____ssl # مجلد شهادات SSL
| |____acme # شهادات SSL تم الحصول عليها بالبروتوكول ACME
| |____caddy # شهادات SSL التي ينشئها Caddy تلقائيًا
| |____import # شهادات SSL مستوردة من أطراف ثالثة
| |____private # CA مستخدمي ServBay
| |____public # CA العامة لـ ServBay
|____tmp # مجلد مؤقت و لملفات الـ Socket
|____www # جذر المواقع الإلكترونية
| |____servbay # موقع نموذجي
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
سنشرح أدناه استخدامات كل مجلد بشكل مفصل.
المجلد الرئيسي لـ ServBay
المجلد الرئيسي عادة في المسار /Applications/ServBay
. كل برمجيات، إعدادات، بيانات، وسجلات ServBay مُجمعة هنا.
لحماية بيئة تطويرك المحلية وبياناتك، يفضل أن تقوم بنسخ هذا المجلد احتياطيًا بشكل دوري باستخدام Time Machine أو أي أداة نسخ احتياطي أخرى.
جذر المواقع (www
)
مجلد مواقعك الرئيسي في /Applications/ServBay/www
. هنا تحفظ جميع مشروعات مواقعك المحلية.
لتسهيل التنظيم والإدارة، يُنصح بشدة إنشاء مجلد فرعي منفصل لكل موقع أو مشروع أو نطاق وهمي (ما يسمى موقع في ServBay).
مثال عملي إذا كان لديك مواقع مثل web.servbay.demo
، api.servbay.demo
، وnew.servbay.local
، سيكون الهيكل الموصى به:
/Applications/ServBay/www
|____servbay.demo # لمواقع *.servbay.demo
| |____web # ملفات موقع web.servbay.demo
| |____api # ملفات موقع api.servbay.demo
|____servbay.local # لمواقع *.servbay.local
| |____new # ملفات موقع new.servbay.local
|____myproject # مشاريع أخرى مثل myproject.local
1
2
3
4
5
6
7
2
3
4
5
6
7
هذا الأسلوب يسهل فصل وإدارة المشاريع والنطاقات المختلفة.
مجلد ملفات الإعدادات (etc
)
مجلد الإعدادات /Applications/ServBay/etc
هو رابط رمزي يشير فعليًا إلى /Applications/ServBay/package/etc
. هنا تحفظ إعدادات جميع الحزم البرمجية (مثل PHP، MariaDB، Nginx، Caddy...) المثبتة في ServBay.
يمكنك الوصول وتعديل الملفات بسهولة من خلال هذا المسار. بعد التعديل تحتاج عادة لإعادة تشغيل الخدمة ذات الصلة ليتم تطبيق التغييرات.
PHP (etc/php
)
مجلد إعدادات PHP ذو هيكلية ذات مستويين لتعريف الإصدارات الكبيرة. فداخل etc/php
ستجد مجلدات مثل 5.6
، 7.4
، 8.3
... كل منها يعبر عن إصدار رئيسي من PHP، مثل الهيكل التالي:
php
|____5.6 # إعدادات PHP 5.6
| |____conf.d # مجلد إعدادات الإضافات
| |____php.ini # ملف الإعداد الرئيسي
|____7.4 # إعدادات PHP 7.4
| |____conf.d # مجلد إعدادات الإضافات
| |____php-fpm.d # إعدادات تجمّعات PHP-FPM
| |____php-fpm.conf # ملف إعداد PHP-FPM الرئيسي
| |____php.ini # ملف الإعداد الرئيسي
|____8.3 # إعدادات PHP 8.3
| |____conf.d
| |____php-fpm.d
| |____php-fpm.conf
| |____php.ini
|____... (إصدارات أخرى)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ضمن كل إصدار ستجد ملفات مثل php.ini
(الإعداد الرئيسي)، php-fpm.conf
(لمن يدعم FPM)، وpear.conf
... إلخ. بعد أي تعديل عليك إعادة تشغيل خدمة PHP-FPM المرتبطة عبر لوحة التحكم أو أمر servbayctl
.
مجلد conf.d
خاص بإعدادات إضافات PHP، مثل xdebug.ini
، opcache.ini
، إلخ. عند التعديل، أعد تشغيل الخدمة المعنية.
ملاحظة: كل إصدارات PHP الفرعية ضمن نفس الإصدار الكبير تشارك نفس ملفات الإعدادات (مثلاً PHP 8.3.3
و8.3.5
يستخدمان إعدادات etc/php/8.3
).
MariaDB / MySQL / PostgreSQL (etc/mariadb
, etc/mysql
, etc/postgresql
)
إعدادات قواعد البيانات تعتمد نظام مجلدات للإصدارات أيضًا، مثلاً etc/mariadb/11.2
. وفيها ملفات إعدادات رئيسية مثل my.cnf
أو postgresql.conf
. وكل الإصدارات الفرعية ضمن نفس الإصدار تستخدم الإعدادات ذاتها. بعد أي تغيير أعد تشغيل الخدمة المرتبطة.
لتغيير كلمة مرور مستخدم root في القواعد، يتم ذلك غالبًا عبر أوامر خاصة أو من خلال لوحة تحكم ServBay، لا بتعديل ملف الإعداد مباشرة.
Caddy (etc/caddy
)
ملف إعداد Caddy (Caddyfile
) موجود في etc/caddy
.
تنبيه مهم: يقوم ServBay بإنشاء هذا الملف تلقائيًا بناءً على إعدادات المواقع عبر لوحة التحكم. لا تعدل الملف يدويًا لأن أي تعديل سيضيع عند تحديث التهيئة من جديد. لإضافة إعدادات مخصصة استخدم واجهة لوحة تحكم المواقع فقط.
Nginx (etc/nginx
)
الملف الرئيسي لإعدادات Nginx هو nginx.conf
داخل etc/nginx
. أيضًا هنا يتم بناء إعدادات الموقع تلقائيًا. أي تعديل يدوي ينبغي أن يكون بحذر، ويفضل إجراءه من خلال لوحة تحكم ServBay.
dnsmasq (etc/dnsmasq
)
يحوي ملفات الإعداد الافتراضي dnsmasq.conf
وملف المجالات domains.conf
(ينشئه ServBay تلقائيًا لنطاقاتك المحلية).
تنبيه مهم: كل من dnsmasq.conf
وdomains.conf
تدار تلقائيًا من ServBay لضمان عمل نطاقاتك المحلية بشكل صحيح. لا تعدلها يدويًا حتى لا تفقد مواقعك المحلية القدرة على العمل.
إعدادات حزم أخرى
الحزم الأخرى مثل Node.js، Python، Go، Java، إلخ، إذا احتاجت لإعدادات عامة أو خدمية، توضع في مجلد فرعي بحسب الحزمة، وللإصدارات تنظيم مشابه.
مجلد بيانات ServBay الداخلية (data/servbay
)
/Applications/ServBay/data/servbay
1
يحتوي هذا المجلد على ملفات إعداد، حالة، وتخصيصات المستخدم اللازمة لتشغيل ServBay، وإدارة الحزم والمواقع وقواعد البيانات.
تنبيه مهم: تأكد من نسخ هذا المجلد احتياطيًا ولا تحذف أو تغير محتواه يدويًا كي لا تواجه مشاكل في تشغيل ServBay أو فقد إعداداتك.
مجلدات الملفات التنفيذية والسكريبت (bin
, sbin
, script
)
/Applications/ServBay/bin -> package/bin
/Applications/ServBay/sbin -> package/sbin
/Applications/ServBay/script
1
2
3
2
3
يتم وضع جميع الملفات التنفيذية في bin
وsbin
(روابط رمزية لـ package/bin و package/sbin)، وتشمل كل أدوات ولغات ServBay.
يمكنك الوصول لأي من هذه الأدوات من الطرفية بسهولة، حيث يضيف ServBay هذه المسارات تلقائيًا إلى متغير PATH عند التشغيل، مثل:
- أدوات جاهزة للاستخدام: كـ
curl
،openssl
،frpc
إلخ. - بيئات تشغيل بعدة نسخ: مثل
php
(نسخة افتراضية)،php-5.6
،php-7.4
،php-8.3
،node
(نسخة افتراضية)،node-16
،node-18
،python3
،go
،java
،ruby
،rustc
إلخ. يمكنك تشغيل نسخة معينة بسرد رقمها بجانب الأمر. - عملاء قواعد بيانات: كـ
mysql
،psql
،mongosh
،redis-cli
إلخ.
يوجد في script
سكريبتات إدارية يستخدمها ServBay داخليًا لتشغيل الخدمات، إعداد القواعد، تنفيذ المهام الداعمة... يُنصح بتشغيلها من خلال الأمر الأشمل servbayctl
الموجود بـ /Applications/ServBay/bin
.
مثلاً تشغيل خدمة PHP 7.4 FPM:
bash
servbayctl start php 7.4
1
أداة servbayctl
موجودة في /Applications/ServBay/bin
.
مجلد ملفات قواعد البيانات (db
)
/Applications/ServBay/db
1
هنا تُخزّن بيانات جميع قواعد البيانات المثبتة — يفصلها الحزمة والإصدار:
/Applications/ServBay/db/mariadb/<major_version>
: بيانات MariaDB./Applications/ServBay/db/mysql/<major_version>
: بيانات MySQL./Applications/ServBay/db/postgresql/<major_version>
: بيانات PostgreSQL./Applications/ServBay/db/mongodb
: بيانات MongoDB./Applications/ServBay/db/redis
: بيانات Redis.
كل إصدار رئيسي للحزمة يستخدم بيانات مشتركة (مثلاً جميع إصدارات 11.2.x
لـ MariaDB في /Applications/ServBay/db/mariadb/11.2
).
تنبيه مهم: هذا المجلد يحوي جميع بيانات قواعدك المحلية. قبل أي خطوة مهمة (ترقية، ترحيل...) قم بنسخ /Applications/ServBay/db
بالكامل. خاصية النسخ الاحتياطي المدمجة في ServBay تشمل هذا المجلد أيضًا.
مجلد السجلات (logs
)
/Applications/ServBay/logs -> package/var/log
1
كل سجلات الخدمات المدعومة مخزنة في /Applications/ServBay/logs
(رابط رمزي لـ /Applications/ServBay/package/var/log
) لتسهيل استعراض حالة الخدمات ورسائل الخطأ.
تقسيم مجلدات حسب نوع الخدمة، مثلاً:
logs/caddy/
أوlogs/nginx/
: سجلات الوصول والأخطاء لكل موقع وفقًا للنطاق.logs/php/
: سجلات PHP-FPM (php-fpm.log
) وأخطاء التنفيذ (errors.log
).logs/mariadb/
,logs/mysql/
,logs/postgresql/
,logs/mongodb/
,logs/redis/
: سجلات الخدمات المختلفة.- خدمات أخرى مثل Python، Go، Java، إلخ لها سجلاتها المرتبة كذلك.
ملاحظة: يمكن أن تستهلك السجلات مساحة كبيرة خاصة أثناء نشاط التطوير. يُفضل مراجعتها بانتظام وحذف القديم لتوفير المساحة.
مجلد الحزم البرمجية (package
)
/Applications/ServBay/package
1
هذا هو المكان الفعلي لتثبيت وإدارة الحزم. ترتب الحزم في مجلداتها حسب اسم الحزمة، ثم الإصدار الرئيسي، ثم الإصدار الكامل (package/php/8.3/8.3.7
كمثال).
يمكنك التنقل بين الإصدارات أو حذف الإصدارات القديمة يدويًا لتوفير مساحة.
تنبيه مهم: كل مجلد رئيسي للحزمة يحوي رابطًا رمزيًا باسم current
للمجلد النشط. لا تحذف أو تعدل هذا الرابط يدويًا حتى لا يتعطل ServBay في تحديد المسارات الصحيحة للبرمجيات والتشغيل.
مجلد شهادات SSL (ssl
)
/Applications/ServBay/ssl
1
يستخدم هذا المجلد لكل ما يخص شهادات SSL/TLS، ومنها:
- شهادات تم توليدها تلقائيًا عبر بروتوكول ACME لمواقع التطوير المحلي (في
ssl/caddy
أوssl/acme
). - شهادات الجذر والعمومية لـ ServBay لتطوير HTTPS محلي (في
ssl/private
وssl/public
)، وبإمكانك استيرادها إلى ثقة النظام لتجاوز تحذيرات المتصفح أثناء التطوير.
مجلد النسخ الاحتياطية (backup
)
/Applications/ServBay/backup
1
هنا تحفظ النسخ الاحتياطية تلقائيًا. وتشمل:
backup/config
: إعدادات ServBay وحزمها.backup/databases
: بيانات قواعد البيانات مثل MariaDB وغيرها.backup/ssl
: شهادات SSL.backup/websites
: ملفات مشاريع المواقع في/Applications/ServBay/www
.
ينصح بمراجعة هذا المجلد دوريًا ونقل النسخ الاحتياطية الضرورية إلى وحدة تخزين خارجية لتعزيز أمان البيانات.
مجلد الملفات المؤقتة (tmp
)
/Applications/ServBay/tmp
1
يحوي ملفات مؤقتة والخاصة بالاتصال والتشغيل مثل:
- ملفات
.pid
: رقم معرّف العملية للحدمات. - ملفات Socket: مثل
php-cgi.sock
،mysql.sock
... والتي تمكن البرامج من التواصل مباشرة عبر Unix Domain Socket بدلاً من TCP، وهي طريقة أسرع وأقل زمنًا ضمن نفس الجهاز.
المكونات والمكتبات العامة للتطوير (package/common
)
/Applications/ServBay/package/common
1
هنا تحفظ كل المكونات المشتركة، والمكتبات التي تعتمدها جميع الحزم (مثل ملفات *.dylib
) بالإضافة لمكتبات التطوير الاختيارية.
إذا ثبتت مكتبة تطوير ServBay، تجد مجلدات للـ headers والمكتبات الثابتة — وهي مهمة فقط لمن يطور إضافات PHP بالاعتماد على مكتبات ServBay.
تنبيه مهم: لا تحذف يدويًا ملفات *.dylib
الهامة في package/common/lib
فهي ضرورية لتشغيل البرامج المدمجة. حذفها يسبب أخطاء تشغيلية.
الخلاصة
يتمتع ServBay بهيكلية مجلدات واضحة ومستوحاة من أنظمة UNIX، حيث يفصل الحزم عن الإعدادات والبيانات والسجلات وملفات المواقع، ما يجعل إدارتك للبيئة محلية أكثر سلاسة وسرعة. معرفة وظيفة كل مجلد رئيسي يسرّع عملك على ServBay ويحسن كفائتك دون عناء. تذكر دوماً عمل نسخة احتياطية دورية للمجلدات الهامة (خصوصاً data
وdb
) لضمان حماية مشاريعك وبياناتك من الخسارة.