Ricerca nel sito web

Installazione e configurazione del framework Web Django con ambienti virtuali in CentOS/Debian - Parte 1


"Questo articolo è stato rivisto e aggiornato con l'ultima versione di Django – maggio 2016"

Circa 20 anni fa, quando il World Wide Web era ancora agli inizi, avere un sito web personale o aziendale era quasi un lusso raro. Con il successivo sviluppo di diverse tecnologie web e l'introduzione di contenuti dinamici forniti dalla combinazione di programmi lato server e database, le aziende non potevano più accontentarsi di avere un sito web statico.

Così le applicazioni web sono diventate una realtà: programmi nel vero senso della parola eseguiti su un server web e accessibili tramite un browser web.

Per rendere lo sviluppo più semplice ed efficace, sono stati progettati framework web per aiutare i programmatori nei loro sforzi per creare applicazioni. In breve, un framework web si occupa delle funzionalità fondamentali comuni nel processo di sviluppo, come la gestione delle sessioni utente, l'interazione con i database e la buona pratica di mantenere la logica aziendale separata dalla logica di visualizzazione, per citare alcuni esempi.

In questa serie Django in 3 articoli, ti presenteremo Django, un popolare framework web basato su Python. Per questo motivo, si suggerisce almeno un po’ di familiarità con questo linguaggio di programmazione, ma se ne hai poca o nessuna esperienza, ti guideremo anche attraverso le nozioni di base.

Installazione di Django nei server CentOS e Debian

Sebbene sia possibile installare Django sia da Debian (v1.7.7: il supporto esteso verrà interrotto a dicembre 2015) che da Fedora EPEL (v1.6.11: il supporto esteso è stato interrotto sui repository di aprile 2015), la versione disponibile non è l'ultima versione stabile LTS (Long Term Support) (v1.8.13, a partire da maggio 2016).

In questo tutorial ti mostreremo come installare Django v1.8.13 poiché il suo supporto esteso è garantito almeno fino ad aprile 2018.

Il metodo consigliato per installare Django è tramite pip, uno strumento popolare per la gestione dei pacchetti Python. Inoltre, al fine di creare ambienti Python isolati ed evitare conflitti tra progetti che potrebbero richiedere versioni diverse delle dipendenze software, l'uso di ambienti virtuali è fortemente incoraggiato.

Lo strumento utilizzato per creare e gestire ambienti virtuali Python si chiama virtualenv.

Seguire questi passaggi per eseguire l'installazione:

1. Per le distribuzioni basate su Fedora (eccetto Fedora stessa), abilitare prima il repository EPEL:

yum update && yum install epel-release

2. Installa pip e virtualenv:

Distribuzioni basate su Fedora:

yum install python-pip python-virtualenv
OR 
dnf install python-pip python-virtualenv
Debian e derivati:
aptitude update && aptitude install python-pip virtualenv

3. Crea una directory in cui archiviare il tuo progetto iniziale.

mkdir ~/myfirstdjangoenv
cd ~/myfirstdjangoenv

4. Crea e attiva un ambiente virtuale:

virtualenv myfirstdjangoenv

Il comando precedente crea una serie di file e sottodirectory in ~/myfirstdjangoenv e sostanzialmente installa una copia locale di Python e pip all'interno della directory di lavoro corrente . Successivamente, dobbiamo attivare l'ambiente virtuale che abbiamo appena creato:

source myfirstdjangoenv/bin/activate

5. Nota come cambia il prompt dei comandi dopo l'ultimo comando. È ora di installare Django:

Nota che lo screenshot seguente è stato acquisito durante una versione precedente di questo tutorial, ma l'output previsto è lo stesso durante l'installazione di Django 1.8.13 ):


pip install Django==1.8.13

Puoi controllare la versione di Django avviando una shell Python dalla tua directory di lavoro corrente:

python
>>> import django
>>> print(django.get_version())

(Anche in questo caso, il comando precedente dovrebbe restituire 1.8.13 quando si controlla la versione corrente di Django).

Per uscire dal prompt di Python, digitare:

>>> exit() 

e premi Invio. Successivamente, disattiva l'ambiente virtuale:

deactivate

Tieni presente che mentre l'ambiente virtuale rimane disattivato, Django non è disponibile:

Come creare un primo progetto in Django

Per creare un progetto all'interno dell'ambiente virtuale che abbiamo creato in precedenza, è necessario attivarlo:

source myfirstdjangoenv/bin/activate

Successivamente, il framework creerà l'intera struttura di directory per archiviare il tuo progetto. Per fare questo, dovrai correre.

django-admin startproject myfirstdjangoproject

Il comando precedente creerà una directory denominata myfirstdjangoproject all'interno della directory di lavoro corrente.

dove troverai un file chiamato manage.py (un'utilità che ti aiuterà a gestire il tuo progetto in seguito) e un'altra sottodirectory (~/myfirstdjangoenv/myfirstdjangoproject/myfirstdjangoproject). Quest'ultima sottodirectory fungerà da contenitore per i file di progetto.

Mentre il resto dei file avrà davvero senso dopo aver ripassato un po' di Python per iniziare a scrivere una vera applicazione web, vale la pena prendere nota dei file chiave che si troveranno all'interno di una directory contenitore del progetto:

  1. myfirstdjangoproject/__init__.py: questo file vuoto dice a Python che questa directory dovrebbe essere considerata un pacchetto Python.
  2. myfirstdjangoproject/settings.py: impostazioni specifiche per questo progetto Django.
  3. myfirstdjangoproject/urls.py: un TOC (tabella dei contenuti) del tuo sito basato su Django.
  4. myfirstdjangoproject/wsgi.py: un punto di ingresso per server Web compatibili con WSGI per servire il tuo progetto.
ls 
ls -l myfirstdjangoproject
ls -l myfirstdjangoproject/myfirstdjangoproject

Inoltre, Django ha un leggero server web integrato (scritto in Python simile a Python SimpleHTTP, cos'altro?) che può essere utilizzato per testare le tue applicazioni durante lo sviluppo processo senza dover affrontare il compito di impostare un server web in questa fase particolare.

Tuttavia, devi sapere che questo non è adatto per un ambiente di produzione, ma solo per lo sviluppo. Per avviare il progetto appena creato, modifica la directory di lavoro corrente nella directory del contenitore per il tuo progetto (~/myfirstdjangoenv/myfirstdjangoproject) ed esegui:

python manage.py runserver 0.0.0.0:8000

Se riscontri il seguente errore:

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

Fai quello che dice:

python manage.py migrate

e quindi riavviare il server:

python manage.py runserver 0.0.0.0:8000

Tratteremo il concetto di migrazione nei prossimi articoli di questa serie, quindi per il momento puoi ignorare il messaggio di errore.

In ogni caso, è possibile modificare la porta predefinita su cui sarà in ascolto il server Web integrato. Utilizzando 0.0.0.0 come interfaccia di rete su cui ascoltare, consentiamo ad altri computer nella stessa rete di accedere all'interfaccia utente del progetto (se utilizzi invece 127.0.0.1, potrai accedere all'interfaccia utente solo da localhost).

Puoi anche cambiare la porta con un'altra di tua scelta, ma dovrai anche assicurarti che il traffico attraverso tale porta sia consentito attraverso il tuo firewall:

firewall-cmd --add-port=8000/tcp
firewall-cmd --permanent --add-port=8000/tcp

Naturalmente, è ovvio che dovrai aggiornare la porta consentita se scegli di utilizzarne una diversa durante l'avvio del server web leggero.

Dovresti vedere il seguente output nel tuo terminale:

python manage.py runserver 0.0.0.0:8000

A questo punto, puoi aprire il tuo browser web preferito e navigare fino all'indirizzo IP della macchina su cui hai installato Django seguito dal numero di porta. Nel mio caso, si tratta di una macchina Debian Jessie con IP 192.168.0.25 e in ascolto sulla porta 8000:

http://192.168.0.25:8000

Sebbene sia positivo essere riusciti a completare la configurazione iniziale di un progetto, c'è ancora molto lavoro da fare, come indicato nel messaggio sopra.

Riepilogo

In questa guida abbiamo spiegato come installare e configurare un ambiente virtuale per Django, un versatile framework web open source basato su Python.

Indipendentemente dal fatto che tu sia uno sviluppatore di applicazioni o un amministratore di sistema, ti consigliamo di aggiungere questo articolo ai segnalibri e il resto di questa serie perché è probabile che prima o poi dovrai considerare la necessità di tale strumento per le tue attività quotidiane.

Nei seguenti articoli di questa serie discuteremo come basarci su ciò che abbiamo già realizzato per creare un'applicazione web semplice ma funzionale utilizzando Django e Python.

Come sempre, non esitare a inviarci un messaggio se hai domande su questo articolo o suggerimenti per migliorarlo. Restiamo in attesa della vostra risposta!