İnşaat mühendisliğinde ve mimaride yapılan en affedilmez cehalet örneklerinden biri, parsel sınırlarını ve statik kolonları bilmeden tadilat yapmaya kalkışmaktır. Düşünün ki lüks, üç katlı, 10 yıllık sapasağlam bir villanız var. Bahçeye köpeğiniz için küçük, ahşap bir kulübe veya bahçe aletleri için ufak bir kiler yapmak istiyorsunuz.

Fakat inşaat işinden zerre kadar anlamayan hevesli ev sahibi, eline hidrolik kırıcıyı ve balyozu alıyor. Kulübenin temel kazıklarını bahçeye çakmak yerine, yanlışlıkla ana villanın taşıyıcı kolonunun ve oturma odasının tam göbeğine çakıyor! İki darbede villanın taşıyıcı kolonu patlıyor, üç katlı koca bina gürültüyle çöküyor ve bir enkaz yığınına dönüşüyor. Ev sahibi elindeki kırıcıyla toz bulutunun ortasında kalakalıyor: "Ben alt tarafı bir köpek kulübesi yapacaktım, ev nereye gitti?"

Web barındırma ve cPanel yönetiminde destek ekiplerinin her ay en az birkaç kez şahit olduğu ve insanı derin bir kederle sarsan facia tam olarak bu bahçe kulübesi cinayetidir: Yeni bir subdomain (alt alan adı) açarken Document Root hiyerarşisini anlamayıp ana sitenin üzerine basmak.

Cuma Öğleden Sonra: "Blog da Açalım Dedik"

Bir hukuk bürosunun, endüstriyel fabrikanın veya diş kliniğinin ana web sitesi sirketadi.com.tr... Yıllardır yayındadır, yüzlerce referans sayfası, kurumsal tanıtımlar ve müşteri formları kusursuz çalışmaktadır.

Şirketin yeni işe aldığı pazarlama sorumlusu veya şirket sahibi cuma günü bir karar alır: "Bizim ana sitemiz çok kurumsal. Yanına bir de blog açalım, sektörel makaleler yazıp SEO yapalım. Adresi de blog.sirketadi.com.tr olsun."

Harika bir kurumsal hamledir. Kullanıcı cPanel kontrol paneline girer. "Alan Adları" (Domains) sekmesini açar ve "Alt Alan Adları" (Subdomains) butonuna tıklar.

Karşısına iki kutucuklu basit bir form çıkar:

  • Alt Alan Adı: blog
  • Alan Adı: sirketadi.com.tr

Ve altta o kader belirleyici üçüncü kutucuk belirir: Belge Kök Dizini (Document Root).

public_html Tuzağı ve Acemiliğin Gözü Kara Refleksi

Normal şartlarda cPanel bu kutucuğa otomatik olarak /public_html/blog veya /blog.sirketadi.com.tr yazar. Yani ana siteden tamamen bağımsız, izole bir klasör önerir.

Fakat bizim kullanıcımız kendi kendine o meşhur tehlikeli akıl yürütmeyi yapar:
"Aaa, benim bütün dosyalarım public_html'de duruyor ya. Blog da sitemin bir parçası değil mi? Ben bunu niye başka klasöre koyayım ki? Buraya dümdüz public_html yazayım, hepsi bir arada dursun!"

Kullanıcı önerilen yolu siler. Kutuya doğrudan public_html yazar. Ve mavi "Oluştur" (Create) butonuna tıklar!

Faciaya giden ilk adım atılmıştır. Artık sunucu için sirketadi.com.tr ile blog.sirketadi.com.tr fiziksel olarak tamamen aynı disk dizinine bakmaktadır!

Fakat kullanıcı bununla da yetinmez.

cPanel'deki Softaculous / WordPress Tek Tıkla Kurulum aracına girer. "Blog için yeni bir WordPress kurayım" der. Kurulum dizini olarak nereyi seçer dersiniz? Tabii ki o az önce açtığı blog.sirketadi.com.tr adresini!

Yani ana sitenin 10 yıldır yaşadığı o kutsal public_html dizinini!

"Yükle" Butonuna Basılan O Kara Saniye

Kullanıcı "Yükle" (Install) butonuna tıklar.

Softaculous motoru emri alır:

  1. Sıfır bir WordPress zip dosyasını açar.
  2. public_html dizinindeki 10 yıllık ana sitenin index.php, wp-config.php, .htaccess ve tema dosyalarının üzerine yazar (overwrite)!
  3. Sıfır bir veritabanı bağlar.

İşlem 15 saniyede biter. Ekranda neşeli bir mesaj çıkar: "Tebrikler, WordPress blogunuz başarıyla kuruldu!"

Kullanıcı sevinçle tarayıcısını açar ve şirketin ana web sitesine girer: sirketadi.com.tr.

Karşısına çıkan ekran, o 10 yıllık devasa kurumsal portal değil; bomboş, üzerinde "Merhaba Dünya! Yeni WordPress sitenize hoş geldiniz" yazan çiğ bir blog şablonudur!

Kullanıcının gözleri kararır, tansiyonu düşer. Kurumsal sayfalar nerede? Ürünler nerede? Referanslar nerede?

Hepsi ezilmiş, üzerine sıfır bir blogun dosyaları beton gibi dökülmüştür!

Destek Masasında Kıyamet Çığlığı

Kullanıcı hemen hosting firmasının destek hattını arar:

"Yetişin! Şirketimizin 10 yıllık web sitesi silinmiş! Az önce sadece blog açtım, sitemiz yok oldu! Siz bizim dosyalarımızı mı sildiniz? Yedeklerimiz nerede? Eğer sitemiz geri gelmezse şirketimiz batar, trilyonluk tazminat davası açarız!"

Destek mühendisi sunucunun erişim loglarına ve dosya geçmişine bakar: "Beyefendi, dosyalarınızı biz silmedik. Siz yeni açtığınız blog subdomain'inin kök dizinini ana sitenizin kök dizini olarak tanımlamış ve üzerine sıfır WordPress kurmuşsunuz. Kendi ana sitenizi kendi ellerinizle ezmişsiniz."

Kullanıcının o anki çaresizliği ve pişmanlığı, yıkılan villanın enkazında oturan ev sahibinin sessizliğinden farksızdır.

Eğer hosting firmasının günlük harici yedekleme servisi (R1Soft, JetBackup veya cPanel Backup) varsa, o günkü saat 00:00 yedeği kurtarılabilir. Ancak yedekleme hizmeti alınmamışsa, o 10 yıllık kurumsal emek tek bir dikkatsiz tıklamayla dijital tarihin tozlu sayfalarına karışır.

Dizin Hiyerarşisini ve Dijital Sınırları Koruma Protokolü

Bir kontrol panelinde dosya dizinleriyle çalışırken uyulması gereken hayati emniyet kuralları şunlardır:

  1. public_html Ana Sitenin Mahremidir: Bir paylaşımlı hosting hesabında public_html dizini sadece ve sadece ana alan adınıza aittir. Oraya başka hiçbir alt alan adının, test sitesinin veya bağımsız uygulamanın dosyalarını karıştırmayın.
  2. Subdomain'ler İçin Daima İzole Dizinler: Yeni bir alt alan adı açarken cPanel'in önerdiği bağımsız dizin yapısına asla müdahale etmeyin. Bırakın subdomain.sirketadi.com dosyaları public_html'in tamamen dışında, /home/user/subdomain.sirketadi.com gibi izole bir kökte yaşasın.
  3. Müdahaleden Önce Tam Dizin Yedeği: Kontrol panelinde yeni bir kurulum yapmadan veya yeni bir alan adı bağlamadan önce, Dosya Yöneticisi'ne girip public_html klasörünü sağ tıklayarak public_html_yedek.zip olarak sıkıştırıp bilgisayarınıza indirin. Bu 60 saniyelik işlem, hayatınızı kurtarır.
  4. Kavram Okuryazarlığı: "Belge Kök Dizini" (Document Root) teriminin ne anlama geldiğini bilmeden o kutuları değiştirmeyin. Document Root, web sunucusunun ziyaretçiye göstereceği dosyaların başladığı kapıdır. İki farklı kapıyı aynı odaya açarsanız, içerideki eşyalar birbirini ezer.

Köpek kulübesi yapacağım diye ana villayı yıkan müteahhide nasıl inşaatçı denilemezse; subdomain açacağım diye ana siteyi ezen kişiye de web yöneticisi denilemez. Kontrol panellerinin sunduğu kolaylıklar, temel dosya hiyerarşisi mantığından muaf kılmaz. Bir butona basmadan önce nereyi değiştirdiğinizi bilmek, dijital varoluşun en asgari emniyet kemeridir.