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.
Sürüm 0.13.1 için.
Neler gerekir
- PHP 8.4 ya da üstü;
dom(HTML5 ayrıştırıcısıyla),pdo_sqlite(SQLite 3.27+),mbstring,zlibeklentileri vepassword_hash()içinde Argon2id desteği. İsteğe bağlı: görsel küçültme ve WebP/AVIF içingd, TLS üzerinden e-posta içinopenssl, WordPress içe aktarımı içinxmlreader, güncelleme paketinin imzasını doğrulamak içinsodium. - PHP-FPM ile nginx ya da Apache.
- Gecelik yedek ve dakikalık iş için
cron. - Başka bir şey değil: Composer adımı, npm adımı ya da veritabanı sunucusu yok.
- İsteğe bağlı: SQLite yerine MySQL ya da MariaDB (MariaDB 10.6+ / MySQL 8.0.13+, InnoDB, utf8mb4 ve PHP'nin
pdo_mysqleklentisi). Neredeyse her site için SQLite doğru seçimdir.
php tools/install.php --check sihirbazın gösterdiği gereksinim listesinin aynısını yazdırır. Debian 13'te PHP 8.4 paketleri yeterlidir:
sudo apt install nginx php-fpm php-sqlite3 php-mbstring php-xml php-gd cron
İki adres, üç klasör
Panel ile site iki ayrı şeydir ve genellikle iki ayrı adreste durur:
| Adres | Sunulan klasör | PHP çalışır mı? | |
|---|---|---|---|
| Panel | panel.ornek.com | …/hisarblok/public/ | evet, her istekte |
| Site | ornek.com | sitenin 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 bütün içerik ve her hesabın parola özeti, yapılandırma, yedekler ve hız sınırı kayıtları durur.
Önemli olan tek kurulum ayrıntısı: panelin belge kökünü deponun kendisine değil,
public/klasörüne yönlendirin. Kök sunulursadata/content.sqlitebir 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. Tek kurulum birden çok siteyi yayımlayabilir; her sitenin kendi belge kökü vardır.
Web sunucusu
nginx. Panelin kökü …/hisarblok/public olur ve bilinmeyen her adres index.php'ye gider. Site ise düz dosyaları sunar; PHP'ye yalnız iki ziyaretçi uç noktası ulaşır:
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/php-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/ sunulan 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.
Önerilen başlıklar. Site için X-Content-Type-Options: nosniff, script-src 'self'; object-src 'none'; base-uri 'none' içeren bir içerik güvenliği ilkesi ve indirme klasörü için Content-Disposition: attachment. Üretilen sayfalarda satır içi betik yoktur, bu ilke onları bozmaz.
Vekil sunucu arkasında. Cloudflare gibi bir vekilin arkasındaysanız onu yapılandırmadaki trusted_proxies listesine ekleyin (tek adres ya da CIDR aralığı); yoksa giriş ve form sınırları ziyaretçiyi değil vekili sayar.
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.
sudo sh -c 'cat /srv/hisarblok/data/setup-token-*'
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. Ardından sırasıyla:
- Sunucu denetimi: gereksinimler ve
data/klasörünün sunulmadığını doğrulayan gerçek bir istek. - Panel dili: Türkçe ya da İngilizce, sonradan değiştirilebilir.
- Yönetici: kullanıcı adı, isteğe bağlı e-posta ve parola. Parola veritabanına Argon2id özeti olarak yazılır.
- İlk site: alan adı, ad, belge kökü, diller, varsayılan dil, tema.
- Veritabanı: SQLite (hiçbir ayar gerekmez) ya da MySQL/MariaDB; bağlantı, sürüm, harf düzeni ve gereken her yetki yazmadan önce denenir.
- E-posta: parola sıfırlama ve bildirimler için bir SMTP aktarıcısı ya da Atla.
- Ö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 argüman olarak değil standart girdiden okunur; süreç listesinde ve kabuk geçmişinde görünmez.
sudo -u www-data php tools/install.php --user=admin --site=ornek.com \
--root=/var/www/ornek.com/public --languages=tr,en --lang=tr
Dışarıdan denetleyin
Kurulumdan sonra hem panel hem site adresinde data/content.sqlite isteyin: yanıt 200 olmamalı. 403, 404 ya da giriş sayfasına yönlendirme doğrudur.
İki zamanlanmış iş
PHP kullanıcısının crontab'ına:
15 3 * * * php /srv/hisarblok/tools/backup.php --quiet
* * * * * php /srv/hisarblok/tools/tick.php --quiet
Birincisi her gece yedek alır. İkincisi birleştirilmiş bildirimleri gönderir ve üretim kuyruğunu bitirir: panelde kaydedilen sayfa hemen yazılır, listeler, beslemeler, site haritası ve tam yeniden üretimler arkadan gelir. Bu iş olmadan büyük bir yeniden üretim yalnız panel açıkken ilerler. Panelin site sağlığı kartı, işin en son ne zaman çalıştığını gösterir.
İlk içerik
İlk üretim yalnız 404 sayfasını ve ortak dosyaları yazar. Giriş yapıp Sayfalar → Yeni sayfa altında adresi boş bir sayfa yayımlayın: ana sayfa odur. Blog, forum, üyelik, yorumlar, formlar, indirmeler, arama ve menü modüldür ve yeni kurulumda kapalı gelir; Modüller ekranından site başına açılır.