Vai al contenuto

Deploy su DigitalOcean

Questa guida ti accompagnerà nel deploy di una semplice applicazione Vapor "Hello, world" su un Droplet. Per seguire questa guida, è necessario avere un account DigitalOcean con la fatturazione configurata.

Creare il Server

Iniziamo installando Swift su un server Linux. Usa il menu di creazione per creare un nuovo Droplet.

Create Droplet

Nella sezione distribuzioni, seleziona Ubuntu 22.04 LTS. La guida seguente utilizzerà questa versione come esempio.

Ubuntu Distro

Nota

Puoi selezionare qualsiasi distribuzione Linux con una versione supportata da Swift. Puoi verificare quali sistemi operativi sono ufficialmente supportati nella pagina Swift Releases.

Dopo aver selezionato la distribuzione, scegli il piano e la regione del datacenter che preferisci. Quindi configura una chiave SSH per accedere al server dopo la sua creazione. Infine, clicca su "Create Droplet" e attendi che il nuovo server si avvii.

Quando il nuovo server è pronto, passa il cursore sull'indirizzo IP del Droplet e clicca su copia.

Droplet List

Configurazione Iniziale

Apri il terminale e connettiti al server come root tramite SSH.

ssh root@your_server_ip

DigitalOcean ha una guida dettagliata per la configurazione iniziale del server su Ubuntu 22.04. Questa guida coprirà rapidamente le basi.

Configurare il Firewall

Consenti OpenSSH attraverso il firewall e abilitalo.

ufw allow OpenSSH
ufw enable

Aggiungere un Utente

Crea un nuovo utente oltre a root. Questa guida chiama il nuovo utente vapor.

adduser vapor

Consenti al nuovo utente di usare sudo.

usermod -aG sudo vapor

Copia le chiavi SSH autorizzate dell'utente root nel nuovo utente. Questo ti permetterà di accedere via SSH come nuovo utente.

rsync --archive --chown=vapor:vapor ~/.ssh /home/vapor

Infine, esci dalla sessione SSH corrente e accedi come nuovo utente.

exit
ssh vapor@your_server_ip

Installare Swift

Ora che hai creato un nuovo server Ubuntu e hai effettuato l'accesso come utente non-root, puoi installare Swift.

Installazione automatica tramite lo strumento CLI Swiftly (consigliata)

Visita il sito di Swiftly per le istruzioni su come installare Swiftly e Swift su Linux. Successivamente, installa Swift con il seguente comando:

Utilizzo di base

$ swiftly install latest

Fetching the latest stable Swift release...
Installing Swift 5.9.1
Downloaded 488.5 MiB of 488.5 MiB
Extracting toolchain...
Swift 5.9.1 installed successfully!

$ swift --version

Swift version 5.9.1 (swift-5.9.1-RELEASE)
Target: x86_64-unknown-linux-gnu

Installazione di Vapor tramite la Vapor Toolbox

Ora che Swift è installato, installiamo Vapor usando il Vapor Toolbox. Dovrai compilare il toolbox dal sorgente. Consulta le release del toolbox su GitHub per trovare la versione più recente. In questo esempio usiamo la 18.6.0.

Clonare e compilare Vapor

Clona il repository del Vapor Toolbox.

git clone https://github.com/vapor/toolbox.git

Passa all'ultima release.

cd toolbox
git checkout 18.6.0

Compila Vapor e sposta il binario nel tuo path.

swift build -c release --disable-sandbox --enable-test-discovery
sudo mv .build/release/vapor /usr/local/bin

Creare un Progetto Vapor

Usa il comando new del Toolbox per inizializzare un progetto.

vapor new HelloWorld -n

Suggerimento

Il flag -n ti fornisce un template minimale rispondendo automaticamente no a tutte le domande.

Vapor Splash

Una volta completato il comando, entra nella cartella appena creata:

cd HelloWorld

Aprire la Porta HTTP

Per poter accedere a Vapor sul tuo server, apri una porta HTTP.

sudo ufw allow 8080

Avviare

Ora che Vapor è configurato e abbiamo una porta aperta, avviamolo.

swift run App serve --hostname 0.0.0.0 --port 8080

Visita l'IP del tuo server tramite browser o terminale locale e dovresti vedere "It works!". In questo esempio l'indirizzo IP è 134.122.126.139.

$ curl http://134.122.126.139:8080
It works!

Sul tuo server dovresti vedere i log per la richiesta di test.

[ NOTICE ] Server starting on http://0.0.0.0:8080
[ INFO ] GET /

Usa CTRL+C per fermare il server. Potrebbe richiedere un momento per lo spegnimento.

Congratulazioni per aver avviato la tua app Vapor su un Droplet di DigitalOcean!

Prossimi Passi

Il resto di questa guida rimanda a risorse aggiuntive per migliorare il tuo deploy.

Supervisor

Supervisor è un sistema di controllo dei processi che può avviare e monitorare il tuo eseguibile Vapor. Con Supervisor configurato, la tua app può avviarsi automaticamente all'avvio del server e riavviarsi in caso di crash. Scopri di più su Supervisor.

Nginx

Nginx è un server HTTP e proxy estremamente veloce, collaudato e facile da configurare. Mentre Vapor supporta la gestione diretta delle richieste HTTP, fare il proxy dietro Nginx può fornire migliori prestazioni, sicurezza e facilità d'uso. Scopri di più su Nginx.