Installazione
Panoramica
WebBlocks CMS supporta un flusso di installazione come pacchetto consumer per applicazioni Laravel nuove, una procedura guidata di installazione via browser per installazioni nuove dal repository di manutenzione e un percorso di installazione manuale tramite la CLI di Laravel.
Per un'installazione nuova, iniziate portando il codice sorgente di WebBlocks CMS sulla vostra macchina. Eseguite Composer, create .env, usate Artisan e aprite la procedura guidata di installazione nel browser solo dopo che il codice sorgente è presente in locale.
Un'installazione è considerata completa quando l'applicazione dispone di una base funzionante del CMS:
- esiste una chiave applicativa
- il database è raggiungibile
- esistono le tabelle richieste
- esistono i dati di seed di base
- esiste il primo
super_adminattivo - un marcatore di completamento dell'installazione è memorizzato in
system_settings
Ottenere il codice sorgente
Prima di eseguire qualsiasi comando di installazione, assicuratevi che il repository di WebBlocks CMS sia presente in locale.
Clonare in una nuova cartella:
git clone https://github.com/fklavyenet/webblocks-cms.git
cd webblocks-cms
git remote set-url --push origin DISABLED
Clonare in una cartella vuota già creata:
git clone https://github.com/fklavyenet/webblocks-cms.git .
git remote set-url --push origin DISABLED
Quando il codice sorgente è presente in locale, proseguite con uno dei percorsi di installazione nuova descritti di seguito.
Le installazioni di WebBlocks CMS sono soltanto consumatrici di aggiornamenti. Possono eseguire fetch o pull degli aggiornamenti del CMS, oppure scaricarli, ma non devono inviare commit o tag verso l'upstream canonico del CMS. Per i cloni di installazione locali esistenti, eseguite git remote set-url --push origin DISABLED una volta nella copia di lavoro dell'installazione.
Installazione come pacchetto consumer
Usate questo flusso quando WebBlocks CMS viene installato in un'applicazione Laravel nuova tramite Composer.
composer require fklavyenet/webblocks-cms
php artisan webblocks:install --name="Admin User" --email="admin@example.com" --password="secret-password"
Opzioni supportate:
--name=nome visualizzato del primo super admin--email=indirizzo e-mail del primo super admin--password=password del primo super admin--site-name=nome del sito predefinito--site-handle=handle del sito predefinito--repair-partialrinomina le tabelle CMS parziali vuote prima delle migrazioni di installazione nuova--forcesovrascrive gli asset CMS di proprietà del pacchetto o i file di configurazione pubblicati quando serve
Che cosa fa webblocks:install:
- pubblica
config/webblocks-cms.phpquando l'applicazione ospite non lo ha già - rimuove da
routes/web.phpla rotta welcome intatta di un Laravel nuovo quando è sicuro farlo, creando prima un backup con marca temporale, così le rotte pubbliche del CMS possono servire/ - applica una patch a
app/Models/User.phpconWebBlocks\Cms\Auth\Concerns\HasWebBlocksCmsAccess - crea un backup con marca temporale prima di modificare
User.php - salta la patch quando il trait è già presente
- fallisce in modo chiaro se
User.phpnon è una classeApp\Models\User extends Authenticatablericonoscibile - esegue il percorso di migrazione di installazione nuova del pacchetto per installazioni consumer pulite
- rileva schemi CMS parziali prima di eseguire le migrazioni di installazione nuova e segnala le tabelle CMS esistenti, i conteggi delle righe, le righe di migrazione correlate e i conflitti noti di chiavi esterne
- ripara gli schemi CMS parziali vuoti solo quando viene fornito
--repair-partial, rinominando le tabelle CMS vuote con un suffisso_before_cms_install_...con marca temporale prima di proseguire - rifiuta la riparazione automatica quando una tabella CMS parziale contiene righe
- evita di rieseguire quello schema nuovo quando le tabelle del CMS esistono già
- crea le tabelle di supporto di Laravel senza eseguire le migrazioni dell'applicazione ospite; attualmente copre i token di reimpostazione password del CMS e
sessions,cacheecache_locksquando quei driver basati su database sono configurati - non esegue il normale insieme di migrazioni Laravel dell'applicazione ospite come parte dell'installazione del pacchetto, evitando così conflitti con la tabella
userscompatibile con il CMS già creata - prepara la root del disco filesystem
backupsusata da Backup / Restore - installa gli asset CMS di proprietà del pacchetto in
public/cms - crea
public/storagequando manca e l'ambiente lo consente - esegue in modo idempotente il seed di lingue, siti, tipi di slot, page layouts, icone e tipi di blocco di base
- registra la versione installata e il marcatore di completamento dell'installazione in
system_settings - crea il primo
super_adminattivo solo quando non ne esiste già uno
L'autenticazione del pacchetto è nativa di Laravel e non richiede Breeze, Jetstream, Laravel UI o Fortify. Dopo l'installazione, accedete da /webadmin/login quando le rotte di autenticazione del pacchetto CMS sono attive. Le viste di autenticazione di proprietà del CMS e i redirect per gli ospiti nell'amministrazione usano nomi di rotta del pacchetto come webblocks.auth.login e webblocks.auth.logout, così un prodotto ospite può mantenere la propria rotta globale login, per esempio /quiztem/login, senza sottrarre le azioni dei form del CMS o i redirect verso /webadmin.
Per l'attuale confine consumer del pacchetto v1.32.x, l'App\Models\User dell'applicazione ospite resta il modello di autenticazione e il bersaglio della patch al momento dell'installazione.
Recupero di un'installazione parziale
Se webblocks:install si arresta dopo un'esecuzione precedente fallita o interrotta, rieseguitelo prima senza riparazione e leggete la diagnostica dell'installazione parziale. Le tabelle CMS vuote possono essere spostate da parte in modo esplicito:
php artisan webblocks:install --repair-partial --name="Admin User" --email="admin@example.com" --password="secret-password"
La modalità di riparazione rinomina soltanto le tabelle candidate vuote di proprietà del CMS. Non elimina tabelle, non altera automaticamente le tabelle non vuote e non presume che il CMS sia proprietario dell'applicazione ospite.
Procedura guidata di installazione nel browser
Usate la procedura guidata del browser per un'installazione nuova.
Quando il codice sorgente è presente in locale, iniziate con:
composer install
cp .env.example .env
php artisan serve
Poi aprite http://127.0.0.1:8000/install.
La procedura guidata copre:
- controlli di prontezza dell'ambiente
- configurazione del database e convalida della connessione
- installazione del nucleo del CMS
- creazione del primo
super_admin - blocco dell'installazione al completamento
Note:
- l'installer è pensato per installazioni nuove
- se la configurazione è incompleta, la procedura guidata può essere riaperta e ripresa in sicurezza
- al termine, le rotte di installazione vengono bloccate e subentra il normale flusso di autenticazione/amministrazione
- l'installer scrive la configurazione del database selezionata in
.env
Installazione manuale da CLI
Usate il flusso da CLI quando preferite un percorso di configurazione Laravel standard per un'installazione nuova.
composer install
cp .env.example .env
php artisan key:generate
php artisan migrate
php artisan db:seed
php artisan storage:link
php artisan serve
Note:
php artisan db:seedinstalla i cataloghi di base del CMS e registra la versione attuale dell'applicazione come versione installata per un'installazione nuovaphp artisan storage:linkè necessario se la distribuzione pubblica dei file deve usarestorage/app/public- le cartelle di runtime sotto
storage/framework,storage/logsebootstrap/cachevengono create automaticamente alla prima esecuzione - Backup / Restore memorizza gli archivi sul disco filesystem
backups, per impostazione predefinitastorage/app/backups. L'utente del runtime PHP dovrebbe essere proprietario di quella cartella o condividere un gruppo di deployment con accesso in lettura/scrittura; evitate modalità777troppo ampie.
Installazione locale nativa
Per un progetto Laravel nuovo eseguito con PHP e Composer installati localmente:
composer require fklavyenet/webblocks-cms
php artisan webblocks:install --name="Admin User" --email="admin@example.com" --password="secret-password"
Poi aprite:
- sito pubblico:
/ - login amministrativo:
/webadmin/login - amministrazione:
/webadmin
Quando il codice sorgente è presente in locale:
composer install
cp .env.example .env
php artisan key:generate
Note:
- lo sviluppo locale attendibile dovrebbe usare domini
.teste HTTPS, conhttps://webblocks-cms.testcome URL canonico di sviluppo del CMS php artisan serveresta utile per controlli rapidi solo da CLI, ma i flussi di lavoro attendibili nel browser dovrebbero usare la configurazione nativa Nginx/PHP-FPM documentata indocs/native-local-development.md- le notifiche e-mail del modulo di contatto in locale dovrebbero usare un catcher SMTP locale o un account SMTP di prova attendibile; i valori SMTP locali abituali dipendono dallo strumento installato
- i destinatari delle notifiche di Contact Form si risolvono in questo ordine:
recipient_emaila livello di blocco, il destinatario di contatto predefinito del sito corrente,CONTACT_RECIPIENT_EMAILe infineMAIL_FROM_ADDRESScome ultimo fallback sicuro - gli invii di contatto vengono memorizzati indipendentemente dalla consegna della notifica, quindi una risposta pubblica
Message sentconferma il successo dell'archiviazione anche se in seguito l'amministrazione mostra la notifica comeFailed,SkippedoNot configured MAIL_MAILER=log,MAIL_MAILER=arrayeMAIL_MAILER=nullnon costituiscono una consegna in uscita reale e vengono mostrati come non configurati per la notifica di Contact Message- i blocchi Contact Form renderizzano un wrapper nascosto
.wb-form-checkdi proprietà del CMS coninert,aria-hidden="true", un campoform_check_{token}generato dal renderer,tabindex="-1"eautocomplete="off"; quando quel campo di controllo generato viene compilato, il server restituisce lo stesso redirect generico di successo e non memorizza alcun Contact Message né tenta la notifica - gli invii che superano il campo di controllo generato possono comunque essere classificati come
spamin base a segnali memorizzati conservativi, come linguaggio di contatto commerciale, densità di link, invii ripetuti dallo stesso IP o una proposta di vendita da posta gratuita con oggetto generico; questo stato è una classificazione amministrativa durevole ed è separato dallo stato della notifica e-mail - quando la consegna della notifica fallisce, gli amministratori possono ispezionare il messaggio salvato in
Admin -> Contact Messagesper vedere lo stato di errore compatto nell'elenco e il dettaglio dell'errore memorizzato nella schermata di dettaglio del messaggio
Poi aprite:
- sito pubblico:
https://webblocks-cms.test - amministrazione:
https://webblocks-cms.test/webadmin - installer in un'installazione nuova:
https://webblocks-cms.test/install
Completate l'installazione nuova nella procedura guidata del browser dopo aver eseguito quei passaggi di configurazione.
Accedere alla procedura guidata di installazione
- le installazioni nuove reindirizzano automaticamente a
/install - potete anche aprire manualmente la procedura guidata su
/install - potete aprire
/install/coreper passare direttamente al passaggio di installazione del nucleo quando i requisiti precedenti sono già soddisfatti - la procedura guidata può avanzare automaticamente tra i passaggi man mano che i requisiti vengono soddisfatti
- aprire
/e/installin più schede del browser può mostrare passaggi diversi della procedura guidata; è previsto, perché l'installer tiene traccia dell'avanzamento e instrada di conseguenza
Creazione del primo super admin
Il primo super_admin è necessario perché un'installazione sia completa.
- nella procedura guidata del browser, create il primo amministratore durante il passaggio finale di configurazione
- nel flusso da CLI come pacchetto consumer, fornite
--name,--emaile--passwordawebblocks:install - in un'installazione manuale, assicuratevi che esista almeno un account
super_adminattivo prima di considerare il CMS completamente installato
super_admin è il ruolo a livello di installazione che può accedere a Users, siti, lingue, impostazioni, aggiornamenti, backup, esportazione/importazione e a tutti i contenuti dei siti.
Note di configurazione comuni
- l'installer viene bloccato al termine
/webadminè il punto di ingresso amministrativo canonico del CMS- le installazioni come pacchetto consumer possono accedere tramite
/webadmin/login; le app coinstallate possono mantenere il/logindi proprietà dell'host /webadmin/dashboardreindirizza a/webadmin- gli asset del CMS restano sotto
/cms, per esempio/cms/css,/cms/jse/cms/brand - il
/webadmin/logindi proprietà del pacchetto usa viste Blade del pacchetto, lo shell di autenticazione guest di WebBlocks UI, asset di WebBlocks UI fissati,/cms/css/guest.csse gli asset di marchio del prodotto CMS da/cms/brand, comprese le varianti di favicon e scheda del browser normale, per superficie scura, su colore d'accento/inversa e ad alto contrasto /cmsè riservato agli asset pubblici statici di proprietà del CMS e non deve essere usato come prefisso, alias o redirect delle rotte amministrative del CMS/adminnon è di proprietà del CMS e non deve essere ripristinato come rotta amministrativa del CMS- le pagine nuove partono in
draft - se funzionalità a livello di installazione come revisioni, backup o aggiornamenti segnalano tabelle mancanti, eseguite
php artisan migrate
La separazione tra /webadmin e /cms evita la collisione di try_files in Nginx in cui /cms/ può essere risolto come la cartella fisica di asset public/cms/ prima che Laravel gestisca una rotta. Non risolvete l'accesso amministrativo aggiungendo un passaggio public/cms/index.php; quel ponte di front controller deve restare assente dagli asset pubblici della root e del pacchetto.
Preparazione di e-mail e modulo di contatto
Configurate la consegna della posta di Laravel prima di pubblicare una pagina di contatto pubblica. Una tipica configurazione SMTP in .env ha questo aspetto:
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_* controlla la consegna della posta di Laravel per i tentativi di notifica di Contact Form. MAIL_FROM_ADDRESS è l'indirizzo mittente sicuro di fallback ed è anche l'ultimo destinatario sicuro di fallback di Contact Form quando non è configurato un destinatario più specifico. CONTACT_RECIPIENT_EMAIL è opzionale e funge da destinatario di fallback a livello di ambiente. Preferite configurare il destinatario di contatto a livello di sito in Site -> Edit -> Contact quando è disponibile, così l'instradamento dei contatti risiede con il sito e non solo in .env.
Dopo aver modificato le impostazioni di posta in .env in produzione o in un'installazione da pacchetto, svuotate la configurazione in cache se l'installazione usa la cache di configurazione:
php artisan optimize:clear
Le notifiche di Contact Form risolvono i destinatari in questo ordine:
recipient_emaildel blocco Contact Form- destinatario di contatto predefinito del sito, da
Site -> Edit -> Contact CONTACT_RECIPIENT_EMAILin.env- fallback sicuro
MAIL_FROM_ADDRESS
Gli invii reali accettati di Contact Form vengono memorizzati prima di tentare la notifica e-mail. Un errore di notifica non significa che l'invio pubblico del modulo sia fallito. Gli amministratori dovrebbero controllare /webadmin/contact-messages per i messaggi memorizzati, lo stato della notifica e i dettagli sicuri dell'errore. I visitatori pubblici dovrebbero vedere solo il normale riscontro di successo o di convalida, non le diagnostiche di posta.
Sent significa che il CMS ha consegnato la notifica al trasporto di posta configurato senza eccezioni; non garantisce la consegna nella casella di posta. Skipped o Not configured significano che non è stato tentato alcun invio reale della notifica.
Usate il blocco nativo contact_form per le pagine di contatto. Non sostituitelo con Trusted HTML, con markup <form> grezzo o con fallback mailto:. Il renderer del CMS genera automaticamente il campo nascosto di controllo antispam; non createlo manualmente. Il vecchio campo honeypot website non è più il contratto pubblico.
Smoke test pratico di Contact Form:
- Pubblicate o visualizzate in anteprima una pagina che contiene il blocco nativo
contact_form. - Inviate un messaggio di prova con nome, e-mail, oggetto e messaggio.
- Aprite
/webadmin/contact-messages. - Verificate che il messaggio sia stato memorizzato.
- Esaminate lo stato della notifica.
- Se l'e-mail non è arrivata, ispezionate i dettagli sicuri dell'errore ed eseguite le diagnostiche di posta.
Comandi di diagnostica:
php artisan contact:mail-diagnose
php artisan contact:mail-diagnose --block=ID
php artisan contact:mail-diagnose --send-test=you@example.com
Il comando di diagnostica non deve stampare password, token o segreti di posta. Usate --block=ID per ispezionare la catena di fallback dei destinatari di un singolo blocco Contact Form. Usate --send-test= solo per un controllo di invio SMTP controllato verso un indirizzo di prova intenzionale.
Passaggi successivi dopo l'installazione
- Accedete a
/webadmin. - Verificate la configurazione del vostro sito e delle lingue (locale).
- Configurate l'identità del sito e i domini.
- Configurate le impostazioni di posta di Laravel oppure le impostazioni di posta di sistema approvate.
- Configurate un destinatario per il Contact Form, preferibilmente in
Site -> Edit -> Contact. - Eseguite
php artisan contact:mail-diagnose. - Inviate un Contact Form nativo di prova e verificate che venga salvato un Contact Message.
- Controllate lo stato della notifica e-mail per quel messaggio di prova.
- Create la vostra prima pagina.
- Aggiungete media, navigazione e blocchi.
- Pubblicate i contenuti attraverso il flusso di lavoro editoriale.