Bir web sitesi kurmak istediğinizde aklınıza gelen ilk isim büyük ihtimalle WordPress oluyor. Ancak WordPress'in ardında çalışan MySQL veritabanı, sürekli güncellenen eklenti ekosistemi ve önbellek katmanları bazen kurumsal bir siteye göre fazla ağır kalabiliyor. İşte tam bu noktada "flat-file" yani dosya tabanlı içerik yönetim sistemleri devreye giriyor. Grav CMS, bu ailenin en olgun ve en hızlı üyelerinden biri. Veritabanı kurmadan, yalnızca dosyalarla çalışan, saniyeler içinde ayağa kalkan ve içeriğini düz metin Markdown dosyalarında saklayan açık kaynaklı bir sistem.
Bu rehberde Grav'ın veritabanısız mimarisinin neden bu kadar hızlı olduğunu, sunucuya nasıl kurulduğunu, içeriğin dosya sisteminde nasıl organize edildiğini, tema ve eklenti yönetimini ve klasik WordPress ile arasındaki farkları uygulamalı örneklerle anlatacağım. Amaç, "acaba benim projeme uygun mu" sorusuna somut cevap verebilmeniz. Kıdemli bir sistem yöneticisinin masasında oturuyormuş gibi ilerleyeceğiz: gerçek komutlar, gerçek dizin yapıları ve karşılaştığınız ilk sorunlarda başvuracağınız pratik notlarla.
Flat-File Mimarisi Neden Bu Kadar Hızlı#
Grav'ı diğer içerik yönetim sistemlerinden ayıran en temel özellik, hiçbir veritabanı sunucusuna ihtiyaç duymamasıdır. WordPress bir sayfayı gösterirken PHP kodu çalıştırır, MySQL'e onlarca sorgu atar, sonuçları birleştirir ve HTML üretir. Grav ise içeriği doğrudan dosya sisteminden okur. Her sayfa bir Markdown dosyasıdır, her ayar bir YAML dosyasıdır. Bu yaklaşım hem bakımı basitleştirir hem de performansı ciddi biçimde artırır.
Grav ilk çalıştığında tüm sayfaları tarar ve derlenmiş bir önbellek oluşturur. Bu önbellek dosyaya yazıldığı için sonraki ziyaretlerde neredeyse hiç işlem yapılmaz; hazır çıktı doğrudan servis edilir. Bir veritabanı bağlantısının açılıp kapanması, sorgu kuyruğunun beklemesi gibi darboğazlar burada yoktur. Küçük bir VPS üzerinde bile yüzlerce eşzamanlı isteği rahatça karşılar.
Mimarinin getirdiği ikinci büyük avantaj taşınabilirliktir. Siteniz baştan sona bir klasörden ibarettir. Yedek almak için mysqldump çalıştırmanıza gerek yoktur; klasörü kopyalamanız yeterlidir. Bir sunucudan diğerine geçiş, rsync ya da basit bir arşiv ile dakikalar sürer. Bu özellik, düzenli yedekleme ve göç senaryolarını inanılmaz kolaylaştırır.
| Özellik | Grav (Flat-File) | Veritabanılı CMS |
|---|---|---|
| Veritabanı | Gerekmez | MySQL/PostgreSQL zorunlu |
| İçerik depolama | Markdown dosyaları | Veritabanı tabloları |
| Yedekleme | Klasör kopyala | Dosya + DB dökümü |
| Taşıma | rsync / arşiv | Dışa aktarma + içe aktarma |
| İlk kurulum süresi | 1-2 dakika | 5-15 dakika |
| Sürüm kontrolü (Git) | Doğrudan uyumlu | Zor (binary DB) |
Grav'ı Sunucuya Kurmak#
Grav'ın kurulumu, alışkın olduğunuz kurulum sihirbazlarına göre çok daha yalındır. Sadece PHP 8.1 veya üzeri, birkaç PHP eklentisi ve bir web sunucusu yeterlidir. Veritabanı oluşturma, kullanıcı yetkilendirme gibi adımlar tümüyle ortadan kalkar.
Öncelikle gerekli PHP eklentilerinin sunucuda kurulu olduğundan emin olun. Debian veya Ubuntu tabanlı bir sistemde şu paketleri kurmanız yeterli olur.
sudo apt update
sudo apt install php-cli php-fpm php-curl php-gd php-mbstring \
php-xml php-zip php-yaml unzip -y
Ardından Grav'ın güncel sürümünü indirip web dizinine açalım. Aşağıdaki komutlar, siteyi /var/www/grav altında konumlandırır ve dosya izinlerini web sunucusunun kullanabileceği şekilde ayarlar.
cd /var/www
sudo wget https://getgrav.org/download/core/grav-admin/latest -O grav.zip
sudo unzip grav.zip -d /var/www
sudo mv /var/www/grav-admin /var/www/grav
sudo chown -R www-data:www-data /var/www/grav
sudo chmod -R 755 /var/www/grav
Grav, gelişmiş yönetim işlemleri için gpm (Grav Package Manager) adlı bir komut satırı aracı sunar. Kurulumdan hemen sonra sistemi güncel tutmak ve eklenti yönetimini kolaylaştırmak için bu aracı tanımak faydalıdır.
cd /var/www/grav
bin/gpm selfupgrade
bin/gpm update
Web Sunucusu Yapılandırması#
Grav'ı bir alan adı üzerinden yayınlamak için web sunucusunda tek bir sanal sunucu bloğu tanımlamanız yeterli. Nginx tarafında dikkat edilmesi gereken en önemli nokta, güvenlik açısından belirli dizinlere doğrudan erişimi engellemek ve tüm istekleri index.php üzerinden yönlendirmektir.
server {
listen 80;
server_name ornek-siteniz.com;
root /var/www/grav;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~* /(\.git|cache|bin|logs|backup|tests)/.*$ {
return 403;
}
location ~* \.(txt|md|yaml|twig)$ {
return 403;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Yapılandırmayı kaydettikten sonra Nginx'i test edip yeniden başlatın. Ardından tarayıcıdan http://ornek-siteniz.com/admin adresine giderek yönetim panelini ilk kez açtığınızda sizden bir yönetici hesabı oluşturmanızı isteyecektir. Bu adım bir veritabanına değil, user/accounts klasöründeki bir YAML dosyasına yazılır.
sudo nginx -t
sudo systemctl reload nginx
Yayına geçmeden önce trafiği mutlaka HTTPS'e taşıyın. Ücretsiz bir sertifika ile başlayabilir, kurumsal bir görünüm için genişletilmiş doğrulamalı bir sertifikayı tercih edebilirsiniz. Bu konuda SSL sertifikası çözümlerimize göz atabilir, gelen saldırıları filtrelemek için WAF ve DDoS koruma katmanlarını devreye alabilirsiniz.
İçeriğin Dosya Sisteminde Organizasyonu#
Grav'da içerik yönetiminin kalbi user/pages klasörüdür. Her sayfa, kendi klasörünün içinde bir Markdown dosyasıyla temsil edilir. Klasörlerin isimlendirilmesi hem menü sırasını hem de URL yapısını doğrudan belirler. Bu yüzden dizin yapısını anlamak, Grav'ı verimli kullanmanın ilk şartıdır.
Tipik bir site şu şekilde organize olur. Sayısal ön ekler menüdeki sıralamayı belirlerken, klasör adının kalan kısmı URL'nin slug'ını oluşturur.
user/pages/
├── 01.anasayfa/
│ └── default.md
├── 02.hakkimizda/
│ └── default.md
├── 03.blog/
│ ├── blog.md
│ ├── ilk-yazi/
│ │ └── item.md
│ └── ikinci-yazi/
│ └── item.md
└── 04.iletisim/
└── form.md
Her Markdown dosyasının başında, tıpkı bu makalede olduğu gibi bir YAML frontmatter bloğu bulunur. Burada sayfanın başlığı, yayın tarihi, kullanılacak şablon ve meta veriler tanımlanır. Aşağıdaki örnek, bir blog yazısının ne kadar sade bir yapıya sahip olduğunu gösterir.
---
title: İlk Blog Yazım
date: 2026-07-10 09:00
taxonomy:
category: [teknoloji]
tag: [grav, cms, hosting]
---
Bu bir blog yazısının gövdesidir. Doğrudan Markdown yazarsınız.
## Alt başlık
İçerik akıcı biçimde devam eder, resim ve bağlantı eklenebilir.
Bu yaklaşım, içeriğinizin tamamen sürüm kontrolüyle uyumlu olması anlamına gelir. Tüm siteyi bir Git deposunda tutabilir, her değişikliği commit'leyebilir ve gerekirse geçmişe dönebilirsiniz. Ekip çalışmasında bu, veritabanı tabanlı sistemlerde neredeyse imkânsız olan bir esneklik sunar.
Tema ve Eklenti Yönetimi#
Grav'ın görsel kimliği Twig şablon motoruyla oluşturulan temalarla belirlenir. Varsayılan olarak Quark teması gelir; ancak resmî depoda yüzlerce ücretsiz tema ve eklenti bulunur. Tema ve eklenti kurulumu, komut satırından tek satırla yapılır. Bu, WordPress'in eklenti mağazasına benzer ama sunucu üzerinde çok daha hafif çalışır.
Örneğin form yeteneği, e-posta bildirimleri ve bir SEO eklentisini birlikte kurmak isterseniz aşağıdaki komut yeterlidir.
cd /var/www/grav
bin/gpm install form email seo
bin/gpm install antimatter
Eklenti ayarları da yine YAML dosyalarında tutulur. Bir eklentinin davranışını değiştirmek için user/config/plugins altındaki ilgili dosyayı düzenlersiniz. Aşağıda basit bir SEO eklentisi yapılandırması görüyorsunuz; site genelinde varsayılan başlık formatını ve sosyal medya kartlarını yönetir.
enabled = true
default_title_format = "{page} | Kurumsal Siteniz"
twitter_card = summary_large_image
Kendi temanızı geliştirmek istediğinizde Twig'in mantığını bilmek yeterlidir. Temalar themes klasöründe yaşar ve her biri templates altında .html.twig dosyaları içerir. İçerikle tasarımın bu şekilde tamamen ayrılması, kurumsal projelerde tasarım ekibiyle içerik ekibinin birbirine dokunmadan çalışmasını sağlar. Uygulama ve şablon çeşitliliği arayanlar için App Center kataloğumuzda hazır çözümler de bulabilirsiniz.
Grav ile WordPress Karşılaştırması#
İki sistemi doğru anlamak için hangi senaryoda hangisinin öne çıktığını netleştirmek gerekir. WordPress, geniş eklenti ekosistemi ve e-ticaretten üyelik sistemlerine kadar hazır çözümleriyle karmaşık projelerde güçlüdür. Grav ise sadelik, hız ve geliştirici dostu yapısıyla dokümantasyon siteleri, kurumsal tanıtım sayfaları, kişisel bloglar ve teknik ekiplerin projelerinde parlar.
Aşağıdaki tablo, günlük kullanımda karşınıza çıkacak temel farkları özetliyor.
| Kriter | Grav | WordPress |
|---|---|---|
| Altyapı | Flat-file, DB yok | PHP + MySQL |
| Öğrenme eğrisi | Markdown/YAML bilgisi | Panel odaklı, kolay başlangıç |
| Performans | Önbellekle çok hızlı | Optimizasyon gerektirir |
| Eklenti sayısı | Orta (yüzlerce) | Çok geniş (on binlerce) |
| E-ticaret | Sınırlı | Güçlü (WooCommerce) |
| Sürüm kontrolü | Git ile doğal | Zor |
| Güvenlik yüzeyi | Küçük (DB yok) | Daha geniş |
Buradan çıkan sonuç şudur: eğer içeriğiniz ağırlıklı olarak metin, doküman ve tanıtım sayfalarından oluşuyorsa ve teknik ekibiniz Markdown ile rahatsa, Grav size çok daha temiz ve hızlı bir deneyim sunar. Buna karşın çevrim içi mağaza kurmak, karmaşık üyelik akışları tasarlamak istiyorsanız WordPress'in olgun ekosistemi hâlâ güçlü bir tercih. WordPress tarafında derinleşmek isterseniz WordPress kurulumu rehberimizi, yayıncılık odaklı modern bir alternatif için Ghost blog kurulumu yazımızı inceleyebilirsiniz.
Güvenlik, Yedekleme ve Performans Notları#
Grav'ın veritabanı barındırmaması, saldırı yüzeyini kayda değer biçimde daraltır. SQL enjeksiyonu gibi klasik veritabanı odaklı zafiyetler burada anlamsızdır çünkü sorgu atılan bir veritabanı yoktur. Yine de dosya izinleri, güncel PHP sürümü ve yönetim panelinin korunması ihmal edilmemelidir. Yönetici girişini güçlü parola ve mümkünse IP kısıtlamasıyla korumak ilk savunma hattınızdır.
Yedekleme tarafında Grav, kendi içinde bir yedek mekanizması sunar. bin/grav backup komutu, tüm siteyi tek bir arşive paketler. Bunu bir zamanlanmış görevle otomatikleştirebilir ve arşivi sunucu dışındaki bir depoya taşıyabilirsiniz.
cd /var/www/grav
bin/grav backup
# Oluşan arşiv backup/ klasörüne yazılır
ls -lh backup/
Otomatik yedekleme için basit bir cron görevi tanımlamak yeterlidir. Aşağıdaki satır her gece saat 03.00'te bir yedek üretir. Üretilen arşivleri düzenli olarak uzak bir noktaya senkronlamak, felaket kurtarma senaryolarında sizi rahatlatır.
0 3 * * * cd /var/www/grav && /usr/bin/php bin/grav backup >/dev/null 2>&1
Performansı en üst düzeye çıkarmak için önbelleği üretim modunda tutun ve gerekirse HTTP başlıklarıyla tarayıcı önbelleğini uzatın. Kritik projelerde profesyonel yedekleme ve göç desteği için yedekleme hizmetimiz ile site taşıma çözümlerimizi değerlendirebilir, sunucu tarafındaki bakım yükünü sunucu yönetimi paketimize devredebilirsiniz. Arama motorlarında görünürlüğü artırmak isteyenler ise SEO hizmetimize göz atabilir.
Sıkça Sorulan Sorular#
Grav CMS gerçekten hiç veritabanı kullanmıyor mu?#
Evet, Grav tamamen dosya tabanlı çalışır ve MySQL veya PostgreSQL gibi bir veritabanı sunucusuna ihtiyaç duymaz. Tüm içerik Markdown dosyalarında, tüm ayarlar YAML dosyalarında saklanır. Bu sayede kurulum sadeleşir, yedekleme kolaylaşır ve veritabanı odaklı güvenlik zafiyetleri ortadan kalkar. Sitenizin tamamı bir klasörden ibaret olduğu için taşınması da son derece pratiktir.
Grav'ı çalıştırmak için ne kadar sunucu kaynağı gerekiyor?#
Grav çok az kaynak tüketir ve düşük donanımlı bir sunucuda bile rahatça çalışır. Küçük ve orta ölçekli siteler için 1 GB RAM'e sahip bir sanal sunucu fazlasıyla yeterlidir. Trafik arttıkça önbellek mekanizması devreye girdiği için sunucu üzerindeki yük çoğu zaman WordPress'e kıyasla belirgin şekilde daha düşük kalır. Büyüme planınız varsa yükseltilebilir bir VDS sunucu ile başlamak akıllıca olur.
WordPress'ten Grav'a içerik taşımak mümkün mü?#
Mümkündür ancak otomatik değildir çünkü iki sistemin içerik yapısı temelde farklıdır. WordPress'in dışa aktarma dosyasını Markdown'a dönüştüren araçlar ve eklentiler bulunur; bunlarla mevcut yazılarınızı Grav'ın sayfa yapısına aktarabilirsiniz. Küçük sitelerde manuel taşıma da makul bir seçenektir. Karmaşık sitelerde profesyonel bir geçiş için site taşıma hizmetimizden destek alabilirsiniz.
Grav SEO açısından yeterli mi?#
Grav, temiz URL yapısı, hızlı sayfa yükleme süreleri ve düzenlenebilir meta verileriyle arama motoru optimizasyonu için sağlam bir zemin sunar. Hız, Google'ın sıralama sinyalleri arasında önemli bir yer tuttuğu için flat-file mimarisinin getirdiği performans doğrudan avantaja dönüşür. SEO eklentisiyle başlık formatları, açık grafik etiketleri ve site haritası yönetimini kolayca yapabilirsiniz. Ek stratejik destek için SEO hizmetimiz devreye girebilir.
Grav hangi tür projeler için en uygun seçimdir?#
Grav; kurumsal tanıtım siteleri, teknik dokümantasyon portalları, kişisel bloglar, portföy sayfaları ve içeriği ağırlıklı metin olan projeler için idealdir. Geliştirici dostu yapısı ve Git uyumluluğu sayesinde ekiplerin ortak çalıştığı projelerde büyük kolaylık sağlar. Buna karşın büyük çaplı e-ticaret veya karmaşık üyelik sistemleri gerektiren projelerde daha olgun ekosistemli alternatifleri değerlendirmek yerinde olur.
Grav için özel bir hosting ortamı gerekiyor mu?#
Hayır, Grav standart bir PHP hosting ortamında sorunsuz çalışır. Yalnızca PHP 8.1 veya üzeri sürüm ile birkaç yaygın PHP eklentisine ihtiyaç duyar. Paylaşımlı bir web hosting planından başlayabilir, trafik ve performans ihtiyacınız arttıkça sanal sunucu ya da VDS çözümlerine geçiş yapabilirsiniz. Kurulumdan itibaren tam kontrol isteyenler için kök erişimli sunucular en esnek seçenektir.
Kapanış#
Grav CMS, veritabanı yükünü ortadan kaldırarak sade, hızlı ve bakımı kolay bir web yayıncılığı deneyimi sunuyor. Markdown ile içerik üreten, Git ile sürüm kontrolü yapmak isteyen ve gereksiz katmanlardan arınmış bir sistem arayan ekipler için gerçekten güçlü bir alternatif. Kurulumun dakikalar sürmesi, taşınmasının bir klasör kopyalamak kadar basit olması ve saldırı yüzeyinin dar kalması, onu özellikle kurumsal tanıtım ve dokümantasyon projelerinde öne çıkarıyor.
Grav ya da tercih ettiğiniz herhangi bir açık kaynak sistemi güvenle yayına almak için sağlam bir altyapı şart. Clou.TR olarak hızlı web hosting planlarımızdan tam kontrol sağlayan VDS ve sanal sunucu çözümlerimize kadar her ölçeğe uygun seçenekler sunuyoruz. Projenize alan adı alarak başlayabilir, SSL ile trafiğinizi şifreleyebilir ve dilerseniz sunucu bakımını sunucu yönetimi ekibimize bırakabilirsiniz. Doğru altyapıyı seçip Grav ile hızlı bir siteyi bugün yayına almaya başlayın.