Kurulum
Genel Bakış
WebBlocks CMS, bir Laravel ana bilgisayar uygulamasına yüklenen bir Composer paketi olarak dağıtılır. Ana bilgisayar uygulaması, önyükleme, ortam, veritabanı, kuyruklar, posta, zamanlayıcı, dağıtım, yedeklemeler ve genel belge kökünden sorumlu olmaya devam eder. Toplu/günlük e-posta bildirimleri ve günlük e-posta özetleri, her dakika planlayıcıyı gerektirir; yeni siteler bu politikaları varsayılan olarak etkinleştirir. Kaydedilen mesajları ve panel bildirimlerini görüntülemek, planlama veya giden posta gerektirmez.
Üretim sunucusu hazırlamadan önce Barındırma Gereksinimleri belgesini inceleyin, Barındırma Kapasitesi Doğrulaması ile iş yükünü değerlendirin, açıkça geçici olan Barındırma Kapasitesi Sonuçları ile karşılaştırın ve Barındırma Hazırlık Listesini tamamlayın. Bu belgeler temel kurulum sözleşmesini isteğe bağlı görsel, e-posta, zamanlayıcı, yedek ve paket güncelleme bağımlılıklarından ayırır; mevcut kısmi ölçümler üretim sertifikası değildir.
Normal kurulum için uygulama anahtarı ve veritabanı yapılandırılmış yeni veya mevcut bir Laravel 12.55+ ya da Laravel 13 uygulamasıyla başlayın. Paketi Composer ile kurun, ardından CMS kurucusunu çalıştırın.
Uygulamada çalışan bir CMS temeli olduğunda kurulum tamamlanmış sayılır:
- bir uygulama anahtarı mevcut
- veritabanına erişilebiliyor
- gerekli tablolar mevcut
- çekirdek başlangıç (seed) verisi mevcut
- ilk aktif
super_adminmevcut system_settingsiçinde kurulum tamamlanma işareti kayıtlı
Paket Tüketicisi Kurulumu
Laravel ana uygulamasının kökünde çalıştırın:
composer require fklavyenet/webblocks-cms
php artisan webblocks:install --name="Admin User" --email="admin@example.com" --password="secret-password"
Ardından /webadmin/login adresini açın. Bu, CMS kullanıcıları için temel ve desteklenen kurulum yoludur. Bu depoyu klonlamak bağımsız bir Laravel uygulaması oluşturmaz.
Desteklenen seçenekler:
--name=ilk super admin görünen adı--email=ilk super admin e-posta adresi--password=ilk super admin parolası--site-name=ilk sitenin adı; verilmezse yapılandırılmışWEBBLOCKS_CMS_DEFAULT_SITE_NAME, o da yoksa normalleştirilmişAPP_URLana makinesi kullanılır--site-handle=varsayılan site tanıtıcısı--repair-partialsıfırdan kurulum geçişlerinden önce boş kısmi CMS tablolarını yeniden adlandırır--skip-starter-contentsağlanan başlangıç sayfası yerine boş bir ana sayfa yayınlar--forcegerektiğinde pakete ait CMS varlıklarının veya yayımlanmış yapılandırma dosyalarının üzerine yazar
webblocks:install şunları yapar:
- ilk siteyi normalleştirilmiş
APP_URLana makinesine göre adlandırır, iç kimliğidefaultolarak kalır;www.adından çıkarılır, anlamlı alt alan adları korunur, yerel veya IP ana makinelerindeDefault Sitekullanılır - ana uygulamada henüz yoksa
config/webblocks-cms.phpdosyasını yayımlar - güvenli olduğunda, önce zaman damgalı bir yedek alarak dokunulmamış yeni Laravel karşılama rotasını
routes/web.phpdosyasından kaldırır; böylece CMS herkese açık rotaları/adresine hizmet verebilir app/Models/User.phpdosyasınaWebBlocks\Cms\Auth\Concerns\HasWebBlocksCmsAccessyamasını uygularUser.phpdosyasını değiştirmeden önce zaman damgalı bir yedek oluşturur- trait zaten mevcutsa yamayı atlar
User.phptanınabilir birApp\Models\User extends Authenticatablesınıfı değilse açık bir hatayla durur- temiz tüketici kurulumları için paketin sıfırdan kurulum geçiş yolunu çalıştırır
- sıfırdan kurulum geçişlerini çalıştırmadan önce kısmi CMS şemalarını algılar ve mevcut CMS tablolarını, satır sayılarını, ilgili geçiş satırlarını ve bilinen yabancı anahtar çakışmalarını raporlar
- boş kısmi CMS şemalarını yalnızca
--repair-partialverildiğinde, boş CMS tablolarını devam etmeden önce zaman damgalı bir_before_cms_install_...son ekiyle yeniden adlandırarak onarır - herhangi bir kısmi CMS tablosunda satır varsa otomatik onarımı reddeder
- CMS tabloları zaten mevcutsa bu taze şemayı yeniden çalıştırmayı atlar
- ana uygulama geçişlerini çalıştırmadan Laravel destek tablolarını oluşturur; şu anda CMS parola sıfırlama belirteçleri ile birlikte, veritabanı destekli sürücüler yapılandırıldığında
sessions,cachevecache_lockstablolarını kapsar - paket kurulumunun bir parçası olarak ana uygulamanın normal Laravel geçiş kümesini çalıştırmaz, böylece zaten oluşturulmuş CMS uyumlu
userstablosuyla çakışmaları önler - Yedekleme / Geri Yükleme tarafından kullanılan
backupsdosya sistemi diski kök dizinini hazırlar - pakete ait CMS varlıklarını
public/cmsiçine kurar - eksikse ve ortam izin veriyorsa
public/storageoluşturur - yerel ayarları, siteleri, slot türlerini, sayfa düzenlerini ve temel blok türlerini tekrarlanabilir şekilde yükler
- paket manifestinden tüm WebBlocks UI simge kataloğunu yükler; simge alanları dış ağ erişimi ve elle senkronizasyon olmadan çalışır
/adresindeki yayınlanmış ana sayfayı düzen slotlarıyla birlikte oluşturur- kapatılmadıysa ana sayfayı paketle gelen başlangıç içeriğiyle doldurur
- kurulan sürümü ve kurulum tamamlanma işaretini
system_settingsiçine kaydeder - ilk aktif
super_adminhesabını yalnızca henüz mevcut değilse oluşturur
Paket kimlik doğrulaması Laravel'e özgüdür ve Breeze, Jetstream, Laravel UI veya Fortify gerektirmez. Kurulumdan sonra, CMS paketi kimlik doğrulama rotaları aktifken /webadmin/login adresinden oturum açın. CMS'ye ait kimlik doğrulama görünümleri ve yönetici misafir yönlendirmeleri, webblocks.auth.login ve webblocks.auth.logout gibi paket rota adlarını kullanır; böylece bir ana ürün, CMS form eylemlerini veya /webadmin yönlendirmelerini ele geçirmeden kendi genel login rotasını, örneğin /quiztem/login, koruyabilir.
Mevcut paket tüketicisi kurulum modelinde ana uygulamanın App\Models\User sınıfı, kimlik doğrulama modeli ve kurulum sırasında değiştirilen hedef olarak kalır.
Kısmi Kurulum Kurtarma
webblocks:install, başarısız veya kesintiye uğramış önceki bir çalıştırmadan sonra durursa, önce onarımsız yeniden çalıştırın ve kısmi kurulum tanısını okuyun. Boş CMS tabloları açıkça kenara taşınabilir:
php artisan webblocks:install --repair-partial --name="Admin User" --email="admin@example.com" --password="secret-password"
Onarım modu yalnızca CMS'ye ait boş aday tabloları yeniden adlandırır. Tabloları silmez, boş olmayan tabloları otomatik olarak değiştirmez ve CMS'nin ana uygulamanın sahibi olduğunu varsaymaz.
Zamanlayıcı olmadan panel bildirimleri (CMS 1.96.0)
Site operasyon yöneticileri için, yönetici başlığı bildirim zili Kontrol Paneli → Panel bildirimleri'e bağlanır. Panel, e-posta devre dışı bırakıldığında veya zamanlayıcı hiç çalışmadığında bile, bir panel sayfası her yüklendiğinde kayıtlı kişi mesajlarını okur. Filtrelenmiş iletişim gelen kutusuna bağlantılarla birlikte, okunmamış mesajları ve erişilebilir site başına yanıt bekleyen mesajları gösterir. Okunmamış mesajlar, bekleyen yanıt sayısına dahil edilir. Zil rozeti yalnızca okunmamış iletişim mesajlarını sayar; Yanıt bekleyen okuma mesajları ve sistem uyarıları Kontrol Panelinde ayrı kalır. Okunmamış mesaj olmadığında zil gizlenir; Kontrol Paneli bildirim paneli kullanılabilir durumda kalır. Eylemler simgesi, önceden okunmuş iletileri de içerebilecek, yanıt bekleyen iletileri incelemek için seçilen sitenin gelen kutusunu açar. Sayımlar ve bağlantılar hiçbir zaman erişilemeyen siteleri içermez ve özette ziyaretçi ayrıntıları görüntülenmez.
Panelin açılması mesajları okundu olarak işaretlemez, bekleyen e-postaları göndermez, başarısız teslimatı yeniden denemez veya zamanlayıcı durumunu oluşturmaz. Bir iletişim mesajını okumak, okunmamış çalışmayı azaltır ancak yanıt beklemeye bırakır; yanıtlandı veya arşivlendi olarak işaretlendiğinde bu özetten kaldırılır. Spam ve karantinaya alınan iletiler, bekleyen işlerin sayısı yerine denetleme gelen kutusunda kalır. Bu, kişisel bildirim geçmişi değil, sayfa yüklendiğinde yenilenen paylaşılan gelen kutusu durumudur. Canlı Sohbet, planlanmış e-postadan bağımsız olarak kendi yetkili panel göstergesini korur.
Günlük özetlerin devre dışı bırakıldığı yalnızca anında e-posta, giden postanın yapılandırılmış olması koşuluyla, bir zamanlayıcı olmadan da çalışır. Toplu/günlük e-posta ve günlük e-posta hatırlatıcıları hala arka planda planlama gerektirir: CMS'da oturum açmak, paneli kimse ziyaret etmediğinde seçilen zamanda teslimatı garanti edemez.
Zamanlanmış Bildirimler ve Zamanlayıcı Durumu
CMS 1.95.0'deki yeni siteler, varsayılan olarak on dakikalık mesaj gruplarını ve günlük bekleyen mesaj özetini kullanır. Bu özellikleri üretimde etkinleştirmeden önce, sunucu yöneticisi veya barındırma sağlayıcısının Laravel'nin zamanlayıcısını her dakika çalışacak şekilde yapılandırması gerekir. Güncellemeler, bir sunucu cron girişini sessizce yüklemeden CMS işi kaydeder. CMS 1.105.25 ayrıca aşağıda isteğe bağlı, açıkça onaylanmış CLI kurulumu da sunar. CMS'i çalıştıran kişi bildirim politikasını seçer; sunucu yöneticisi arka plan çalışma zamanının sahibidir.
Uygulama kullanıcısının crontab'ına veya eşdeğer barındırma zamanlanmış görev hizmetine bir giriş ekleyin:
* * * * * cd /path/to/laravel-app && /path/to/php artisan schedule:run >> /dev/null 2>&1
Her iki örnek yolu da artisan ve uygun CLI PHP yürütülebilir dosyasını içeren gerçek Laravel ana bilgisayar dizini ile değiştirin. Web ve CLI PHP, CMS gereksinimlerini karşılamalıdır. Bu uygulamanın zaten çalışan bir Laravel zamanlayıcısı varsa bu girişi saklayın; yeni iş mevcut programa katılır. Bu senkronize bildirim uygulaması için kalıcı bir kuyruk çalışanı gerekli değildir.
CMS 1.105.25'den, Temizleme → Saklama ve otomasyon → Zamanlayıcı kurulumu ve doğrulama'yu veya Sistem Sağlığı'ndaki kurulum bağlantısını açın. Salt okunur ekranda bu kuruluma ilişkin komutlar, gerçek zamanlayıcı çalışma sinyali durumu ve bir yenileme bağlantısı gösterilir. Görüntülenen CLI PHP yolunu sağlayıcınızla doğrulayın; gerekirse WEBBLOCKS_CMS_SCHEDULER_PHP_BINARY'yı yapılandırın ve uygulama yapılandırmasını yenileyin. Herne gerekli değildir. Her dakika komutunu destekleyen herhangi bir barındırma paneli yukarıdaki standart cron komutunu kullanabilir.
CLI erişimi bulunan, desteklenen bir Unix sunucusunda komutu artisan dosyasına sahip olan, uygulamayı okuyabilen ve çalışma zamanı dizinlerine yazabilen işletim sistemi hesabıyla çalıştırın. Root hesabını kullanmayın:
php artisan webblocks:scheduler:setup
php artisan webblocks:scheduler:setup --install
İlk komut yalnızca inceleme yapar. İkinci komut, cron, systemd ve hosting panelindeki görevler incelendikten sonra onay gerektirir; incelenmiş, etkileşimsiz bir kurulum için --install --yes kullanın. --json, etkileşimli soru sormadan hassas bilgilerden arındırılmış bir sonuç verir. Kurulum mevcut crontab içeriğini korur, dakika başı çalışan tek bir işaretli kayıt ekler ve kaydı tekrar okuyarak doğrular. Mevcut veya belirsiz zamanlayıcı kayıtları, yakın tarihli gerçek çalışma kanıtı, okunabilen harici tanımlar, desteklenmeyen kabuklar, yanlış hesaplar ve erişim hataları kurulumu engeller. Sağlayıcıya ait veya okunamayan her görev tanımını bulamaz; onaylamadan önce bunları inceleyin. CLI/crontab erişimi yoksa hosting panelini kullanın veya sağlayıcıdan komutu eklemesini isteyin. Bir CMS güncellemesi her hosting ortamında işletim sistemi izinlerini garanti edemez.
Eklenen cron kaydı, gerçekten zamanlanmış görev çalışana kadar doğrulanmamış kalır. 1–2 dakika bekleyin, kayıtlı etkinliği yenileyin ve aşağıdaki durum komutunu kontrol edin. Kurulum ekranı zamanlayıcının çalışma sinyalini gösterir; tam sağlık/durum komutu ayrıca bildirimlerin yürütülmesini de kontrol eder. Temizlik günlük çalışma saatini bekliyor diye ikinci bir zamanlayıcı eklemeyin. Güncellemeler her kurulumun kayıtlı temizlik politikasını ve otomatik temizlik seçimlerini korur; bunları ayrıca inceleyip kaydedin.
Ayrıca gerçek bir giden posta aktarımı, standart HTTPS APP_URL ve birden fazla çalışanın bildirimleri işleyebildiği durumlarda atomik kilitleri destekleyen paylaşılan bir önbellek yapılandırın. Mevcut site yükseltmesi, günlük hatırlatıcılar devre dışı bırakılarak tam/anlık bildirimleri korur; bu bildirim ayarları değiştirilene kadar planlama gerektirmez.
CMS 1.95.1, Kontrol Paneline ve Sites → Düzenle → Contact'ye kayıtlı sağlık durumunu ekler ve Canlı Sohbet 0.7.1, bunu ayarlarında ve eklenti sağlığında gösterir. Site bildirim API'si scheduler_health'yi içerir. Kayıtlı görevleri ve ardından kayıtlı çalışma zamanı kanıtlarını kontrol edin:
php artisan schedule:list
php artisan webblocks:scheduler:status --json
Sistem Sağlığı erişimine sahip kullanıcılar, Bakım → Sistem Sağlığı → Planlanan bildirimler bölümündeki planlayıcı bildiriminin tamamını inceler; Kontrol Panelleri kompakt bir sağlık özeti gösterir. Bu erişime sahip olmayan site operasyon yöneticileri, erişilebilir tüm siteler günlük özetler devre dışı bırakılarak yalnızca anında bildirimler kullansa bile, ayrıntılı Zamanlayıcı kartını Kontrol Panellerinde tutar. Bu durumda kart bilgilendiricidir ve bu bildirimlerin planlama gerektirmediğini açıklar. Erişilebilir herhangi bir site gruplama, günlük teslimat veya günlük özetleri mümkün kılıyorsa, doğrulanmamış veya gecikmiş durum uyarısı verir; erişilemeyen siteler asla bildirimi etkilemez.
İş listesi yalnızca kaydı onaylar. Running, yakın zamanda planlanmış bir zamanlayıcı çalışma sinyali ve yakın zamanda tamamlanmış bir bildirim çalıştırması gerektirir. Henüz doğrulanmadı, hiçbir güvenilir yürütme kanıtının kaydedilmediği anlamına gelir. Gecikmeli, zamanlayıcı çalışma sinyali veya tamamlanmış çalıştırmanın beş dakikadan daha eski olduğu anlamına gelir. İşleme hatası veya eksik bildirim şeması ayrı olarak gösterilir. Geçerli bir yürütme kısaca İlerliyor'yi gösterebilir. Durum komutu yalnızca doğrulanmış çalışma durumu için başarıyla çıkar; diğer durumlar sıfırdan farklı bir durum döndürür.
Kalp atışı, gerçek bir planlanmış geri arama tarafından üretilir. php artisan webblocks:notifications:dispatch'nin manuel olarak çalıştırılması, vadesi gelen postaları işleyebilir ancak zamanlayıcı durumunu oluşturmaz. Sağlık okumaları zamanlayıcı çalışma sinyali yaratmaz. Kanıtlar CMS veritabanında saklanır ve web ile CLI süreçlerinde görünür kalır. Zaman damgaları UTC'de döndürülür; günlük özet saatleri hâlâ her sitenin saat dilimini takip ediyor. Bu sağlık kaydına hiçbir müşteri içeriği, sır veya ham istisna metni girilmez.
Gruplar veya günlük özetler etkinleştirilirken planlama doğrulanmazsa veya ertelenirse panel, bildirimlerin beklemede kalabileceği konusunda uyarır ve sunucu yöneticisini/sağlayıcısını kurulum sahibi olarak tanımlar. Bu sahibin cron'u veya barındırma planlayıcısını, uygulama yolunu, CLI PHP'yi, işlem izinlerini ve çalışma zamanı hatalarını incelemesini isteyin. Ardından yeni bir zamanlayıcı çalışma sinyalinı onaylayın ve bildirim çalıştırmasını tamamlayın. Bu kontroller, bu kurulumda kaydedilen yürütmeyi doğrular; alıcının gelen kutusu teslimini garanti etmez veya her sunucu düğümünü bağımsız olarak onaylamaz.
Mevcut Kurulumları Güncelleme
Sistem Güncellemeleri akışı, yedekler ve uyumluluk için Güncellemeler belgesini kullanın. 1.89.1 öncesi Publisher kurulumları, 1.89.2 veya sonrasından önce 1.89.1 lisans yerleşimi ara sürümünü uygulamalıdır. Ardından yeniden kontrol edin; yeni istemciler bunu otomatik yapar. Composer kurulumları bu Publisher ara sürümüne gerek olmadan doğrudan Composer ile güncellenebilir.
Kullanıcı belgeleri ayrı webblocks-cms-docs deposunun docs/ dizininde tutulur; CMS paketiyle kurulmaz. Paket, GET /webadmin/api/inventory üzerinden de erişilen resources/contracts/inventory.md çalışma zamanı içerik sözleşmesini korur. Genel docs ve rehberler yayın hedefleridir; depo ayrımı bir belge senkronizasyon motoru getirmemiştir.
CMS 1.98.5 ile ilişkisel çalışma zamanı geçişi
Paket güncellemesi, sayfa düzeni ve paylaşılan alan referansları, aşamalı güncelleme ve geri yükleme işaretçileri, kaynak senkronizasyonu meta verileri ve yönetilen alanlar, blok uygulama referansları, API belirteç erişim listeleri, site bildirim politikaları ve zamanlayıcı sağlığı için ilişkisel depolama ekler. Mevcut değerler sınırlı gruplar halinde kopyalanır; API veriler ve dışa aktarma/içe aktarma alanları mevcut yapılarını korur.
Eşlenen değerler SQL'dan okunur. Mevcut JSON alanlar, geçici geri alma uyumluluğu kopyaları olarak kalır ve desteklenen yazma işlemleriyle senkronize edilir. Eşlenmemiş ayarlar ve tam revizyon anlık görüntüleri bu aşamada mevcut depolama formatlarını korur. Bilinmeyen tarihi alanlar, hatalı biçimlendirilmiş değerler ve çözümlenmemiş referanslar korunur. Güncelleme geçişi tekrarlanabilir ve geri alınması yeni verileri silmez. Daha eski bir paket, bu kopyaları geri alma işleminden sonra yazarsa, SQL yetkili sürüme dönmeden önce bu sapmayı uzlaştırın.
CMS 1.98.6 ile blok ve uygulama ayarlarının taşınması
Bir sonraki paket güncellemesi, kalan Blok ayarlarını ve Embedded Application varlık/destek/şema listelerini ilişkisel kayıtlara taşır. Çekirdek blok alanları, yazılı görünüm, medya, gezinme ve içerik şemalarına sahiptir. Bağlamalar, koleksiyon ayarları ve uygulama örneği değerlerinin ayrı kayıtları vardır; yazılan düğümler iç içe geçmiş yapıyı ve tarihsel/eklenti uzantılarını korur. Varlık ve numaralandırma listeleri düzeni ve kopyaları korur ve ayar tanımları, türlerini ve varsayılanlarını korur.
Geçiş, sınırlı ID gruplar halinde tek seferde bir eski veriyi okur ve tekrarlanabilir. Mevcut API, oluşturucu, yerel ayar, dışa/içe aktarma ve tam revizyon alanları uyumlu yapılarını korur. SQL yetkilidir; mevcut JSON sütun senkronize geri alma kopyaları olarak kalır. Güncellemenin geri alınması SQL verilerini korur, bu nedenle yeni sürümü yeniden uygulamadan önce eski bir paket tarafından yapılan tüm yazma işlemlerini inceleyin. Tam anlık görüntü ve diğer eski içerik/çalışma zamanı JSON daha sonraki geçiş çalışmalarıdır.
CMS 1.98.7 ile kalan ilişkisel geçiş hazırlıkları
Paket yerel geçişi, sayfa, yuva ve düzen ayarlarını, blok meta verilerini, tam geçmiş anlık görüntüleri, aktarım kayıtlarını, içe aktarma devam haritalarını, kurtarma verilerini, güncelleme makbuzlarını, simge listelerini ve denetleme nedenlerini SQL'da hazırlar. Mevcut API adlar ve yapılar uyumlu kalır. Eklenti yaşam döngüsü durumu ve tanıtım planları artık yazılıyor SQL; eski değiştirilebilir dosyalar geçişe kadar korunur. Hazırlık önemsizdir ve tekrar çalıştırmalarda daha yeni SQL eklenti durumunun yerini almaz.
Köprü, önceki paketi halihazırda yürütmekte olan bir güncelleyicinin eski sütunlarını korur. Sonraki geçişi yüklerken otomatik tam yedeklemeyi koruyun: yalnızca eski kodu geri yüklemek, kaldırılan sütunları veya veri dosyalarını geri yükleyemez. CMS tam yedeklemeler veritabanını, genel yüklemeleri ve sitenin genel dosyalarını içerir; eşleşen paketi ve gerekli özel eklentiyi/yerel depolamayı ayrı olarak saklayın.
CMS 1.98.8 ile son SQL geçişi
Geçiş, hazırlık/okuma sonrasında geçici alanları ve içe aktarılan değiştirilebilir durum dosyalarını kaldırır. SQL, bağımsız tam anlık görüntüler dahil, CMS'e ait tüm kalıcı yapıların kaynağıdır. Mevcut API, imzalı paket, değişmez yedekleme ve dışa aktarma formatları yerleşik serileştirmelerini kullanmaya devam ediyor. Publisher, 1.98.7'ü ilk olarak daha önceki uygulama içi istemcilere sunar; 1.98.8 uygulamak için köprüden sonra tekrar kontrol edin. Eski koda geri dönmek için tam yedeklemeyi saklayın.
Kaynak Koddan Bakımı Yapılan Eski Kurulumlar
Aşağıdaki tarayıcı sihirbazı ve elle CLI akışları, zaten tam Laravel ana uygulaması içeren eski kaynak kod veya bakım deposu kurulumlarına yöneliktir. Güncel paket deposunu tek başına kurmanın alternatifi değildir. Yeni kurulumlarda yukarıdaki Composer akışı kullanılmalıdır.
Tarayıcı Kurulum Sihirbazı
Sıfırdan bir kurulum için tarayıcı sihirbazını kullanın.
Kaynak kodu yerelde mevcut olduktan sonra şununla başlayın:
composer install
cp .env.example .env
php artisan serve
Ardından http://127.0.0.1:8000/install adresini açın.
Sihirbaz şunları kapsar:
- ortam hazırlık denetimleri
- veritabanı yapılandırması ve bağlantı doğrulaması
- çekirdek CMS kurulumu
- ilk
super_adminoluşturma - tamamlandıktan sonra kurulumun kilitlenmesi
Notlar:
- kurulum sihirbazı sıfırdan kurulumlar içindir
- kurulum tamamlanmadıysa sihirbaz güvenle yeniden açılabilir ve kaldığı yerden devam edebilir
- tamamlandıktan sonra kurulum rotaları kilitlenir ve normal kimlik doğrulama/yönetim akışı devreye girer
- kurulum sihirbazı seçilen veritabanı yapılandırmasını
.envdosyasına yazar
Elle CLI Kurulumu
Sıfırdan bir kurulum için standart Laravel kurulum yolunu tercih ediyorsanız CLI akışını kullanın.
composer install
cp .env.example .env
php artisan key:generate
php artisan migrate
php artisan db:seed
php artisan storage:link
php artisan serve
Notlar:
php artisan db:seedtemel CMS kataloglarını yükler, ana sayfayı başlangıç içeriğiyle oluşturur ve yeni kurulumda mevcut uygulama sürümünü kurulu sürüm olarak kaydeder- herkese açık dosya sunumu
storage/app/publickullanacaksaphp artisan storage:linkgereklidir storage/framework,storage/logsvebootstrap/cachealtındaki çalışma zamanı dizinleri ilk çalıştırmada otomatik olarak oluşturulur- Yedekleme / Geri Yükleme arşivleri
backupsdosya sistemi diskinde saklar; varsayılan konumstorage/app/backupsdizinidir. PHP çalışma zamanı kullanıcısı bu dizinin sahibi olmalı veya okuma/yazma erişimine sahip bir dağıtım grubunu paylaşmalıdır; geniş777modlarından kaçının.
Yerel (Native) Kurulum
Yerelde kurulu PHP ve Composer ile çalışan yeni bir Laravel projesi için:
composer require fklavyenet/webblocks-cms
php artisan webblocks:install --name="Admin User" --email="admin@example.com" --password="secret-password"
Ardından şunları açın:
- herkese açık site:
/ - yönetici girişi:
/webadmin/login - yönetim paneli:
/webadmin
Kaynak kodu yerelde mevcut olduktan sonra:
composer install
cp .env.example .env
php artisan key:generate
Notlar:
- güvenilen yerel geliştirme,
.testalan adlarını ve HTTPS'i kullanmalıdır; kanonik CMS geliştirme URL'sihttps://webblocks-cms.testadresidir php artisan servehızlı, yalnızca CLI denetimleri için yararlı olmaya devam eder; ancak güvenilen tarayıcı iş akışlarıdocs/native-local-development.mdiçinde belgelenen yerel Nginx/PHP-FPM kurulumunu kullanmalıdır- yerel iletişim formu e-posta bildirimleri yerel bir SMTP yakalayıcı veya güvenilen bir SMTP test hesabı kullanmalıdır; olağan yerel SMTP değerleri kurulu araca bağlıdır
- İletişim Formu bildirim alıcıları şu sırayla çözümlenir: blok düzeyi
recipient_email, geçerli sitenin varsayılan iletişim alıcısı,CONTACT_RECIPIENT_EMAIL, sonra son güvenli yedek olarakMAIL_FROM_ADDRESS - iletişim gönderimleri bildirim tesliminden bağımsız olarak saklanır; bu nedenle herkese açık bir
Message sentyanıtı, yönetim paneli daha sonra bildirimiFailed,SkippedveyaNot configuredolarak gösterse bile saklama başarısını doğrular MAIL_MAILER=log,MAIL_MAILER=arrayveMAIL_MAILER=nullgerçek dışa gönderim değildir ve İletişim Mesajı bildirimi için yapılandırılmamış olarak gösterilir- İletişim Formu blokları
wb-sr-onlysınıfıyla gizli bir kapsayıcı,inert,aria-hidden="true", oluşturulanform_check_{token}alanı,tabindex="-1",autocomplete="off"ve forma bağlı imzalı zaman damgası üretir. Geçersiz kanıt veya dolu kontrol alanı, mesaj kaydetmeden ya da bildirim denemeden aynı genel başarı yönlendirmesini verir. - İmzalı kanıt ve kontrol alanını geçen gönderimler; içerik, tam ve yakın tekrar, tam IP, gönderen adresi,
/24//64ağı, form yoğunluğu ve öğrenilmiş site itibarıyla yerel puanlanır. İzin verilen, karantinadaki ve spam sınıfları bildirim durumundan ayrı, kalıcı yönetici sınıflandırmalarıdır. - Koruma CAPTCHA veya dış hizmet gerektirmez; önbellek anahtarları anahtarlı özetler kullanır, 30 günlük yönetici metrikleri gönderilen içerik yerine toplu kararları içerir.
- bildirim teslimi başarısız olduğunda, yöneticiler kaydedilen mesajı
Admin -> Contact Messagesaltında inceleyerek listedeki kompakt hata durumunu ve mesaj ayrıntı ekranındaki kayıtlı hata ayrıntısını görebilir
Ardından şunları açın:
- herkese açık site:
https://webblocks-cms.test - yönetim paneli:
https://webblocks-cms.test/webadmin - sıfırdan kurulumda kurulum sihirbazı:
https://webblocks-cms.test/install
Bu kurulum adımları tamamlandıktan sonra sıfırdan kurulumu tarayıcı sihirbazında tamamlayın.
Paket Geliştirme ve Katkıda Bulunma
Depoyu klonlamak uygulama kullanıcıları için normal kurulum yolu değildir.
Depoyu yalnızca WebBlocks CMS'in kendisini geliştirirken veya katkıda bulunurken klonlayın:
git clone https://github.com/fklavyenet/webblocks-cms.git
cd webblocks-cms
composer install --no-interaction --prefer-dist
composer validate --strict
composer format:test
composer test
Bu depo paket kaynağıdır, dağıtıma hazır Laravel uygulaması değildir. Geliştirme akışı için ürün katkı talimatlarını ve paket test stratejisini inceleyin.
Kurulum Sihirbazına Erişim
- sıfırdan kurulumlar otomatik olarak
/installadresine yönlendirilir - sihirbazı
/installadresinden elle de açabilirsiniz - önceki gereksinimler zaten karşılanmışsa doğrudan çekirdek kurulum adımına atlamak için
/install/coreadresini açabilirsiniz - gereksinimler tamamlandıkça sihirbaz adımları otomatik olarak ilerletebilir
/ve/installadreslerini birden çok tarayıcı sekmesinde açmak farklı sihirbaz adımları gösterebilir; kurulum sihirbazı ilerlemeyi izleyip buna göre yönlendirdiği için bu beklenen bir durumdur
İlk Super Admin Oluşturma
Tamamlanmış bir kurulum için ilk super_admin gereklidir.
- tarayıcı sihirbazında ilk yöneticiyi son kurulum adımında oluşturun
- paket tüketicisi CLI akışında
webblocks:installkomutuna--name,--emailve--passwordseçeneklerini verin - elle kurulumda, CMS'yi tam kurulmuş saymadan önce en az bir aktif
super_adminhesabının mevcut olduğundan emin olun
super_admin, Kullanıcılara, sitelere, dillere (locale), ayarlara, güncellemelere, yedeklemelere, dışa/içe aktarmaya ve tüm site içeriğine erişebilen kurulum düzeyindeki roldür.
Başlangıç İçeriği
Yeni kurulum / adresinde ana sayfa yayınlar; başlık yanındaki ürün işareti, kısa özellik ızgarası ve kapanış eylem çağrısıyla doldurur. Bunlar sabit bir karşılama ekranı değil, sıradan bloklardır. Yeni yönetici editörde yeniden yazabileceği, sıralayabileceği veya silebileceği çalışan bir sayfa görür.
Logo kurulumda sitenin kendi Medya Kitaplığına aktarılır ve diğer görseller gibi bloğa bağlanır. Sitenin kendi kaynağından sunulur; yönetici değiştirebilir veya silebilir. Uzak sunucuya doğrudan bağlanmaz: bu, her ziyaretçiye üçüncü taraf isteği yaptırır ve ana sayfayı başka sunucunun erişilebilirliğine bağlar. Salt okunur disk veya eksik dosya yüzünden aktarılamazsa kurulum başarısız olmaz; blok medyasız kalır.
Tüm kurulum yollarında güvenliği sağlayan kurallar:
- başlangıç içeriği yalnızca hiç blok içermeyen sayfaya yazılır; mevcut içeriği asla değiştirmez
- yalnızca kurulum sırasında yazılır; Sistem Güncellemesi bunu eklemez veya geri getirmez
- eksik veya okunamayan şablon bildirilip atlanır; kurulum için ölümcül değildir
- bilinmeyen blok türünde kurulum bozulmaz; blok ve alt blokları atlanır
Kontroller:
WEBBLOCKS_CMS_STARTER_CONTENT=true
WEBBLOCKS_CMS_STARTER_CONTENT_PATH=
WEBBLOCKS_CMS_SEND_POWERED_BY_HEADER=true
WEBBLOCKS_CMS_STARTER_CONTENT=falseboş bir yayınlanmış ana sayfa kurar.php artisan webblocks:install --skip-starter-contentaynı işlemi tek çalıştırma için yapar.WEBBLOCKS_CMS_STARTER_CONTENT_PATH, ürün kendi başlangıç sayfasını sunacaksa özel şablon dizininizi gösterir.WEBBLOCKS_CMS_SEND_POWERED_BY_HEADER=true, kurulu sürümü açıklamadan teknoloji kataloglarının ürünü tanıması için genel CMS yanıtlarınaX-Powered-By: WebBlocks CMSekler. Kurulum politikası ürün tanımlamasını yasaklıyorsafalseyapın.
Mevcut Kuruluma Başlangıç İçeriği Ekleme
Bu özellikten önce oluşturulan kurulumun ana sayfası boş kalır; Sistem Güncellemesi içerik eklemez. Bir kez doldurmak için:
php artisan webblocks:starter-content
Çok siteli kurulumda --site=handle siteyi seçer; verilmezse birincil site kullanılır.
Sitenin / sayfası yoksa oluşturur, başlangıç bloklarını yalnızca sayfa hiç blok içermiyorsa yazar. İçerik varsa işlem yapmaz ve nedenini bildirir. Başka sayfaya dokunmaz; iki kez çalıştırmak güvenlidir.
Komut sınıf adı veya üretim onayı istemez; hedeflenen çalıştırıcılar bunları desteklemez. Barındırma panelinin Artisan ekranı db:seed üretim sorusunu yanıtlayamaz; bazı paneller ad alanlı --class değerindeki ters eğik çizgileri silip Laravel'in Database\Seeders\WebBlocksCmsDatabaseSeedersStarterContentSeeder çözümlemesine neden olur. Burada onay yerine yapısal güvence vardır: başlangıç içeriği yalnızca bloksuz sayfaya yazılır.
Aynı işlem, yeni kurulumda db:seed tarafından çalıştırılan seeder üzerinden de erişilebilir:
php artisan db:seed --class="WebBlocks\Cms\Database\Seeders\StarterContentSeeder" --force
Şablonlar paketin database/content/starter dizinindeki JSON dosyalarıdır; webblocks.cms.starter-content.v1 şemasını ve AI Sayfa Oluşturma Rehberi ile aynı blok sözlüğünü kullanır. Varsayılan home.json; yanında bulunan yerel ayarlı home.{locale}.json, kurulumun varsayılan dili eşleşirse önceliklidir. Dizin içindeki README.md dosya biçimini açıklar.
Genel Kurulum Notları
- kurulum sihirbazı tamamlandıktan sonra kilitlenir
/webadminkanonik CMS yönetim giriş noktasıdır- paket tüketicisi kurulumları
/webadmin/loginüzerinden oturum açabilir; birlikte kurulmuş uygulamalar ana uygulamaya ait/loginrotasını koruyabilir /webadmin/dashboard,/webadminadresine yönlendirir- CMS varlıkları
/cmsaltında kalır, örneğin/cms/css,/cms/jsve/cms/brand - pakete ait
/webadmin/login; paket Blade görünümlerini, WebBlocks UI misafir kimlik doğrulama kabuğunu, sabitlenmiş WebBlocks UI varlıklarını,/cms/css/guest.cssdosyasını ve normal, koyu yüzey, vurgu üstü/ters ve yüksek karşıtlıklı favicon/tarayıcı sekmesi varyantları dahil/cms/brandaltındaki CMS ürün marka varlıklarını kullanır /cms, CMS'ye ait statik herkese açık varlıklar için ayrılmıştır ve CMS yönetim rotası öneki, takma adı veya yönlendirmesi olarak kullanılmamalıdır/adminCMS'ye ait değildir ve CMS yönetim rotası olarak geri getirilmemelidir- yeni sayfalar
draftdurumunda başlar - revizyonlar, yedeklemeler veya güncellemeler gibi kurulum düzeyi özellikler eksik tablolar bildirirse
php artisan migrateçalıştırın
/webadmin ile /cms ayrımı, Laravel bir rotayı işlemeden önce /cms/ adresinin fiziksel public/cms/ varlık dizini olarak çözümlenebildiği Nginx try_files çakışmasını önler. Yönetici erişimini bir public/cms/index.php devri ekleyerek çözmeyin; bu ön denetleyici köprüsü kök ve paket herkese açık varlıklarında bulunmamalıdır.
E-posta ve İletişim Formu Hazırlığı
Herkese açık bir iletişim sayfasını yayınlamadan önce Laravel posta gönderimini yapılandırın. Tipik bir SMTP .env kurulumu şöyle görünür:
MAIL_MAILER=smtp
MAIL_HOST=smtp.example.com
MAIL_PORT=587
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=no-reply@example.com
MAIL_FROM_NAME="Site Name"
CONTACT_RECIPIENT_EMAIL=contact@example.com
MAIL_*, İletişim Formu bildirim denemeleri için Laravel posta gönderimini denetler. MAIL_FROM_ADDRESS güvenli yedek gönderen/kimden adresidir ve daha özel bir alıcı yapılandırılmadığında son güvenli İletişim Formu alıcı yedeğidir. CONTACT_RECIPIENT_EMAIL isteğe bağlıdır ve ortam düzeyinde bir yedek alıcı görevi görür. Mümkün olduğunda site düzeyindeki İletişim alıcısını Site -> Edit -> Contact altında yapılandırmayı tercih edin; böylece iletişim yönlendirmesi yalnızca .env içinde değil, siteyle birlikte yaşar.
Üretim veya paket kurulumu .env posta ayarlarını değiştirdikten sonra, kurulum yapılandırma önbelleği kullanıyorsa önbelleğe alınmış yapılandırmayı temizleyin:
php artisan optimize:clear
İletişim Formu bildirimleri alıcıları şu sırayla çözümler:
- İletişim Formu bloğu
recipient_email Site -> Edit -> Contactaltındaki site varsayılan iletişim alıcısı.envCONTACT_RECIPIENT_EMAIL- güvenli
MAIL_FROM_ADDRESSyedeği
Kabul edilen gerçek İletişim Formu gönderimleri, e-posta bildirimi denenmeden önce kaydedilir. Bildirim hatası, herkese açık form gönderiminin başarısız olduğu anlamına gelmez. Yöneticiler kaydedilen mesajlar, bildirim durumu ve güvenli hata ayrıntıları için /webadmin/contact-messages adresini kontrol etmelidir. Herkese açık ziyaretçiler yalnızca normal başarı veya doğrulama geri bildirimini görmeli, posta tanılamalarını görmemelidir.
Sent, CMS'nin bildirimi yapılandırılmış posta aktarımına istisnasız teslim ettiği anlamına gelir; gelen kutusuna teslimi garanti etmez. Skipped veya Not configured, gerçek bir bildirim gönderiminin denenmediği anlamına gelir.
İletişim sayfaları için yerleşik contact_form bloğunu kullanın. Onu Trusted HTML, ham <form> işaretlemesi veya mailto: yedekleriyle değiştirmeyin. CMS işleyicisi gizli istenmeyen posta denetim alanını otomatik olarak üretir; onu elle oluşturmayın. Eski website tuzak (honeypot) alanı artık herkese açık sözleşmenin parçası değildir.
Pratik İletişim Formu doğrulama testi:
- Yerleşik
contact_formbloğunu içeren bir sayfayı yayınlayın veya önizleyin. - Ad, e-posta, konu ve mesaj içeren bir test mesajı gönderin.
/webadmin/contact-messagesadresini açın.- Mesajın kaydedildiğini doğrulayın.
- Bildirim durumunu gözden geçirin.
- E-posta ulaşmadıysa güvenli hata ayrıntılarını inceleyin ve posta tanılamalarını çalıştırın.
Tanılama komutları:
php artisan contact:mail-diagnose
php artisan contact:mail-diagnose --block=ID
php artisan contact:mail-diagnose --send-test=you@example.com
Tanılama komutu parolaları, belirteçleri veya posta gizli bilgilerini yazdırmamalıdır. Tek bir İletişim Formu bloğunun alıcı yedek zincirini incelemek için --block=ID kullanın. --send-test= seçeneğini yalnızca kasıtlı bir test adresine kontrollü bir SMTP gönderim denetimi için kullanın.
Kurulum Sonrası Adımlar
/webadminadresinde oturum açın.- Site ve dil (locale) yapılandırmanızı gözden geçirin.
- Site kimliğini ve alan adlarını yapılandırın.
- Laravel posta ayarlarını veya onaylı sistem posta ayarlarını yapılandırın.
- Bir İletişim Formu alıcısını, tercihen
Site -> Edit -> Contactüzerinde yapılandırın. php artisan contact:mail-diagnosekomutunu çalıştırın.- Yerleşik bir test İletişim Formu gönderin ve bir İletişim Mesajı kaydettiğini doğrulayın.
- Bu test mesajı için e-posta bildirim durumunu gözden geçirin.
- Başlangıç ana sayfasını editörde açıp özelleştirin.
- İlk sayfanızı oluşturun.
- Medya, gezinme ve bloklar ekleyin.
- İçeriği editoryal iş akışı üzerinden yayınlayın.
Genel İçerik Bağlama Noktası
Varsayılan entegre mod kökteki genel URL'leri korur. Laravel ürünü yanında çalıştırmak için kurulum/dağıtım öncesi WEBBLOCKS_CMS_PUBLIC_MOUNT=wb yapılandırın: içerik, arama ve site haritası /wb kullanırken yönetim/API/varlık/form uçları kendi alanlarında kalır. Bağlı kurulum ana uygulamanın karşılama rotasını korur. Bu tüm kurulumun ayarıdır; panel veya Site ayarı değildir. Etkinleştirmeden ya da değiştirmeden önce önbellek yenileme, ana uygulama catch-all rotaları, robots sahipliği ve URL geçişi için Genel Yönlendirme belgesini okuyun.