استضافة موقعك على Firebase Hosting
بنيت موقعاً جميلاً، فيه قاعدة بيانات وتسجيل دخول، لكنه يعمل على جهازك فقط! حان وقت نشره ليراه العالم. Firebase Hosting يستضيف المواقع بسرعة عالية، مع شهادة أمان HTTPS مجانية، وخطة مجانية سخية تكفي أغلب المشاريع الصغيرة. في هذا الدرس ستنشر موقعك على الإنترنت بأوامر قليلة.
ماذا يستضيف Firebase Hosting؟
Section titled “ماذا يستضيف Firebase Hosting؟”Firebase Hosting مخصص لـالملفات الثابتة: HTML و CSS و JavaScript والصور. وهذا يكفي لمواقع كثيرة جداً:
- المواقع الشخصية وصفحات الهبوط.
- تطبيقات الويب المبنية بـ React أو Vue أو Flutter Web، بعد بنائها.
- المواقع التي تعتمد على Firestore و Authentication، لأن الاتصال بهما يتم من المتصفح نفسه.
تخيّل الاستضافة مثل محل في سوق كبير: تضع بضاعتك (ملفات موقعك) على الرفوف، والسوق (Firebase) يتولى الحراسة والإضاءة وفتح الأبواب للزوار من كل مكان.
الخطوة 1: تهيئة المشروع
Section titled “الخطوة 1: تهيئة المشروع”داخل مجلد موقعك، بعد تثبيت Firebase CLI وتسجيل الدخول كما في الدرس الثاني:
firebase init hostingستسألك الأداة عدة أسئلة:
- أي مشروع؟ اختر مشروعك الموجود من القائمة.
- ما مجلد الملفات العامة؟ المجلد الذي فيه
index.html. الافتراضيpublic، وفي مشاريع البناء مثل Vite يكون غالباًdist، وفي Flutter Web يكونbuild/web. - هل هو تطبيق صفحة واحدة (Single-Page App)؟ أجب بنعم إذا كان موقعك React أو Flutter Web يدير التنقل بنفسه، فتُوجَّه كل الروابط إلى
index.html. - هل تريد النشر التلقائي من GitHub؟ يمكنك التأجيل.
ملف firebase.json
Section titled “ملف firebase.json”ستنشئ الأداة ملف إعدادات في جذر المشروع:
{ "hosting": { "public": "public", "ignore": ["firebase.json", "**/.*", "**/node_modules/**"] }}public: المجلد الذي سيُرفع.ignore: ملفات لا تُرفع أبداً، مثل الملفات المخفية ومجلدnode_modules.
ويمكنك لاحقاً إضافة إعدادات مثل التحويلات (redirects)، أو رؤوس التخزين المؤقت (headers).
الخطوة 2: التجربة محلياً
Section titled “الخطوة 2: التجربة محلياً”قبل النشر، شاهد موقعك كما سيظهر تماماً على Firebase:
firebase emulators:start --only hostingستعطيك الأداة رابطاً محلياً مثل http://127.0.0.1:5000. افتحه في المتصفح. جربنا هذا فعلاً: الصفحة الرئيسية ظهرت بنجاح، وأي مسار غير موجود أعطى صفحة الخطأ 404، تماماً كما سيحدث على الإنترنت.
الخطوة 3: النشر
Section titled “الخطوة 3: النشر”firebase deploy --only hostingالأداة ترفع ملفاتك، وفي النهاية تعطيك رابط الموقع، بالشكل:
https://school-app-4f2a1.web.appهذا كل شيء! موقعك الآن على الإنترنت، ويصل إليه أي شخص في العالم، مع HTTPS تلقائي. وستجد أيضاً رابطاً بديلاً ينتهي بـ firebaseapp.com.
وعند أي تعديل: عدّل ملفاتك، ثم نفّذ firebase deploy من جديد. وكل نشر يُحفظ في السجل، فإذا نشرت خطأ، تستطيع التراجع للإصدار السابق بضغطة من Firebase Console.
الدومين الخاص
Section titled “الدومين الخاص”رابط web.app ممتاز للبداية، لكن ربما تريد دومينك الخاص مثل myschool.com:
- اشترِ الدومين من أي شركة تسجيل دومينات.
- في Firebase Console ← Hosting ← Add custom domain.
- اتبع التعليمات لإضافة سجلات DNS عند شركة الدومين.
- انتظر التفعيل، وقد يستغرق ساعات. وسيحصل دومينك على HTTPS مجاناً تلقائياً.
مثال: نشر تطبيق Flutter Web
Section titled “مثال: نشر تطبيق Flutter Web”إذا كنت درست كورس Flutter في هذا الموقع، يمكنك نشر تطبيقك على الويب:
flutter build webfirebase init hosting # المجلد العام: build/web، وتطبيق صفحة واحدة: نعمfirebase deploy --only hostingتطبيق Flutter نفسه، يعمل الآن في المتصفح لأي شخص!
جرّب بنفسك
Section titled “جرّب بنفسك”- أنشئ مجلداً فيه
public/index.htmlبصفحة شخصية بسيطة عن نفسك. - نفّذ
firebase init hostingواربطه بمشروعك. - جرّب الموقع محلياً بالمحاكي.
- انشره بـ
firebase deploy --only hosting، وافتح الرابط من هاتفك. - عدّل الصفحة وانشرها مرة أخرى، ثم جرّب التراجع للإصدار الأول من Console.
- تحدٍّ: انشر موقعاً يستخدم Firestore من الدرس الثالث، ليعرض بيانات حقيقية على الإنترنت.
أخطاء شائعة
Section titled “أخطاء شائعة”- مجلد عام خاطئ: إذا ظهرت صفحة Firebase الافتراضية بدلاً من موقعك، فقيمة
publicفيfirebase.jsonلا تشير لمجلد ملفاتك. - نشر قبل البناء: في مشاريع React و Vite و Flutter، نفّذ أمر البناء أولاً، وإلا ترفع نسخة قديمة أو فارغة.
- روابط داخلية تعطي 404 في تطبيق صفحة واحدة: أجب «نعم» على سؤال Single-Page App، أو أضف قاعدة إعادة كتابة (rewrite) في
firebase.json.
اختبر نفسك
Section titled “اختبر نفسك”سؤال
أي أمر ينشر موقعك على Firebase Hosting؟
firebase deploy يرفع ملفات المجلد العام، و --only hosting يحدد النشر للاستضافة فقط.
سؤال
ما فائدة الأمر firebase hosting:channel:deploy preview؟
قنوات المعاينة تعطيك رابطاً مؤقتاً لمراجعة التعديلات قبل نشرها على الموقع الحقيقي.
الخلاصة
Section titled “الخلاصة”- Firebase Hosting يستضيف الملفات الثابتة بسرعة ومع HTTPS مجاني.
firebase init hostingيجهز المشروع، وfirebase.jsonيحدد المجلد العام.firebase emulators:start --only hostingللتجربة المحلية قبل النشر.firebase deploy --only hostingينشر الموقع على رابطweb.app، ويمكن التراجع لأي إصدار سابق.- قنوات المعاينة للتجربة، والدومين الخاص من Console.