1. Connettiti al tuo server con SSH
ssh root@<server-ip>
2. Trova le credenziali di accesso
- Default user:
django - Password stored in:
/root/.cloudzy-creds
(Facoltativo) Cambia la password predefinita: passwd django
3. Passa all'utente dell'app
su - django
4. PostgreSQL (Optional)
Se PostgreSQL è stato installato, configura il DB e l'utente (esempio):
sudo -u postgres psql
CREATE DATABASE <db>;
CREATE USER <user> WITH PASSWORD <password>;
GRANT ALL PRIVILEGES ON DATABASE <db> TO <user>;
q
Then update settings.py DATABASES with host localhost, nome del database, utente e password. Esegui python manage.py migrate.
5. Distribuisci la tua app
Un'app Flask di esempio è già in esecuzione e accessibile all'indirizzo: http://<server-ip
Per distribuire la tua app:
- Vai alla directory della tua applicazione (o clona un nuovo progetto):
cd~/django_app - (Facoltativo) Sostituisci l'app predefinita:
gitclone<your_repo_url> . - Attiva l'ambiente virtuale:
sourcevenv/bin/activate - Installa i pacchetti necessari:
pip install -r requirements.txt - Adjust
settings.py: setALLOWED_HOSTSal tuo dominio/IP e assicurati cheSTATIC_ROOTexists. - Migrate database:
python manage.py migrate - Raccogli i file statici in
STATIC_ROOT:python manage.py collectstatic --noinput - Riavvia Gunicorn per applicare le modifiche:
sudo systemctl restart gunicorn - Restart Nginx:
sudo systemctl restart nginx
6. Accedi alla tua app
La tua app Django è disponibile all'indirizzo: http://<server-ip
Nginx reindirizza le richieste a Gunicorn tramite socket Unix.
7. Cambiare porta o dominio?
Per modificare il dominio, la porta o aggiungere SSL:
- Modifica la configurazione del sito Nginx:
sudo nano /etc/nginx/sites-available/gunicorn_django - Test configuration:
sudo nginx -t - Reload Nginx:
sudo systemctl restart nginx
8. Abilita HTTPS (Facoltativo)
Usa Certbot per abilitare HTTPS.
Install certbot:
sudo apt install certbot python3-certbot-nginx -y
Ottieni i certificati e aggiorna Nginx automaticamente:
sudo certbot --nginx -d example.com
Test:
nginx -t && sudo systemctl reload nginx