GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come installare Django 3.2 su Ubuntu 20.04 con Apache e WSGI

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.


Ubuntu
  1. Come installare e configurare Nextcloud con Apache su Ubuntu 18.04

  2. Come installare e proteggere phpMyAdmin con Apache su Ubuntu 18.04

  3. Come installare il software Ghost Blog con Apache e SSL su Ubuntu 16.04

  4. Come installare Apache Hive con Hadoop su CentOS, Ubuntu e LinuxMint

  5. Come installare Apache Maven su Ubuntu 18.04 e 16.04

Come installare e configurare il modulo mod_pagespeed con Apache su Ubuntu 20.04 LTS

Come installare il software Ghost Blog con Apache e SSL su Ubuntu 15.10

Come installare Drupal 7 con Apache su Ubuntu 14.04

Come installare PrestaShop su Ubuntu 20.04 con Apache

Come installare phpBB con Apache su Ubuntu 20.04

Come installare Drupal con Apache su Debian e Ubuntu