Distribuisci un'applicazione basata su Django

su Amazon Lightsail

Amazon Lightsail è il modo più facile per iniziare a usare AWS. Offre server virtuali, storage, database e reti, oltre a un conveniente piano mensile.

In questo tutorial imparerai a distribuire su Lightsail un'applicazione di esempio basata su Django. Inizia creando l'istanza e distribuendo l'applicazione. Successivamente, assicurati che l'applicazione funzioni correttamente utilizzando il server Web incorporato di Django. Infine, configura Apache per ospitare l'applicazione.

Inizia a utilizzare Lightsail gratuitamente. 

Prerequisiti

Questo è un tutorial di livello intermedio che presuppone che tu abbia:

  • Una conoscenza di base della riga di comando di Linux (cp, cat, ecc.)
  • La capacità di utilizzare un editor di testo Linux (vi, nano, ecc.)
  • Almeno una conoscenza di base di Django e Python
  • Un account Amazon Web Services gratuito
Informazioni sul tutorial
Durata 30 minuti                                     
Costo Potrebbero essere applicati dei costi
Caso d'uso Calcolo
Prodotti Amazon Lightsail
Destinatario Sviluppatore
Livello Intermedio 
Ultimo aggiornamento 23 marzo 2020

Hai già un account? Accedi

1. Crea un'istanza Lightsail

a. Accedi al tuo account AWS e vai alla home page di Lightsail.


b. Fai clic su Crea istanza.

django1

c. Scegli la regione AWS appropriata.

add django
django2

d. Scegli una zona di disponibilità.

django3
django4

e. Nella sezione Seleziona un progetto scegli Django.

 

django5

f. Puoi lasciare le altre impostazioni sui valori predefiniti. Scorri fino alla parte inferiore dello schermo e fai clic su Crea istanza.

 

2. Distribuisci un progetto Django

In questa sezione distribuirai una semplice applicazione "Hello, World". Utilizzerai la riga di comando di Django per creare un nuovo progetto e una nuova applicazione prima di aggiungere il codice effettivo dell'applicazione nella sezione successiva.

Se disponi già un'applicazione Django, puoi usarla per questo tutorial. Tuttavia, prendi nota della struttura di directory utilizzata nell'applicazione "Hello, World", poiché sarà importante quando configurerai la tua applicazione.

Il progetto Django sarà nella seguente directory

/opt/bitnami/apps/django/django_projects/tutorial

Il progetto stesso verrà archiviato nella seguente directory

/opt/bitnami/apps/django/django_projects/tutorial/tutorial

L'app verrà creata nella seguente directory

/opt/bitnami/apps/django/django_projects/tutorial/tutorial/hello_world


a. Dalla home page di Lightsail fai clic sull'icona del client SSH basato su browser per la tua istanza Django. Tale operazione avvierà una sessione SSH nella tua istanza. Tutti i seguenti comandi dovrebbero essere eseguiti in quella sessione.

django6

b. Immetti i seguenti comandi per passare alla directory django_projects e crea un nuovo progetto tutorial.
cd /opt/bitnami/apps/django/django_projects && \
django-admin.py startproject tutorial

c. Immetti il comando seguente per passare alla directory del progetto tutorial e crea una nuova app hello_world.

cd tutorial && python3 manage.py startapp hello_world

3. Aggiungi il codice dell'applicazione

Ora che hai installato l'impalcatura per la tua applicazione, è il momento di aggiungere del codice. L'applicazione visualizzerà semplicemente "Hello, World" ogni volta che viene caricata la pagina Web.

Dovresti comunque eseguire questi comandi nella finestra del client SSH basato su browser Lightsail.


a. Immetti il comando seguente per aprire il file views.py utilizzando l'editor di testo Vim:

sudo vim /opt/bitnami/apps/django/django_projects/tutorial/hello_world/views.py

b. Premi I per modificare il file e sostituisci il codice esistente con il seguente:

from django.http import HttpResponse

def index(request):
     return HttpResponse("Hello, world")

c. Premi Esc, digita :wq! e premi Invia per salvare e uscire da Vim.


d. Immetti il comando seguente per creare un file urls.py per l'applicazione nella stessa directory del file views.py:

sudo vim /opt/bitnami/apps/django/django_projects/tutorial/hello_world/urls.py

e. Premi I per modificare il file e aggiungi il seguente codice:

from django.urls import path
from . import views

urlpatterns = [
     path('', views.index, name='index'),
]

f. Premi Esc, digita :wq! e premi Invia per salvare e uscire da Vim.


g. Immetti il comando seguente per aprire il file urls.py:

sudo vim /opt/bitnami/apps/django/django_projects/tutorial/tutorial/urls.py

h. Premi I per modificare il file e sostituisci il codice esistente con il seguente:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('', include('hello_world.urls')),
    path('admin/', admin.site.urls),
]

i. Premi Esc, digita :wq! e premi Invia per salvare e uscire da Vim.


4. Testa l'applicazione

Successivamente, utilizzerai il server Web integrato di Django per verificare che tutto funzioni come previsto. Per impostazione predefinita, Apache utilizza la porta 80 sull'istanza Lightsail, quindi eseguirai il server Web di Django sulla porta 8000. Per poter accedere al sito Web, devi aprire la porta 8000 sul firewall Lightsail.


a. Ritorna alla home page di Lightsail e fai clic sul nome della tua istanza Django.


b. Dal menu orizzontale, fai clic su Reti.

django7

c. Nella sezione Firewall fai clic su Aggiungi un altro.

django8

d. Nella sezione Intervallo porta inserisci 8000 e fai clic su Salva.

django9

e. Torna alla home page di Lightsail e prendi nota dell'indirizzo IP dell'istanza.

django10

f. Torna alla sessione del terminale e immetti il comando seguente per aprire il file settings.py:

sudo vim /opt/bitnami/apps/django/django_projects/tutorial/tutorial/settings.py

g. Premi I e modifica la riga ALLOWED_HOSTS per includere l'indirizzo IP della tua istanza Lightsail come mostrato nell'esempio seguente.

Nota: quando modifichi il file settings.py, assicurati di sostituire 192.0.2.143 con l'indirizzo IP pubblico dell'istanza.

ALLOWED_HOSTS = ['192.0.2.143']

h. Premi Esc, digita :wq! e premi Invia per salvare e uscire da Vim.


i. Immetti il comando seguente per avviare il server Web di Django sulla porta 8000:

cd /opt/bitnami/apps/django/django_projects/tutorial/ && python3 manage.py runserver 0.0.0.0:8000

j. Punta il browser Web sulla porta 8000 dell'indirizzo IP dell'istanza (ad es. http:// 192.0.2.143:8000).

Dovresti vedere "Hello, World" che conferma che l'applicazione è in esecuzione.

5. Ospita l'applicazione usando Apache

Non è consigliabile eseguire applicazioni di produzione utilizzando il server integrato di Django. Quindi, in questa sezione finale configurerai Apache per gestire la tua applicazione.

Lo farai configurando l'applicazione per utilizzare Web Services Gateway Interface (WSGI) e quindi creerai un host virtuale Apache (vHost).

Dovresti comunque eseguire questi comandi nella finestra del client SSH basato su browser Lightsail.


a. Digita il seguente comando per modificare il file wsgi.py:

sudo vim /opt/bitnami/apps/django/django_projects/tutorial/tutorial/wsgi.py

b. Digita :1$d e premi Invia per selezionare tutto ed eliminare il contenuto esistente del file wsgi.py.


c. Premi I per modificare e aggiungi il seguente codice al file wsgi.py:

import os
import sys
sys.path.append('/opt/bitnami/apps/django/django_projects/tutorial')
os.environ.setdefault("PYTHON_EGG_CACHE", "/opt/bitnami/apps/django/django_projects/tutorial/egg_cache")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "tutorial.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

d. Premi Esc, digita :wq! e premi Invia per salvare e uscire da Vim.


e. Immetti il comando seguente per creare una directory conf per l'applicazione

mkdir /opt/bitnami/apps/django/django_projects/tutorial/conf

f. Immetti il comando seguente per creare un file httpd-app.conf nella directory conf appena creata:

sudo vim /opt/bitnami/apps/django/django_projects/tutorial/conf/httpd-app.conf

g. Premi I per modificare e aggiungi il seguente codice:

<IfDefine !IS_DJANGOSTACK_LOADED>
      Define IS_DJANGOSTACK_LOADED
      WSGIDaemonProcess wsgi-djangostack   processes=2 threads=15    display-name=%{GROUP}
</IfDefine>

<Directory "/opt/bitnami/apps/django/django_projects/tutorial/tutorial">
    Options +MultiViews
    AllowOverride All
    <IfVersion >= 2.3>
        Require all granted
    </IfVersion>

    WSGIProcessGroup wsgi-djangostack

    WSGIApplicationGroup %{GLOBAL}
</Directory>

Alias /tutorial/static "/opt/bitnami/apps/django/lib/python3.7/site-packages/Django-2.2.9-py3.7.egg/django/contrib/admin/static"
WSGIScriptAlias /tutorial '/opt/bitnami/apps/django/django_projects/tutorial/tutorial/wsgi.py'

h. Premi Esc, digita :wq! e premi Invia per salvare e uscire da Vim.


i. Immetti il comando seguente per creare un file httpd-prefix.conf nella directory conf per l'applicazione:

sudo vim /opt/bitnami/apps/django/django_projects/tutorial/conf/httpd-prefix.conf

j. Premi I per modificare e aggiungi il seguente codice:

Include "/opt/bitnami/apps/django/django_projects/tutorial/conf/httpd-app.conf"

k. Premi Esc, digita :wq! e premi Invia per salvare e uscire da Vim.


l. Immetti il comando seguente per aprire il file bitnami-apps-prefix.conf:

sudo vim /opt/bitnami/apache2/conf/bitnami/bitnami-apps-prefix.conf

m. Premi I per modificare e aggiungi la seguente riga alla fine del file:

Include "/opt/bitnami/apps/django/django_projects/tutorial/conf/httpd-prefix.conf"

n. Premi Esc, digita :wq! e premi Invia per salvare e uscire da Vim.


o. Immetti il comando seguente per aprire il file bitnami.conf :

sudo vim /opt/bitnami/apache2/conf/bitnami/bitnami.conf

p. Digita :1$d e premi Invia in Vim per selezionare tutto ed eliminare il contenuto esistente del file wsgi.py.


q. Premi I per modificare e aggiungi il seguente codice al file:

<VirtualHost _default_:80>
    WSGIScriptAlias / /opt/bitnami/apps/django/django_projects/tutorial/tutorial/wsgi.py

    <Directory /opt/bitnami/apps/django/django_projects/tutorial>
    AllowOverride all
        Require all granted
        Options FollowSymlinks
    </Directory>

    DocumentRoot /opt/bitnami/apps/django/django_projects/tutorial
</VirtualHost>

r. Premi Esc, digita :wq! e premi Invia per salvare e uscire da Vim.


s. Immetti il comando seguente per riavviare Apache:

sudo /opt/bitnami/ctlscript.sh restart apache

t. Punta il browser Web all'indirizzo IP dell'istanza (ad es. http:// 192.0.2.143).

Dovresti vedere "Hello, World" che conferma che l'applicazione è in esecuzione.

Congratulazioni

Congratulazioni, hai completato il tutorial. Hai distribuito correttamente su Lightsail un'applicazione basata su Django.

Amazon Lightsail è un'ottima scelta per sviluppare, costruire e distribuire una varietà di applicazioni come WordPress, siti Web e piattaforme di blog. 

Questo tutorial è stato utile?

Grazie
Facci sapere cosa ti è piaciuto.
Spiacenti di non esserti stati d'aiuto
C'è qualcosa di obsoleto, ambiguo o approssimativo? Aiutaci a migliorare questo tutorial con il tuo feedback.