İçeriğe geç
KodHisar
Menü
EN

HisarBlok · belgeler

Kurulum

Boş bir sunucudan çalışan bir panele ve yayındaki bir siteye: neler gerekir, web sunucusu nasıl ayarlanır, kurulum sihirbazı ne sorar, güncelleme ve yedekler nasıl işler.

Özellikler HisarBlok

Kaynak kodu ve indirme paketi yakında. Bu sayfa kurulumun nasıl işlediğini anlatır; paket yayımlandığında adresi burada olacak.

Neler gerekir

  • PHP 8.4 ya da üstü; dom, pdo_sqlite (SQLite 3.27+), mbstring, zlib eklentileri ve password_hash() içinde Argon2id desteği. İsteğe bağlı: görsel küçültme ve WebP için gd, TLS üzerinden e-posta için openssl, WordPress içe aktarımı için xmlreader.
  • PHP-FPM ile nginx ya da Apache.
  • Başka bir şey değil: Composer adımı, npm adımı ya da veritabanı sunucusu yok.

php tools/install.php --check sihirbazın gösterdiği gereksinim listesinin aynısını yazdırır.

İki adres, üç klasör

HisarBlok bir web sitesini yazan bir paneldir. Panel ile site iki ayrı şeydir ve genellikle iki ayrı adreste durur:

AdresSunulan klasörPHP çalışır mı?
Panelpanel.ornek.com…/hisarblok/public/evet, her istekte
Siteornek.comsitenin kendi belge köküyalnız /go.php ve /get.php, bir modül gerektirdiğinde

Üçüncü klasör hiçbir zaman sunulmaz: …/hisarblok/data/. İçinde tüm içerik ve her hesabın parola özeti (content.sqlite), config.php, yedekler ve hız sınırı dosyası durur.

Önemli olan tek kurulum ayrıntısı: panelin belge kökünü deponun kendisine değil, public/ klasörüne yönlendirin. Deponun kökü sunulursa data/content.sqlite bir indirme bağlantısına dönüşür. Sihirbaz devam etmeden önce bunu gerçek bir HTTP isteğiyle denetler.

Sitenin belge kökü, PHP kullanıcısının yazabildiği ayrı bir klasör olmalıdır; HisarBlok'un kendi klasörü olamaz ve içinde data/ bulunamaz. Sihirbaz ikisini de reddeder.

Web sunucusu

nginx. Panel sunucusunun kökü …/hisarblok/public olur. Site sunucusu düz dosyaları sunar; PHP'ye yalnız iki ziyaretçi uç noktası gider:

server {
    server_name ornek.com;
    root /var/www/ornek.com/public;
    index index.html;
    error_page 404 /404.html;
    location / { try_files $uri $uri/ =404; }
    location ~ ^/(go|get)\.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/run/php/php8.5-fpm.sock;
    }
    location ~ \.php$ { return 404; }
    gzip_static on;
}

Apache. Panel için DocumentRoot …/hisarblok/public ve FallbackResource /index.php; site için ErrorDocument 404 /404.html ve yalnız go.php / get.php için PHP işleyicisi.

HestiaCP. Aynı kullanıcıya iki web alanı eklenir: panel ve site. Kod panel alanının public_html klasörünün bir üstüne konur ve public/ klasörü public_html olur; böylece data/ ve core/ nginx'in sunduğu yerin dışında kalır. Alanın PHP ayarında open_basedir varsa panel klasörünü de kapsamalıdır.

Plesk. Kod aboneliğin içine, httpdocs dışına konur; panel alt alanının belge kökü hisarblok/public yapılır, sitenin belge kökü httpdocs olur. Plesk'in varsayılan open_basedir ayarı ikisini de kapsar.

Kurulum sihirbazı

Yapılandırması olmayan bir kurulumda panel adresi giriş ekranı yerine kurulum sihirbazını açar. İlk sorusu bir kurulum kodudur: kod ilk ziyarette sunucudaki data/ klasörüne, tahmin edilemeyen adlı bir dosyaya yazılır. Böylece sihirbazı dolduran kişinin sunucudaki dosyaları da okuyabildiği kanıtlanır; yüklenmiş ama ayarlanmamış bir kurulum, onu ilk bulana ait olmaz. Yanlış kodlar hız sınırına takılır ve data/ klasörü webden erişilebilir durumdaysa sihirbaz kodu hiç kabul etmez.

Ardından sırasıyla:

  1. Sunucu denetimi: gereksinimler ve data/ klasörünün sunulmadığını doğrulayan gerçek bir istek.
  2. Panel dili: Türkçe ya da İngilizce, sonradan değiştirilebilir.
  3. Yönetici: kullanıcı adı, isteğe bağlı e-posta ve parola. Parola veritabanına Argon2id özeti olarak yazılır; yapılandırma dosyasında tutulmaz.
  4. İlk site: alan adı, ad, belge kökü, diller, varsayılan dil, tema.
  5. E-posta: parola sıfırlama ve bildirimler için bir SMTP aktarıcısı ya da Atla.
  6. Özet: Kur düğmesine basılana kadar hiçbir şey yazılmaz.

Kurulum veritabanını, yöneticiyi ve yapılandırmayı oluşturur, siteyi bir kez üretir ve kod dosyasını siler. O andan sonra sihirbazın her adresi 404 döner.

Komut satırından. Aynı iş soru sormadan tools/install.php ile yapılır. Parola bir argüman olarak değil, standart girdiden okunur; böylece süreç listesinde ve kabuk geçmişinde görünmez.

Dışarıdan denetleyin

Kurulumdan sonra hem panel hem site adresinde data/content.sqlite istenmeli ve 403 ya da 404 dönmelidir. Cloudflare gibi bir vekil sunucunun arkasındaysanız vekil adresini yapılandırmadaki trusted_proxies listesine ekleyin; yoksa giriş hız sınırı ziyaretçiyi değil vekili sayar.

Güncelleme

Önce bir yedek alınır, sonra yeni sürüm eskisinin üzerine açılır ve site yeniden üretilir. data/ hiçbir sürümün parçası değildir; bu yüzden bir güncelleme içeriği ya da yapılandırmayı ezemez. Veritabanı değişiklikleri güncellemeden sonraki ilk istekte kendiliğinden uygulanır.

Yedekler

Bir yedek, yeniden üretilemeyen her şeyi tutan tek bir .tar.gz dosyasıdır: site çalışırken tutarlı biçimde alınan veritabanı kopyası, yapılandırma, modül verileri, her sitenin yüklenen medyası ve her dosyanın SHA-256 özetini içeren bir bildirim. Üretilmiş sayfalar yedeğe girmez; veritabanından yeniden üretilir.

  • Yedek almak, listelemek ve bir yedeği baştan sona doğrulamak için tools/backup.php.
  • Yedekler data/backups/ altına yazılır, hiçbir zaman bir belge kökünün içine değil. Son 14 yedek saklanır; sayı ve klasör yapılandırmadan değiştirilebilir.
  • Gecelik yedek için PHP kullanıcısının crontab'ına tek satır yeter; --quiet yalnız bir sorun olduğunda çıktı verir.
  • Panelde Sistem → Yedekler yedekleri listeler, istenince yenisini alır ve indirmeye izin verir (indirme parolayı yeniden sorar).

Yedekleri sunucunun dışına kopyalayın. Aynı diskteki bir yedek, diskin kendisi bozulduğunda işe yaramaz.

Geri yükleme

Geri yükleme panelin üzerinde çalıştığı veritabanını değiştirdiği için panelden değil, sunucuda tools/restore.php ile yapılır ve önce --dry-run ile denenebilir. Sırasıyla: arşivdeki her özet ve her dosya adı denetlenir (sitenin dışına yazmaya çalışan bir ad reddedilir); daha yeni bir HisarBlok'tan alınmış yedek reddedilir; mevcut durumun bir yedeği alınır; veritabanının bütünlüğü denetlenir; ancak bundan sonra veritabanı, yapılandırma, veriler ve medya yerine konur ve işlem denetim günlüğüne yazılır. Ardından her site yeniden üretilir.

Başka sunucuya taşıma da aynı yoldan yapılır: yeni sunucuya HisarBlok kurulur, yedek data/backups/ altına kopyalanır, geri yüklenir, siteler yeniden üretilir ve DNS taşınır.