استضافة ذاتية لبوابة مطور APIM
ينطبق على: المطور | أساسي | قياسي | بريميوم
يصف هذا البرنامج التعليمي كيفية الاستضافة الذاتية لبوابة مطور APIM . الاستضافة الذاتية هي واحدة من عدة خيارات لتوسيع وظائف مدخل المطور. على سبيل المثال، يمكنك استضافة بوابات متعددة لمثيل APIM الخاص بك، مع ميزات مختلفة. عندما تستضيف بوابة ذاتية بنفسك، فإنك تصبح المسؤول عنها وأنت مسؤول عن ترقياتها.
هام
ضع في اعتبارك الاستضافة الذاتية لمدخل المطور فقط عندما تحتاج إلى تعديل الذاكرة الأساسية لقاعدة التعليمات البرمجية لمدخل المطور. يتطلب هذا الخيار تكوينًا متقدمًا، بما في ذلك:
- النشر إلى نظام أساسي للاستضافة، مقدمًا اختياريًا بواسطة حل مثل CDN لزيادة التوفر والأداء
- صيانة البنية الأساسية للاستضافة وإدارتها
- التحديثات اليدوية، بما في ذلك تصحيحات الأمان، والتي قد تتطلب منك حل تعارضات التعليمات البرمجية عند ترقية قاعدة التعليمات البرمجية
ملاحظة
لا يدعم المدخل المستضاف ذاتيا الرؤية وعناصر التحكم في الوصول المتوفرة في مدخل المطور المدار.
إذا كنت قد قمت بالفعل بتحميل أو تعديل ملفات الوسائط في البوابة المدارة، فراجع الانتقال من الإدارة إلى المستضافة ذاتيًا ، لاحقًا في هذه المقالة.
لإنشاء بيئة تنمية محلية، يجب أن يكون لديك:
- مثيل خدمة APIM. إذا لم يكن لديك مثيل، فراجع Quickstart - إنشاء مثيل APIM Azure .
- حساب تخزين Azure مع تمكين ميزة مواقع الويب الثابتة. راجع إنشاء حساب تخزين.
- Git على جهازك. قم بتثبيته باتباع برنامج Git التعليمي هذا .
- Node.js (إصدار LTS،
v10.15.0
أو الأحدث) وnpm على جهازك. راجع تنزيل وتثبيت أصدار Node.js وnpm. - Azure CLI اتبع خطوات تثبيت Azure CLI .
لإعداد بيئتك المحلية، سيتعين عليك استنساخ المستودع، والتبديل إلى أحدث إصدار من بوابة المطور، وتثبيت حزم npm.
استنساخ بوابة مطور إدارة واجهة برمجة التطبيقات من GitHub:
git clone https://github.com/Azure/api-management-developer-portal.git
انتقل إلى النسخة المحلية من مستودع:
cd api-management-developer-portal
تحقق من الإصدار الأحدث من البوابة.
قبل تشغيل التعليمة البرمجية التالية، تحقق من علامة الإصدار الحالي في قسم الإصدارات في المستودع واستبدل قيمة
<current-release-tag>
بأحدث علامة إصدار.git checkout <current-release-tag>
تثبيت أي حزم npm متاح:
npm install
تلميح
استخدم دائمًا أحدث إصدار من المدخل وحافظ على تحديث المدخل المتشعب. يستخدم مهندسو البرمجيات فرع master
من هذا المستودع لأغراض التطوير اليومية. تمتلك إصدارات غير مستقرة من البرنامج.
يتطلب مدخل المطور APIM REST API لإدارة المحتوى.
قم بالانتقال إلى src
"المجلد" وافتح config.design.json
"الملف".
{
"environment": "development",
"managementApiUrl": "https://<service-name>.management.azure-api.net",
"managementApiAccessToken": "SharedAccessSignature ...",
"backendUrl": "https://<service-name>.developer.azure-api.net",
"useHipCaptcha": false,
"integration": {
"googleFonts": {
"apiKey": "..."
}
}
}
التكوين الخاص بالملف:
في
managementApiUrl
القيمة، استبدل<service-name>
باسم مثيل APIM الخاص بك. إذا قمت بتكوين المجال المخصص، فاستخدمه بدلاً من ذلك (على سبيلhttps://management.contoso.com
المثال).{ ... "managementApiUrl": "https://contoso-api.management.azure-api.net" ...
إنشاء رمز SAS يدويا لتمكين الوصول المباشر لواجهة برمجة تطبيقات REST إلى مثيل APIM الخاص بك.
نسخ رمز الوصول المميز الذي تم إنشاؤه ولصقه
managementApiAccessToken
كقيمة.في
backendUrl
القيمة، استبدل<service-name>
باسم مثيل APIM الخاص بك. إذا قمت بتكوين المجال المخصص، فاستخدمه بدلاً من ذلك (على سبيلhttps://portal.contoso.com
المثال).{ ... "backendUrl": "https://contoso-api.developer.azure-api.net" ...
إذا كنت ترغب في تمكين CAPTCHA في مدخل المطور، فعيّن
"useHipCaptcha": true
. تأكد من تكوين إعدادات CORS للواجهة الخلفية لمدخل المطور.في
integration
، ضمنgoogleFonts
، قم بتعيينapiKey
اختياريا إلى مفتاح واجهة برمجة تطبيقات Google الذي يسمح بالوصول إلى واجهة برمجة تطبيقات مطور خطوط الويب. هذا المفتاح مطلوب فقط إذا كنت تريد إضافة خطوط Google في قسم الأنماط في محرر مدخل المطور.إذا لم يكن لديك مفتاح بالفعل، يمكنك تكوين مفتاح باستخدام وحدة تحكم Google Cloud. اتبع الخطوات التالية:
- افتح وحدة تحكم Google Cloud.
- تحقق مما إذا كان قد تم تمكين واجهة برمجة تطبيقات مطور خطوط ويب. إذا لم يكن كذلك، فمكنه.
- حدد Create credentials>API key.
- في مربع الحوار المفتوح، انسخ المفتاح الذي تم إنشاؤه والصقه كقيمة
apiKey
فيconfig.design.json
الملف. - حدد تحرير مفتاح واجهة برمجة التطبيقات لفتح محرر المفتاح.
- في المحرر، ضمن قيود واجهة برمجة التطبيقات، حدد تقييد المفتاح. في القائمة المنسدلة، حدد Web Fonts Developer API.
- حدد حفظ.
قم بالانتقال إلى src
"المجلد" وافتح config.publish.json
"الملف".
{
"environment": "publishing",
"managementApiUrl": "https://<service-name>.management.azure-api.net",
"managementApiAccessToken": "SharedAccessSignature...",
"useHipCaptcha": false
}
التكوين الخاص بالملف:
انسخ والصق القيم
managementApiUrl
وmanagementApiAccessToken
من ملف التكوين السابق.إذا كنت ترغب في تمكين CAPTCHA في مدخل المطور، فعيّن
"useHipCaptcha": true
. تأكد من تكوين إعدادات CORS للواجهة الخلفية لمدخل المطور.
قم بالانتقال إلى src
"المجلد" وافتح config.runtime.json
"الملف".
{
"environment": "runtime",
"managementApiUrl": "https://<service-name>.management.azure-api.net",
"backendUrl": "https://<service-name>.developer.azure-api.net"
}
التكوين الخاص بالملف:
نسخ ولصق
managementApiUrl
القيمة من ملف التكوين السابق.في
backendUrl
القيمة، استبدل<service-name>
باسم مثيل APIM الخاص بك. إذا قمت بتكوين مجال مخصص، فاستخدمه بدلاً من ذلك (على سبيل المثالhttps://portal.contoso.com
).{ ... "backendUrl": "https://contoso-api.developer.azure-api.net" ...
قم بتكوين ميزة موقع الويب الثابت في حساب التخزين الخاص بك عن طريق توفير المسارات إلى الفهرس وصفحات الخطأ:
انتقل إلى حساب التخزين الخاص بك في مدخل Microsoft Azure وحدد موقع ويب ثابت من القائمة على اليسار.
في الصفحة موقع ويب ثابت، حدد مُمكّن.
في حقل اسم مستند الفهرس، أدخل index.html.
في حقل مسار مستند خطأ، أدخل 404/index.html.
حدد حفظ.
تكوين إعدادات مشاركة الموارد عبر المنشأ (CORS) لحساب التخزين:
انتقل إلى حساب التخزين الخاص بك في مدخل Microsoft Azure وحدد موقع الويب الثابت من القائمة على اليسار.
في علامة التبويب خدمة كائن ثنائي كبير الحجم تكوين القواعد التالية:
قاعدة القيمة الأصول المسموح بها * الطرق المسموح بها قم بتحديد كافة أفعال HTTP. العناوين الرأسية المسموح بها * عناوين رأسية مكشوفة * MAX AGE 0 حدد حفظ.
تكوين إعدادات CORS للواجهة الخلفية لمدخل المطور للسماح بالطلبات التي تنشأ من خلال مدخل المطور المستضاف ذاتيًا. يعتمد مدخل المطور المستضاف ذاتيًا على نقطة النهاية الخلفية لمدخل المطور (المحددة في backendUrl
في ملفات تكوين المدخل) لتمكين العديد من الميزات، بما في ذلك:
- التحقق من CAPTCHA
- تخويل OAuth 2.0 في وحدة تحكم الاختبار
- تفويض مصادقة المستخدم والاشتراك في المنتج
لإضافة إعدادات CORS:
- انتقل إلى مثيل APIM في مدخل Azure، وحددمدخل المطور>إعدادات المدخل من القائمة على اليسار.
- في علامة تبويب تكوين المدخل المستضاف ذاتيًا، أضف قيمة مجال أصل واحدة أو أكثر. على سبيل المثال:
- المجال الذي تتم خلاله استضافة المدخل المستضاف ذاتيًا، مثل
https://www.contoso.com
localhost
للتطوير المحلي (إن أمكن)، مثلhttp://localhost:8080
أوhttps://localhost:8080
- المجال الذي تتم خلاله استضافة المدخل المستضاف ذاتيًا، مثل
- حدد حفظ.
يمكنك الآن إنشاء طبعة بوابة محلية وتشغيلها في وضع التطوير. في وضع التطوير، يتم إيقاف تشغيل جميع التحسينات ويتم تشغيل مخططات المصدر.
شغّل الأمر التالي:
npm start
بعد فترة قصيرة، يفتح المستعرض الافتراضي تلقائيا باستخدام مثيل مدخل المطور المحلي. العنوان الافتراضي هو http://localhost:8080
، ولكن يمكن تغيير المدخل إذا كان مشغولًا 8080
بالفعل. تؤدي أي تغييرات في قاعدة التعليمات البرمجية للمشروع إلى إعادة إنشاء نافذة المستعرض وتحديثها.
قم باستخدم المحرر المرئي لتنفيذ هذه المهام:
- تخصيص المدخل الخاص بك
- المحتوى الخاص بالمؤلف
- قم بتنظيم هيكل الموقع
- قم بتجميل مظهره
راجع البرنامج التعليمي: الوصول إلى بوابة المطورين وتخصيصها . يغطي أساسيات واجهة المستخدم الإدارية ويسرد التغييرات الموصى بها للمحتوى الافتراضي. حفظ كافة التغييرات في البيئة المحلية ثم بعد ذلك اضغط Ctrl + C لإغلاقه.
تنشأ بيانات المدخل في شكل أنواع عناصر قوية. يترجمها الأمر التالي إلى ملفات ثابتة ويضع الإخراج في الدليل ./dist/website
:
npm run publish
قم باستخدام Azure CLI لتحميل الملفات الثابتة التي تم إنشاؤها محليا إلى النقطة، وتأكد من أن زوارك يمكنهم الوصول إليها:
افتح موجه أوامر النوافذ أو PowerShell أو أي أوامر أخرى.
قم بتشغيل أمر Azure CLI التالي.
قم بالاستبدال
<account-connection-string>
بسلسلة الاتصال لحساب تخزين Azure الخاص بك. يمكنك الحصول عليه من قسم مفاتيح الاختصار في حساب التخزين الخاص بك.az storage blob upload-batch --source dist/website \ --destination '$web' \ --connection-string <account-connection-string>
أصبح موقع الويب الخاص بك الآن نشطًا ضمن اسم المضيف المحدد في خصائص تخزين Azure ( نقطة نهاية أساسية في مواقع الويب الثابتة ).
قم باستبدال عنوان URL لمدخل المطور في قوالب إخطار APIM للإشارة إلى المدخل المستضاف ذاتيا. راجع كيفية تكوين التنبيهات وقوالب البريد الإلكتروني في APIM Azure.
بشكل خاص قم بتنفيذ التغييرات التالية إلى القوالب الافتراضية:
ملاحظة
تفترض القيم الموجودة في الأقسام المحدثة التالية أنك تستضيف المدخل على https://portal.contoso.com/.
تحديث عنوان URL لمطور المدخل في قالب إخطار تأكيد تغيير عنوان البريد الإلكتروني:
محتوى أصلي
<a id="confirmUrl" href="$ConfirmUrl" style="text-decoration:none">
<strong>$ConfirmUrl</strong></a>
تم التحديث
<a id="confirmUrl" href="https://portal.contoso.com/signup?$ConfirmQuery" style="text-decoration:none">
<strong>https://portal.contoso.com/signup?$ConfirmQuery</strong></a>
تحديث عنوان ويب URL لمطور المدخل في قالب إخطارتأكيد تغيير عنوان البريد الإلكتروني:
محتوى أصلي
<a id="confirmUrl" href="$ConfirmUrl" style="text-decoration:none">
<strong>$ConfirmUrl</strong></a>
تم التحديث
<a id="confirmUrl" href="https://portal.contoso.com/signup?$ConfirmQuery" style="text-decoration:none">
<strong>https://portal.contoso.com/signup?$ConfirmQuery</strong></a>
قم بتحديث عنوان URL لمطور المدخل في قالب إخطار تأكيد تغيير عنوان البريد الإلكتروني:
محتوى أصلي
<a href="$ConfirmUrl">$ConfirmUrl</a>
تم التحديث
<a href="https://portal.contoso.com/confirm-v2/identities/basic/invite?$ConfirmQuery">https://portal.contoso.com/confirm-v2/identities/basic/invite?$ConfirmQuery</a>
قم بتحديث عنوان URL لبوابة المطوِّر في نموذج الإخطار تنشيط اشتراك جديد :
محتوى أصلي
Thank you for subscribing to the <a href="http://$DevPortalUrl/products/$ProdId"><strong>$ProdName</strong></a> and welcome to the $OrganizationName developer community. We are delighted to have you as part of the team and are looking forward to the amazing applications you will build using our API!
تم التحديث
Thank you for subscribing to the <a href="https://portal.contoso.com/product#product=$ProdId"><strong>$ProdName</strong></a> and welcome to the $OrganizationName developer community. We are delighted to have you as part of the team and are looking forward to the amazing applications you will build using our API!
محتوى أصلي
Visit the developer <a href="http://$DevPortalUrl/developer">profile area</a> to manage your subscription and subscription keys
تم التحديث
Visit the developer <a href="https://portal.contoso.com/profile">profile area</a> to manage your subscription and subscription keys
محتوى أصلي
<a href="http://$DevPortalUrl/docs/services?product=$ProdId">Learn about the API</a>
تم التحديث
<a href="https://portal.contoso.com/product#product=$ProdId">Learn about the API</a>
محتوى أصلي
<p style="font-size:12pt;font-family:'Segoe UI'">
<strong>
<a href="http://$DevPortalUrl/applications">Feature your app in the app gallery</a>
</strong>
</p>
<p style="font-size:12pt;font-family:'Segoe UI'">You can publish your application on our gallery for increased visibility to potential new users.</p>
<p style="font-size:12pt;font-family:'Segoe UI'">
<strong>
<a href="http://$DevPortalUrl/issues">Stay in touch</a>
</strong>
</p>
<p style="font-size:12pt;font-family:'Segoe UI'">
If you have an issue, a question, a suggestion, a request, or if you just want to tell us something, go to the <a href="http://$DevPortalUrl/issues">Issues</a> page on the developer portal and create a new topic.
</p>
تم التحديث
<!--Remove the entire block of HTML code above.-->
قم بتحديث عنوان URL لمطور المدخل في قالب إخطار تأكيد تغيير عنوان البريد الإلكتروني:
محتوى أصلي
<a href="$DevPortalUrl">$DevPortalUrl</a>
تم التحديث
<a href="https://portal.contoso.com/confirm-password?$ConfirmQuery">https://portal.contoso.com/confirm-password?$ConfirmQuery</a>
تحديث عنوان ويب URL المدخل المطور في أي قالب يحتوي على ارتباط في تذييل الصفحة:
محتوى أصلي
<a href="$DevPortalUrl">$DevPortalUrl</a>
تم التحديث
<a href="https://portal.contoso.com/">https://portal.contoso.com/</a>
بمرور الوقت، قد تتغير متطلبات عملك. يمكنك في نهاية المطاف في حالة حيث الإصدار المدار من مدخل مطور APIM لم يعد يلبي احتياجاتك. على سبيل المثال، قد تُجبرك أحد المتطلبات الجديدة على إنشاء عنصر واجهة مستخدم مخصص يتكامل مع مزود بيانات تابع لجهة خارجية. بخلاف الإصدار المُدار، توفر لك النسخة ذاتية الاستضافة من المدخل مرونة كاملة وقابلية للتوسعة.
يمكنك الانتقال من الإصدار المدار إلى الإصدار ذاتي الاستضافة ضمن نفس مثيل خدمة APIM. تحتفظ العملية بالتعديلات التي أجريتها في الإصدار المُدار من المدخل. قم بالتأكد من إجراء احتياطية لمحتوى المدخل مسبقا. يمكنك العثور على البرنامج النصي للنسخ الاحتياطي في scripts
مجلد بوابة مطور APIM GitHub repo .
تكاد تكون عملية التحويل مطابقة لإعداد بوابة عامة ذاتية الاستضافة، كما هو موضح في الخطوات السابقة في هذه المقالة. هناك استثناء واحد في خطوة التكوين. يجب أن يكون حساب التخزين في ملف config.design.json
هو نفسه حساب التخزين للإصدار المُدار من المدخل. راجع البرنامج التعليمي: استخدم هوية مخصصة لنظام Linux VM للوصول إلى Azure Storage عبر بيانات اعتماد SAS للحصول على إرشادات حول كيفية استرداد عنوان URL الخاص بـSAS.
تلميح
نوصي باستخدام حساب تخزين منفصل في ملف config.publish.json
. يمنحك هذا النهج مزيدًا من التحكم ويبسط إدارة خدمة استضافة المدخل الخاص بك.
- Microsoft Learn الطرق البديلة للاستضافة الذاتية