بيئة مكدس LAMP أساسية تم إنشاؤها باستخدام Docker Compose. يتكون مما يلي:
اعتبارًا من الآن، لدينا العديد من إصدارات PHP المختلفة. استخدم إصدار php المناسب حسب الحاجة:
docker compose up -d
. git clone https://github.com/sprintcube/docker-compose-lamp.git
cd docker-compose-lamp/
cp sample.env .env
// modify sample.env as needed
docker compose up -d
// visit localhost
مكدس LAMP الخاص بك جاهز الآن !! يمكنك الوصول إليه عبر http://localhost
.
تم تصميم Docker Stack هذا للتطوير المحلي وليس للاستخدام الإنتاجي.
تأتي هذه الحزمة مع خيارات التكوين الافتراضية. يمكنك تعديلها عن طريق إنشاء ملف .env
في الدليل الجذر الخاص بك. لتسهيل الأمر، ما عليك سوى نسخ المحتوى من ملف sample.env
وتحديث قيم متغيرات البيئة حسب حاجتك.
تتوفر متغيرات التكوين التالية ويمكنك تخصيصها عن طريق الكتابة فوق ملف .env
الخاص بك.
يتم استخدام PHPVERSION لتحديد إصدار PHP الذي تريد استخدامه. الإعدادات الافتراضية دائمًا هي أحدث إصدار PHP.
PHP_INI حدد تعديل php.ini
المخصص الخاص بك لتلبية متطلباتك.
DOCUMENT_ROOT
إنه جذر مستند لخادم Apache. القيمة الافتراضية لهذا هي ./www
. سيتم وضع جميع مواقعك هنا وستتم مزامنتها تلقائيًا.
APACHE_DOCUMENT_ROOT
قيمة ملف التكوين أباتشي. القيمة الافتراضية لهذا هي /var/www/html.
VHOSTS_DIR
هذا مخصص للمضيفين الظاهريين. القيمة الافتراضية لذلك هي ./config/vhosts
. يمكنك وضع ملفات conf للمضيفين الظاهريين هنا.
تأكد من إضافة إدخال إلى ملف
hosts
الخاص بنظامك لكل مضيف افتراضي.
APACHE_LOG_DIR
سيتم استخدام هذا لتخزين سجلات Apache. القيمة الافتراضية لهذا هي ./logs/apache2
.
لمستخدمي Apple Silicon: الرجاء تحديد Mariadb كقاعدة بيانات. لا تقوم Oracle ببناء حاويات SQL الخاصة بها لهندسة الذراع
قاعدة البيانات
حدد إصدار MySQL أو MariaDB الذي ترغب في استخدامه.
MYSQL_INITDB_DIR
عند بدء تشغيل حاوية لأول مرة، سيتم تنفيذ الملفات الموجودة في هذا الدليل بالامتدادات .sh
و .sql
و .sql.gz
و .sql.xz
بالترتيب الأبجدي. يتم الحصول على ملفات .sh
بدون إذن تنفيذ الملف بدلاً من تنفيذها. القيمة الافتراضية لهذا هي ./config/initdb
.
MYSQL_DATA_DIR
هذا هو دليل بيانات MySQL. القيمة الافتراضية لهذا هي ./data/mysql
. سيتم تخزين كافة ملفات بيانات MySQL هنا.
MYSQL_LOG_DIR
سيتم استخدام هذا لتخزين سجلات Apache. القيمة الافتراضية لهذا هي ./logs/mysql
.
تم تكوين Apache ليعمل على المنفذ 80. لذا، يمكنك الوصول إليه عبر http://localhost
.
بشكل افتراضي، يتم تمكين الوحدات التالية.
إذا كنت تريد تمكين المزيد من الوحدات، فما عليك سوى تحديث
./bin/phpX/Dockerfile
. يمكنك أيضًا إنشاء علاقات عامة وسنقوم بدمجها إذا بدا الأمر جيدًا للأغراض العامة. يجب عليك إعادة بناء صورة عامل الإرساء عن طريق تشغيلdocker compose build
وإعادة تشغيل حاويات عامل الإرساء.
يمكنك الاتصال بخادم الويب باستخدام أمر docker compose exec
لإجراء عمليات مختلفة عليه. استخدم الأمر أدناه لتسجيل الدخول إلى الحاوية عبر ssh.
docker compose exec webserver bash
يعتمد الإصدار المثبت من php على ملف .env
الخاص بك.
بشكل افتراضي يتم تثبيت الملحقات التالية. قد تختلف بالنسبة لإصدارات PHP <7.xx
إذا كنت تريد تثبيت المزيد من الإضافات، فما عليك سوى تحديث
./bin/webserver/Dockerfile
. يمكنك أيضًا إنشاء علاقات عامة وسنقوم بدمجها إذا كانت تبدو جيدة للأغراض العامة. يجب عليك إعادة بناء صورة عامل الإرساء عن طريق تشغيلdocker compose build
وإعادة تشغيل حاويات عامل الإرساء.
تم تكوين phpMyAdmin ليعمل على المنفذ 8080. استخدم بيانات الاعتماد الافتراضية التالية.
http://localhost:8080/
اسم المستخدم: root
كلمة المرور: النمر
يتم تثبيت Xdebug افتراضيًا ويعتمد إصداره على إصدار PHP الذي تم اختياره في ملف ".env"
.
إصدارات Xdebug:
PHP <= 7.3: Xdebug 2.XX
PHP >= 7.4: Xdebug 3.XX
لاستخدام Xdebug تحتاج إلى تمكين الإعدادات في الملف ./config/php/php.ini
وفقًا لإصدار PHP المختار.
مثال:
# Xdebug 2
#xdebug.remote_enable=1
#xdebug.remote_autostart=1
#xdebug.remote_connect_back=1
#xdebug.remote_host = host.docker.internal
#xdebug.remote_port=9000
# Xdebug 3
#xdebug.mode=debug
#xdebug.start_with_request=yes
#xdebug.client_host=host.docker.internal
#xdebug.client_port=9003
#xdebug.idekey=VSCODE
رمز Xdebug VS: يجب عليك تثبيت ملحق Xdebug "PHP Debug". بعد التثبيت، انتقل إلى Debug وقم بإنشاء ملف التشغيل حتى يتمكن IDE الخاص بك من الاستماع والعمل بشكل صحيح.
مثال:
هام جدًا: تعتمد pathMappings
على كيفية فتح المجلد في VS Code. يحتوي كل مجلد على تشغيل التكوينات الخاص بك، والذي يمكنك عرضه في .vscode/launch.json
{
"version" : " 0.2.0 " ,
"configurations" : [
{
"name" : " Listen for Xdebug " ,
"type" : " php " ,
"request" : " launch " ,
// "port": 9000, // Xdebug 2
"port" : 9003 , // Xdebug 3
"pathMappings" : {
// "/var/www/html": "${workspaceFolder } /www" // if you have opened VSCODE in root folder
"/var/www/html" : " ${workspaceFolder} " // if you have opened VSCODE in ./www folder
}
}
]
}
الآن، قم بإنشاء نقطة توقف وقم بتشغيل التصحيح.
نصيحة! بعد هذه التكوينات، قد تحتاج إلى إعادة تشغيل الحاوية.
لأنه يأتي مع ريديس. يعمل على المنفذ الافتراضي 6379
.
دعم نطاقات https
مدمج ولكنه معطل افتراضيًا. هناك 3 طرق يمكنك من خلالها تمكين وتكوين SSL؛ https
على localhost
هو الأسهل. إذا كنت تحاول إعادة إنشاء بيئة اختبار قريبة قدر الإمكان من بيئة الإنتاج، فيمكن دعم أي اسم مجال بمزيد من التكوين.
ملاحظة: بالنسبة لكل اسم نطاق غير محلي ترغب في استخدام https
عليه، ستحتاج إلى تعديل ملف المضيفين لجهاز الكمبيوتر الخاص بك وتوجيه اسم المجال إلى 127.0.0.1
. إذا فشلت في القيام بذلك، فلن تعمل طبقة المقابس الآمنة (SSL) وسيتم توجيهك إلى الإنترنت في كل مرة تحاول فيها زيارة اسم النطاق هذا محليًا.
لتمكين https
على localhost
(https://localhost)، ستحتاج إلى:
localhost
:mkcert
، في المحطة، قم بتشغيل mkcert localhost 127.0.0.1 ::1
.cert.pem
و cert-key.pem
على التوالي.config/ssl
.443
vhost في config/vhosts/default.conf
. منتهي. الآن، في أي وقت تقوم فيه بتشغيل حاوية LAMP الخاصة بك، سيعمل https
على localhost
.
إذا كنت ترغب في استخدام أسماء النطاقات العادية للاختبار المحلي، وتحتاج إلى دعم https
، فإن الحل الأبسط هو شهادة SSL التي تغطي جميع أسماء النطاقات:
mkcert
، في الوحدة الطرفية، قم بتشغيل mkcert example.com "*.example.org" myapp.dev localhost 127.0.0.1 ::1
حيث يمكنك استبدال جميع أسماء النطاقات وعناوين IP بتلك التي ترغب في دعمها.cert.pem
و cert-key.pem
على التوالي.config/ssl
.443
vhost في config/vhosts/default.conf
. منتهي. نظرًا لأنك قمت بدمج جميع أسماء النطاقات في شهادة واحدة، فإن ملف vhost سيدعم الإعداد الخاص بك دون الحاجة إلى تعديله بشكل أكبر. يمكنك إضافة قواعد خاصة بالمجال إذا كنت ترغب في ذلك. الآن، في أي وقت تقوم فيه بتشغيل حاوية LAMP الخاصة بك، سيعمل https
على جميع النطاقات التي حددتها.
إذا كنت تريد أن تتطابق بيئة الاختبار المحلية تمامًا مع إنتاجك، وتحتاج إلى دعم https
، فيمكنك إنشاء شهادة SSL لكل مجال ترغب في دعمه:
mkcert
، في المحطة الطرفية، قم بتشغيل mkcert [your-domain-name(s)-here]
مع استبدال الجزء القوسي باسم المجال الخاص بك.[name]-cert.pem
و [name]-cert-key.pem
مع استبدال جزء القوس باسم فريد.config/ssl
.443
من ملف vhost ( config/vhosts/default.conf
)، قم بإنشاء قواعد جديدة تطابق اسم المجال الخاص بك وأسماء ملفات الشهادات. منتهي. ستقوم حاوية LAMP تلقائيًا بسحب أي شهادات SSL في config/ssl
عند بدء التشغيل. طالما قمت بتكوين ملف vhosts بشكل صحيح ووضع شهادات SSL في config/ssl
، في أي وقت تقوم فيه بتشغيل حاوية LAMP الخاصة بك، ستعمل https
على نطاقاتك المحددة.
يسعدنا إذا كنت تريد إنشاء طلب سحب أو مساعدة الأشخاص في حل مشكلاتهم. إذا كنت ترغب في إنشاء علاقات عامة، فيرجى تذكر أن هذه المكدسة ليست مخصصة للاستخدام الإنتاجي، ويجب أن تكون التغييرات جيدة للأغراض العامة وليست مفرطة التخصص.
يرجى ملاحظة أننا قمنا بتبسيط هيكل المشروع من عدة فروع لكل إصدار PHP إلى فرع رئيسي مركزي واحد. يرجى إنشاء العلاقات العامة الخاصة بك ضد الفرع الرئيسي.
شكرًا لك!
نريد تمكين المطورين من إنشاء تطبيقات إبداعية بسرعة. ولذلك فإننا نوفر وسيلة سهلة لإعداد بيئة تطوير محلية للعديد من أطر العمل وإصدارات PHP المختلفة. في الإنتاج، يجب عليك تعديل الموضوعات التالية على الأقل: