Django è un framework Web basato su Python che segue Model-Template-Views (MTV). Django è uno strumento popolare per lo sviluppo web perché consente lo sviluppo rapido di siti web.
In questo tutorial ti guideremo su come configurare Django. Ti guideremo nella configurazione di produzione preferita con ambiente virtuale.
Se stai cercando un VPS provider per eseguire le tue applicazioni, puoi controllare le offerte di interserver.
Iniziamo con la configurazione.
1 1. Aggiornamento del sistema
sudo apt update -y && apt upgrade -y
2 2. Installazione di pip e dell'ambiente virtuale
Per prima cosa controlla la versione Python3 del tuo sistema.
# python3 -V
Python 3.8.10
Installiamo PIP e Venv.
sudo apt install python3-pip python3-venv
3 3. Crea una directory di progetto
Creiamo una directory di progetto.
sudo mkdir /var/www/django
Cambia directory nella directory del progetto.
cd /var/www/django
Creiamo un ambiente virtuale.
python3 -m venv django_venv
Attiva l'ambiente virtuale.
source django_venv/bin/activate
4 4. Installazione di Django 3.2
Installeremo Django con PIP.
(django_venv) pip install django==3.2
Verifica l'installazione.
(django_venv) django-admin --version
Output:
3.2
5 5. Creazione di un progetto
Creiamo un progetto Django.
NOTA: Non dimenticare di includere il punto(.) alla fine per evitare troppe directory nidificate.
(django_venv) django-admin startproject myproject .
Dopo aver creato il progetto è necessario migrare il database. Ma prima dobbiamo creare un database MySQL/MariaDB prima di eseguire la migrazione. Abbiamo presupposto che tu abbia già un servizio MySQL/MariaDb in esecuzione.
Creiamo il database.
MariaDB [(none)]> create database django;
MariaDB [(none)]> grant all privileges on django.* to 'django'@'localhost' identified by 'mypassword';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
Nota :Non dimenticare di cambiare la password con la password di tua scelta.
Aggiorniamo settings.py .
sudo nano myproject/settings.py
Il database predefinito impostato in Django è SQLite. Poiché stiamo impostando un sito di produzione, lo aggiorneremo per utilizzare MySQL/MariaDB.
Aggiorniamolo con di seguito:
DATABASES = {
'default': {
'ENGINE' : 'django.db.backends.mysql',
'NAME' : 'django', # database name
'USER' : 'django', # Mysql user
'PASSWORD': 'mypassword', # Mysql password
'HOST' : 'localhost',
'PORT' : '3306',
}
}
Prima di eseguire la migrazione, installiamo innanzitutto mysql-config .
Se stai usando MySQL, esegui questo comando.
sudo apt-get install libmysqlclient-dev
Se stai usando MariaDB, esegui questo.
sudo apt-get install libmariadbclient-dev
Quindi installiamo il driver Python MySQL.
(django_venv) pip install mysqlclient
Ora eseguiamo la migrazione.
(django_venv) python3 manage.py migrate
Output:
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying sessions.0001_initial... OK
6 6. Accesso all'app Django
Prima di poter accedere alla nostra app Django, dobbiamo aggiungere il nostro indirizzo IP o dominio a ALLOWED_HOSTS in settings.py . Aggiorniamo settings.py.
sudo nano myproject/settings.py
Vai a "ALLOWED_HOSTS sezione ".
ALLOWED_HOSTS = ['your_server_ip', 'domain.com']
Aggiorna “tuo_ip_server " e "dominio.com ” con il tuo indirizzo IP e dominio, quindi salva.
Prima di poter accedere alla nostra app Django, dobbiamo eseguire questo comando.
python3 manage.py runserver 0.0.0.0:8000
Ora puoi accedere alla tua app Django su http://IPaddress:8000
Creiamo un utente Admin per il nostro progetto
(django_venv) python3 manage.py createsuperuser
Dopo aver eseguito il comando, fornisci il nome utente, l'e-mail e la password dell'amministratore.
7 7. Impostare la produzione con Apache e WSGI
Per impostare la produzione installeremo Apache e il modulo Apache mod_wsgi.
sudo apt-get install apache2 libapache2-mod-wsgi-py3
Creiamo un host virtuale.
sudo nano /etc/apache2/sites-available/django.conf
Aggiungi quanto segue all'host virtuale.
Nota:non dimenticare di sostituire domain.com con il tuo dominio.
<VirtualHost *:80>
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /var/www/django
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /static/ /var/www/django/myproject/static/
<Directory /var/www/django/myproject/static>
Require all granted
</Directory>
Alias /media/ /var/www/django/myproject/media/
<Directory /var/www/django/myproject/media>
Require all granted
</Directory>
<Directory /var/www/django/myproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess mydjangoproject python-path=/var/www/django python-home=/var/www/django/django_venv
WSGIProcessGroup mydjangoproject
WSGIScriptAlias / /var/www/django/myproject/wsgi.py
</VirtualHost>
Attiviamo l'Host Virtuale:
sudo a2ensite django.conf
Riavvia il server web Apache.
sudo systemctl restart apache2
Ora modifichiamo di nuovo il settings.py affinché il nostro server web possa servire i file statici.
sudo nano myproject/settings.py
Nella parte superiore del file aggiungi:
import os
Allora vai al “ file statici " e assicurati di aggiungere questi valori:
ROOT_PROGETTO =os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT =os.path.join(PROJECT_ROOT, 'statico')
Dovrebbe apparire come sotto.
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.2/howto/static-files/
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
Ora raccogliamo tutti i contenuti statici.
(django_venv) python3 manage.py collectstatic
Output:
128 static files copied to '/var/www/django/myproject/static'.
Riavvia il servizio Apache:
sudo systemctl restart apache2
Ecco che il sito di produzione è stato allestito. Ora puoi accedere alla tua app Django con il tuo dominio su http://domain.com. Se vuoi proteggere il tuo sito e installare il certificato SSL puoi consultare questo articolo.
8 Conclusione
Hai imparato come installare Django 3.2 su Ubuntu 20.04 con Apache e WSGI. Se ti piace questo articolo, potrebbero piacerti anche gli altri nostri articoli su questo sito.