- Konu sahibi
- #1
Firebase Hosting, web uygulamasının HTML, CSS, JavaScript ve görseller gibi yayın dosyalarını yönetilen altyapı ve küresel CDN üzerinden sunan hizmettir. Statik siteler ve tek sayfalı uygulamalar için uygundur. Sunucunun işletim sistemini yönetmek yerine, yayınlanacak klasörü ve yönlendirme kurallarını belirlersiniz.
Hosting, kullanıcı hesabı veya veritabanı hizmetinin kendisi değildir. Authentication, Firestore ve diğer backend servisleri ayrı bileşenlerdir. Dinamik içerik için Cloud Functions veya Cloud Run ile birleştirilebilir; ancak yalnızca bir PHP dosyasını yayın klasörüne koymak onu PHP uygulaması olarak çalıştırmaz.
Örneğin bir geliştiricinin tanıtım sayfası public/index.html içinde olsun. Hosting yapılandırmasındaki public alanı bu klasörü gösterir. Buluta yayınlama işlemi yapıldığında dosyalar proje adresinden ve bağlanmış özel alan adından sunulabilir. Yerel emülatör ise aynı yayınlama işlemi değildir; geliştirme bilgisayarında deneme sağlar.
Aynı deneme klasöründe firebase.json dosyasını şöyle hazırlayın:
Bu klasörde aşağıdaki komutu çalıştırın:
demo- önekli proje kimliği, canlı kaynağı bulunmayan bir emülatör projesini belirtir. Örnekte veritabanı veya harici API çağrısı yoktur. CLI'nin verdiği yerel adresi açın; varsayılan port bu yapılandırmada 5000'dir. Port doluysa çıktıyı inceleyin. Sayfadaki metni değiştirip yenileyerek doğru klasörün sunulduğunu doğrulayın; işlemi Ctrl+C ile durdurabilirsiniz.
Yayın sonrasında ana sayfa, doğrudan alt URL, dosya yüklenmesi ve HTTPS erişimi ayrı ayrı kontrol edilmelidir. Geçmiş bir Hosting sürümüne dönmek, veritabanındaki değişikliklerin de geri alınacağı anlamına gelmez.
Hosting, kullanıcı hesabı veya veritabanı hizmetinin kendisi değildir. Authentication, Firestore ve diğer backend servisleri ayrı bileşenlerdir. Dinamik içerik için Cloud Functions veya Cloud Run ile birleştirilebilir; ancak yalnızca bir PHP dosyasını yayın klasörüne koymak onu PHP uygulaması olarak çalıştırmaz.
Hangi dosyalar yayınlanır?
Sade bir HTML projesinde public klasörü yeterli olabilir. Derleme kullanan bir projede ise kaynak dosyalar yerine üretim çıktısının bulunduğu klasör seçilir. Bu klasörün adı kullanılan araca göre değişir; dist veya build adını bütün projeler için varsaymayın.Örneğin bir geliştiricinin tanıtım sayfası public/index.html içinde olsun. Hosting yapılandırmasındaki public alanı bu klasörü gösterir. Buluta yayınlama işlemi yapıldığında dosyalar proje adresinden ve bağlanmış özel alan adından sunulabilir. Yerel emülatör ise aynı yayınlama işlemi değildir; geliştirme bilgisayarında deneme sağlar.
Önce yerelde küçük bir deneme
Firebase CLI ve onun gerektirdiği Node.js ortamı kurulmuş olmalıdır. Boş bir deneme klasöründe public adlı alt klasör açın ve içine index.html dosyası oluşturun:
HTML:
<!doctype html>
<html lang="tr">
<meta charset="utf-8">
<title>Hosting denemesi</title>
<h1>Yerel Hosting denemesi</h1>
<p>Bu sayfa emülatörden sunuluyor.</p>
</html>
Aynı deneme klasöründe firebase.json dosyasını şöyle hazırlayın:
JSON:
{
"hosting": {
"public": "public",
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"]
},
"emulators": {"hosting": {"port": 5000}}
}
Bu klasörde aşağıdaki komutu çalıştırın:
Bash:
firebase emulators:start --only hosting --project demo-web-rehber
demo- önekli proje kimliği, canlı kaynağı bulunmayan bir emülatör projesini belirtir. Örnekte veritabanı veya harici API çağrısı yoktur. CLI'nin verdiği yerel adresi açın; varsayılan port bu yapılandırmada 5000'dir. Port doluysa çıktıyı inceleyin. Sayfadaki metni değiştirip yenileyerek doğru klasörün sunulduğunu doğrulayın; işlemi Ctrl+C ile durdurabilirsiniz.
| İhtiyaç | Hosting'in rolü | Ayrı kontrol |
|---|---|---|
| Statik tanıtım sitesi | Hazır dosyaları sunar | Yayın klasörü ve dosya yolları |
| İstemci taraflı uygulama | Derleme çıktısını sunar | Alt URL'ler için uygun rewrite |
| Sunucuda hesaplama | Backend'e yönlendirilebilir | Cloud Run/Functions çalışma ortamı |
| Veri ve kullanıcı hesabı | Arayüz dosyalarını sunar | Veritabanı, kimlik doğrulama ve erişim kuralları |
Yayına geçmeden kontrol sırası
- Uygulamanın üretim çıktısını belirleyin. Denemede çalışan kaynak klasörünü yanlışlıkla yayın hedefi yapmayın.
- Ana sayfanın yanında doğrudan açılan alt adresleri de test edin. İstemci taraflı yönlendirici varsa gerekli rewrite kuralını tanımlayın; her siteyi gelişigüzel index.html'e çevirmeyin.
- Klasörde sunucu özel anahtarı, hizmet hesabı dosyası veya gizli backend parolası bulunmadığını kontrol edin. Tarayıcıya sunulan dosyalar ziyaretçiye açıktır.
- Gerçek Firebase projesiyle çalışırken hangi servislerin yerel, hangilerinin canlı olduğunu ayırın. Yalnız Hosting'i emüle etmek diğer canlı servisleri kendiliğinden emüle etmez.
- Buluta dağıtımdan önce hedef projeyi, planı ve kullanacağınız servislerin ücretlendirmesini inceleyin. Yerel örneğin çalışması, bulutta sınırsız ücretsiz kullanım sözü değildir.
Yayın sonrasında ana sayfa, doğrudan alt URL, dosya yüklenmesi ve HTTPS erişimi ayrı ayrı kontrol edilmelidir. Geçmiş bir Hosting sürümüne dönmek, veritabanındaki değişikliklerin de geri alınacağı anlamına gelmez.