7.5 KiB
Installazione Ubuntu 24.04 automatica
Questa famiglia di script separa tre problemi diversi:
-
scripts/install/ubuntu2404-laravel-base.shPrepara una macchina Ubuntu 24.04 nuova per progetti Laravel in generale. Installa stack di base: PHP, Composer, Node.js, MySQL, Nginx, Redis, Supervisor. Se non disattivato, installa anche XFCE, XRDP e Visual Studio Code. -
scripts/install/laravel-site-bootstrap.shPubblica un singolo progetto Laravel su una macchina gia pronta. Usa chiavi univoche per sito, file Nginx, cron e Supervisor. Di default si rifiuta di sovrascrivere directory, vhost e database gia esistenti. -
scripts/install/netgescon-node-bootstrap.shPrende una macchina gia pronta con lo stack Laravel e installa un nodo NetGescon pronto per il login iniziale e per la paginaadmin-filament/supporto/aggiornamento-nodo.
Installazione via curl
Se il nodo che espone l'applicazione e raggiungibile, puoi usare direttamente gli endpoint pubblici in public/installers.
Indice rapido browser:
http://192.168.0.200:8000/installers/https://staging.netgescon.it/installers/
Script base macchina:
curl -fsSL http://192.168.0.200:8000/installers/ubuntu2404-laravel-base.php -o /tmp/ubuntu2404-laravel-base.sh
sudo bash /tmp/ubuntu2404-laravel-base.sh
curl -fsSL https://staging.netgescon.it/installers/ubuntu2404-laravel-base.php -o /tmp/ubuntu2404-laravel-base.sh
sudo bash /tmp/ubuntu2404-laravel-base.sh
Versione server-only senza XFCE, VS Code e XRDP:
curl -fsSL http://192.168.0.200:8000/installers/ubuntu2404-laravel-base.php -o /tmp/ubuntu2404-laravel-base.sh
sudo bash /tmp/ubuntu2404-laravel-base.sh --without-xfce --without-vscode --without-xrdp
Bootstrap sito Laravel generico:
curl -fsSL http://192.168.0.200:8000/installers/laravel-site-bootstrap.php -o /tmp/laravel-site-bootstrap.sh
sudo bash /tmp/laravel-site-bootstrap.sh \
--site-key demo-app \
--project-name "Demo App" \
--repo-url git@your-gitea:studio/demo-app.git \
--branch main \
--app-url http://demo.example.local \
--server-name demo.example.local \
--db-password 'StrongDbPass123!'
Bootstrap nodo NetGescon:
curl -fsSL http://192.168.0.200:8000/installers/netgescon-node-bootstrap.php -o /tmp/netgescon-node-bootstrap.sh
sudo bash /tmp/netgescon-node-bootstrap.sh \
--site-key netgescon-prod \
--repo-url git@your-gitea:studio/netgescon.git \
--branch main \
--app-url http://192.168.0.200 \
--server-name 192.168.0.200 \
--db-password 'StrongDbPass123!' \
--admin-email admin@netgescon.local \
--admin-password 'StrongAdminPass123!'
La stessa chiamata su staging puo diventare:
curl -fsSL https://staging.netgescon.it/installers/netgescon-node-bootstrap.php -o /tmp/netgescon-node-bootstrap.sh
sudo bash /tmp/netgescon-node-bootstrap.sh \
--site-key netgescon-staging \
--repo-url git@your-gitea:studio/netgescon.git \
--branch main \
--app-url https://staging.netgescon.it \
--server-name staging.netgescon.it \
--db-password 'StrongDbPass123!' \
--admin-email admin@netgescon.local \
--admin-password 'StrongAdminPass123!'
1. Base machine Laravel
Esecuzione consigliata:
sudo bash scripts/install/ubuntu2404-laravel-base.sh
Varianti utili:
sudo bash scripts/install/ubuntu2404-laravel-base.sh --without-xfce --without-vscode
sudo bash scripts/install/ubuntu2404-laravel-base.sh --projects-dir /srv/laravel-projects
Cosa fa:
- aggiorna Ubuntu 24.04
- mostra una schermata iniziale con stato corrente macchina e componenti gia presenti
- chiede prima di partire quali blocchi installare o saltare
- installa PHP 8.3 e moduli Laravel comuni
- installa Composer e Node.js
- installa MySQL, Nginx, Redis e Supervisor
- apre firewall per SSH, HTTP, HTTPS e XRDP se richiesto
- crea una base di lavoro per progetti Laravel in
/srv/laravel-projects - opzionalmente installa XFCE, XRDP e VS Code
Se vuoi saltare la schermata interattiva e usare lo script in automazione, puoi aggiungere --non-interactive al comando.
2. Bootstrap sito Laravel generico
Esempio completo:
sudo bash scripts/install/laravel-site-bootstrap.sh \
--site-key frontoffice-demo \
--project-name "Frontoffice Demo" \
--repo-url git@your-gitea:studio/frontoffice-demo.git \
--branch main \
--app-url https://frontoffice-demo.example.it \
--server-name frontoffice-demo.example.it \
--db-password 'StrongDbPass123!'
Cosa fa:
- clona il repository applicativo in una directory dedicata, di default
/var/www/<site-key> - crea un database e un utente MySQL dedicati al sito
- prepara
.env, chiave applicativa e cache Laravel - installa dipendenze Composer e, se presenti, builda gli asset frontend
- crea un file Nginx dedicato e separato dagli altri siti pubblicati
- configura cron scheduler e, se richiesto, un worker Supervisor dedicato
- rifiuta per default di sovrascrivere directory applicative, database o vhost gia esistenti
Flag utili per riuso controllato:
--allow-existing-app-dirpermette di riusare una worktree git Laravel gia esistente--allow-existing-databasepermette di riusare database e utente MySQL gia presenti--replace-nginx-sitepermette di sostituire esplicitamente un vhost gia presente--with-queue-workerabilita un worker Supervisor dedicato al sito
Questo e il pezzo da usare per avere 2 o 3 siti diversi sulla stessa macchina, per esempio frontoffice, demo e produzione, senza collisioni sui file di servizio.
3. Bootstrap nodo NetGescon
Esempio completo:
sudo bash scripts/install/netgescon-node-bootstrap.sh \
--site-key netgescon-prod \
--repo-url git@your-gitea:studio/netgescon.git \
--branch main \
--app-url https://netgescon.example.it \
--server-name netgescon.example.it \
--db-password 'StrongDbPass123!' \
--admin-email admin@netgescon.example.it \
--admin-password 'StrongAdminPass123!'
Cosa fa:
- clona il repository applicativo in
/var/www/netgescon - clona una seconda copia Git sorgente in
/var/www/netgescon-git-source - collega il repository sorgente a
storage/app/support/git-source - configura
.envconNETGESCON_GIT_SYNC_SOURCE_REPO - crea database e utente MySQL
- installa dipendenze Composer e, se presenti, builda gli asset frontend
- esegue migrazioni
- crea un utente iniziale con ruoli
super-admineadmin - configura Nginx, cron scheduler e Supervisor queue worker
- lascia il nodo pronto per aprire
admin-filament/supporto/aggiornamento-nodo
Guard-rail aggiunti:
- usa
--site-keyper rendere univoci file Nginx, cron e Supervisor - non sovrascrive piu automaticamente directory, database o vhost gia esistenti
- per riusare una installazione esistente servono flag espliciti come
--allow-existing-app-dir,--allow-existing-databasee--replace-nginx-site
Note operative
- Gli script sono pensati per Ubuntu 24.04.
- Lo script NetGescon presuppone che la macchina abbia gia PHP, Composer, Node, MySQL e Nginx installati.
- Lo script Laravel generico e quello da riusare per altri progetti non NetGescon sulla stessa macchina.
- Se il repository Gitea usa SSH, la macchina deve avere gia la chiave deploy o la chiave utente autorizzata.
- Se vuoi una macchina solo server senza desktop, usa la base machine con
--without-xfce --without-vscode --without-xrdp. - Dopo il bootstrap del nodo conviene configurare subito HTTPS e backup automatici.
- Gli endpoint curl leggono direttamente gli script versionati nel repository, quindi dopo pull/deploy espongono sempre la versione aggiornata senza copiare file a mano.