195 lines
7.5 KiB
Markdown
195 lines
7.5 KiB
Markdown
# Installazione Ubuntu 24.04 automatica
|
|
|
|
Questa famiglia di script separa tre problemi diversi:
|
|
|
|
1. `scripts/install/ubuntu2404-laravel-base.sh`
|
|
Prepara 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.
|
|
|
|
2. `scripts/install/laravel-site-bootstrap.sh`
|
|
Pubblica 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.
|
|
|
|
3. `scripts/install/netgescon-node-bootstrap.sh`
|
|
Prende una macchina gia pronta con lo stack Laravel e installa un nodo NetGescon pronto per il login iniziale e per la pagina `admin-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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
sudo bash scripts/install/ubuntu2404-laravel-base.sh
|
|
```
|
|
|
|
Varianti utili:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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-dir` permette di riusare una worktree git Laravel gia esistente
|
|
- `--allow-existing-database` permette di riusare database e utente MySQL gia presenti
|
|
- `--replace-nginx-site` permette di sostituire esplicitamente un vhost gia presente
|
|
- `--with-queue-worker` abilita 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:
|
|
|
|
```bash
|
|
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 `.env` con `NETGESCON_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-admin` e `admin`
|
|
- configura Nginx, cron scheduler e Supervisor queue worker
|
|
- lascia il nodo pronto per aprire `admin-filament/supporto/aggiornamento-nodo`
|
|
|
|
Guard-rail aggiunti:
|
|
|
|
- usa `--site-key` per 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-database` e `--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.
|