Django è un framework che consente di sviluppare applicazioni web in Python.
Sul vostro Managed Flex Server vi offriamo le versioni più recenti di Python. Queste versioni vengono regolarmente aggiornate da noi.
La presente guida descrive in che modo potete attivare un’applicazione Django sul vostro Managed Flex Server.
Requisiti
Per poter attivare un’applicazione Django avete bisogno almeno di un Managed Flex Server M.
Creazione di un’applicazione Django
In questa guida viene creata una semplice applicazione "Hello World" che fornisce un testo semplice su richieste HTTP.
Per ordinare le vostre applicazioni vi consigliamo di creare una cartella ~/app/ e, al suo interno, una sottocartella per ciascuna applicazione. In questo modo avrete sempre un perfetto ordine e una panoramica chiara. Per l’applicazione Django creiamo quindi la cartella ~/app/helloworld e passiamo in questa cartella:
mkdir -p ~/app/helloworld
cd ~/app/helloworld
Nella cartella dell’applicazione appena creata ~/app/helloworld create la struttura necessaria per la vostra applicazione. In questo esempio viene creato un semplice progetto Django:
python3 -m venv venv
source venv/bin/activate
pip install django gunicorn
django-admin startproject helloworld .
Si consiglia di installare i progetti Python in "ambienti virtuali" rispettivamente separati. In questo esempio l’installazione viene realizzata mediante “python3 -m venv venv && source venv/bin/activate”.
In questo esempio viene emesso un semplice testo su richieste HTTP. Per eseguire questa operazione modificate il file ~/app/django/helloworld/urls.py come di seguito:
from django.contrib import admin
from django.urls import path
from django.http import HttpResponse
urlpatterns = [
path('', lambda r: HttpResponse('Hello World')),
path('admin/', admin.site.urls),
]
È necessario, inoltre, adeguare la variabile ALLOWED_HOSTS nelle impostazioni Django. Per ragioni di semplicità, in questo esempio viene consentito l’accesso da tutti i domini:
sed -i "" "s/ALLOWED_HOSTS =.*/ALLOWED_HOSTS = ['*']/" ~/app/helloworld/helloworld/settings.py
Integrazione
Funzionamento con il Custom Service Control
Il Custom Service Control (CSC) si può occupare del funzionamento e della gestione automatica delle vostre applicazioni, ad esempio dell’avvio e dell’arresto in caso di interventi di manutenzione sul server.
La configurazione dell’app helloworld Django nel CSC è molto semplice. Create dunque un nuovo custom service per l’applicazione Django:
hpservices supervisord add helloworld
Nel file ~/.services/supervisord/django/service.conf viene creato uno schema di configurazione per il nuovo servizio. Per l’applicazione Django è necessario adeguare solo il comando, mentre tutti gli altri valori proposti possono essere adottati (rimuovere il punto e virgola all’inizio della riga).
[program:helloworld]
command=%(ENV_HOME)s/app/helloworld/venv/bin/gunicorn helloworld.wsgi -b 127.0.0.1:8080 ; the program (can take args)
directory=%(ENV_HOME)s/app/helloworld/ ; directory to cwd to before exec (default no cwd)
autostart=true ; start application at supervisord start (default: true)
stopwaitsecs=10 ; max num secs to wait before SIGKILL (default 10)
stdout_logfile=%(ENV_HOME)s/.services/supervisord/helloworld/log/default.log
stdout_logfile_maxbytes=1MB ; filesize at which to rotate logfiles (default ist 50MB)
stdout_logfile_backups=10 ; number of stdout logfile backups (0 means none, default 10)
stderr_logfile=%(ENV_HOME)s/.services/supervisord/helloworld/log/default.err
stderr_logfile_maxbytes=1MB ; filesize at which to rotate logfiles (default is 50MB)
stderr_logfile_backups=10 ; number of stderr logfile backups (0 means none, default 10)
Con supervisorctl update potete attivare la nuova configurazione per la vostra applicazione Django:
supervisorctl update
helloworld: added process group
Attenzione: Se si verifica un errore, è necessario eseguire prima di tutto "hpservices supervisord start" una volta.
Per informazioni più dettagliate sull’uso e sulle possibilità disponibili con il CSC fate riferimento alla guida al Custom Service Control.
Configurazione del server web
Per rendere la vostra applicazione accessibile tramite HTTP(s), è necessario configurare il sito web nel pannello di controllo Hostpoint in modo che il server web inoltri tutte le richieste come proxy alla vostra applicazione.
Nel vostro pannello di controllo Hostpoint create un sito web del tipo "Proxy Nginx su applicazione propria":
- Indirizzo del server e porta
- La funzione proxy si aspetta che la vostra applicazione sia in ascolto all’indirizzo IPv4 di loopback 127.0.0.1 ed è quindi necessario indicare solo la porta: 8080.
Per richieste di supporto la preghiamo di usare invece questo modulo.