إدارة بيئات متعددة (التطوير ، التدريج ، الإنتاج) في تطبيق PHP
يعد إدارة بيئات متعددة أمرًا ضروريًا في تطوير الويب الحديث لضمان تصرف تطبيقك بشكل مناسب عبر مراحل مختلفة من دورة حياته. هذه البيئات - التطوير ، التدريج ، و الإنتاج - يخدم كل منهما غرضًا محددًا ، ويجب تكوين كل منها بشكل مختلف لتلبية الاحتياجات الفريدة لتلك المرحلة. &&&]
على سبيل المثال:
- التطوير : البيئة التي يعمل فيها المطورون ، عادةً مع المزيد من أدوات تسجيل وتصحيح الأخطاء.
- التدريج : نسخة طبق الأصل من بيئة الإنتاج المستخدمة للاختبار النهائي قبل النشر ، عادةً مع البيانات التي تعكس الإنتاج.
- الإنتاج : البيئة المباشرة حيث يتم الوصول إلى التطبيق من قبل المستخدمين النهائيين.
مفتاح إدارة بيئات متعددة فعليًا في PHP هو إدارة التكوين. في هذه المقالة ، سنخوض أفضل الممارسات للتعامل مع التكوينات الخاصة بالبيئة ، وضمان عمليات النشر السلسة ، وتجنب المزالق الشائعة.
1. التكوين الخاص بالبيئة
أحد أهم جوانب إدارة البيئات المتعددة هو التأكد من أن تكوين التطبيق الخاص بك يختلف وفقًا للبيئة. يمكن أن تختلف الإعدادات مثل اتصالات قاعدة البيانات ومفاتيح API وإبلاغ الأخطاء وسلوكيات التخزين المؤقت بشكل كبير بين التطور والتدريج والإنتاج.
a. استخدم متغيرات البيئة
هي متغيرات البيئة هي وسيلة شائعة وآمنة لإدارة التكوينات الخاصة بالبيئة. يمكنك تعيين متغيرات مختلفة لكل بيئة (التطوير ، التدريج ، الإنتاج) ، والوصول إليها ضمن تطبيق PHP الخاص بك باستخدام getenv () أو $ _env.
على سبيل المثال:
- يمكنك استخدام مكتبات مثل vlucas/phpdotenv لتحميل هذه المتغيرات في تطبيق php الخاص بك.
. env
:
app_env = التطوير
db_host = localhost
DB_USER = الجذر
db_password = rootpassword
APP_ENV=development
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=rootpassword
load () ؛
// الوصول إلى متغيرات البيئة
$ env = getenv ('app_env') ؛
$ dbhost = getenv ('db_host') ؛
$ dbuser = getenv ('db_user') ؛
$ dbpassword = getenv ('db_password') ؛
صدى "البيئة الحالية: $ env" ؛
؟>
load();
// Accessing environment variables
$env = getenv('APP_ENV');
$dbHost = getenv('DB_HOST');
$dbUser = getenv('DB_USER');
$dbPassword = getenv('DB_PASSWORD');
echo "Current environment: $env";
?>
ب. ملفات التكوين لكل بيئة
في التطبيقات الكبيرة ، من الشائع تخزين إعدادات التكوين في ملفات منفصلة لكل بيئة. على سبيل المثال ، يمكنك الحصول على دليل تكوين مع ملفات التكوين مثل:
config/dev.php
- config/traging.php
- config/prod.php
-
سيحتوي كل ملف على إعدادات خاصة بالبيئة المعنية. يمكنك تحميل هذه التكوينات بشكل ديناميكي بناءً على قيمة متغير بيئة APP_ENV.
مثال
:
load();
// Accessing environment variables
$env = getenv('APP_ENV');
$dbHost = getenv('DB_HOST');
$dbUser = getenv('DB_USER');
$dbPassword = getenv('DB_PASSWORD');
echo "Current environment: $env";
?>
ج. التعامل مع تكوينات قاعدة البيانات
تكوينات قاعدة البيانات عادة ما تختلف بين البيئات. قد يكون لديك قاعدة بيانات محلية في التطوير ، وقاعدة بيانات انطلاق منفصلة ، وقاعدة بيانات إنتاج. يساعد تخزين هذه التفاصيل في متغيرات البيئة على عزلها عن قاعدة الكود.
setAttribute (pdo :: attr_errmode ، pdo :: errmode_exception) ؛
} catch (pdoException $ e) {
صدى "فشل الاتصال:". $ e-> getMessage () ؛
}
؟>
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
?>
2. خطأ في الإبلاغ وتصحيح الأخطاء
قد تتطلب بيئات مختلفة مستويات مختلفة من الإبلاغ عن الخطأ:
التطوير - : تريد رسائل خطأ مفصلة ، تحذيرات ، وسجلات لتصحيح الأخطاء.
التدريج - : عادةً ما تريد إظهار الأخطاء فقط إذا كانت مهمة أو لتسجيل الأخطاء ولكن لا تعرضها للمستخدم.
الإنتاج - : لا ينبغي إظهار أي رسائل خطأ للمستخدمين النهائيين في الإنتاج. بدلاً من ذلك ، قم بتسجيل الأخطاء إلى ملف أو خدمة خارجية مثل Sentry أو loggly .
a. قم بتعيين Display_errors على أساس البيئة
يمكنك التحكم في الإبلاغ عن الخطأ عن طريق التحقق من البيئة وتحديد المستوى المناسب لمعالجة الأخطاء:
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
?>
3. النشر والتحكم في الإصدار
إدارة النشر هي جانب آخر مهم لإدارة بيئات متعددة. أدوات مثل
git
، ci/cd pipelines ، و Automation Automation المساعدة في تبسيط العملية.
a. استراتيجية GIT المتفرعة
من المهم استخدام استراتيجية متفرعة مثل
تدفق git
أو GitHub Flow لإدارة التعليمات البرمجية عبر بيئات مختلفة:
التطوير - : تتم إضافة جميع الميزات الجديدة وإصلاحات الأخطاء في فروع الميزات ويتم دمجها في التطوير.
التدريج - : يتم استخدام فرع التدريج للتحضير للإنتاج ، وغالبًا ما يكون مع المرشحين للإفراج.
الإنتاج - : يتم دمج الكود الذي تم اختباره تمامًا فقط في Main أو Master ويتم نشره في الإنتاج.
ب. التكامل المستمر والنشر (CI/CD)
أدوات مثل
Jenkins
، إجراءات github نشرها على البيئة المقابلة. هذا يقلل من الخطأ البشري ويضمن الاتساق بين البيئات.
قد يبدو خط أنابيب CI/CD نموذجي لبيئات متعددة:
يتم دفع الكود إلى فرع التدريج
: يتم تشغيل الاختبارات الآلية.
إذا تمر الاختبارات - ، فانتشر إلى بيئة التدريج.
يتم دمج الكود على فرع الإنتاج - : يتم تشغيل البرامج النصية للنشر للدفع إلى البيئة الحية.
- 4. الخدمات الخاصة بالبيئة
قد تختلف بعض الخدمات مثل واجهات برمجة التطبيقات وآليات التخزين المؤقت وأنظمة تخزين الملفات بين البيئات. في الإنتاج ، قد تستخدم خدمات مثل
Amazon S3
لتخزين الملفات ، بينما في التطوير ، يمكنك استخدام نظام الملفات المحلي.
في ملفات التكوين أو متغيرات البيئة ، حدد تكوينات الخدمة المختلفة بناءً على البيئة. على سبيل المثال:
// إعداد تخزين الملفات
if (getenv ('app_env') === 'Production') {
define ('file_storage_path' ، 's3: // my-bucket/files/') ؛
} آخر {
define ('file_storage_path' ، '/var/www/app/files/') ؛
}
5. تحسينات التخزين المؤقت والأداء
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
?>
تختلف استراتيجيات التخزين المؤقت وتحسينات الأداء أيضًا عبر البيئات. في التطوير ، قد ترغب في تعطيل التخزين المؤقت للحصول على ردود فعل أسرع ، بينما في الإنتاج ، ستحتاج إلى التخزين المؤقت العدواني لتحسين الأداء.
يمكنك التحكم في هذا عن طريق تعيين رؤوس ذاكرة التخزين المؤقت المناسبة ، باستخدام أدوات مثل ]
6. حماية
في بيئات مختلفة ، يجب أن تختلف مقاييس الأمان أيضًا:
التطوير
: ربما تكون قد استرخت إعدادات أمان لسهولة التطوير (على سبيل المثال ، مما يسمح بمشاركة موارد الأصل).
التدريج والإنتاج
: فرض سياسات أمان أكثر صرامة ، بما في ذلك HTTPs ، وحماية البرمجة النصية عبر المواقع ، وحماية حقن SQL.
يمكنك أيضًا التفكير في استخدام أدوات الإدارة السرية (على سبيل المثال ، - Hashicorp Vault أو
-
خاتمة
إدارة بيئات متعددة في تطبيق PHP أمر بالغ الأهمية لضمان سلوك تطبيقك كما هو متوقع أثناء التطوير والاختبار والإنتاج. من خلال فصل التكوينات الخاصة بالبيئة ، والتحكم في الإبلاغ عن الأخطاء ، واستخدام التحكم في الإصدار و CI/CD ، وتكييف التخزين المؤقت والخدمات لكل بيئة ، يمكنك تبسيط عملية التطوير وضمان التحولات السلسة بين المراحل.
في النهاية ، تساعدك استراتيجية قوية لإدارة بيئات متعددة في الحفاظ على مستوى عالٍ من جودة الكود والموثوقية والأمان عبر دورة حياة التطبيق الخاصة بك.