GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nainstalovat Django s PostgreSQL a Nginx na Ubuntu 16.04

Django je bezplatný open-source webový rámec založený na Pythonu. Je to webový rámec pythonu na vysoké úrovni se vzorem architektury MVT (Model-View-Template). Django spravuje Django Software Foundation (DSF). Webový rámec Django je rychlý, pomáhá vývojářům rychle vytvářet aplikace (RAD).

V tomto tutoriálu vám ukážu, jak nainstalovat webový rámec Django a nakonfigurovat jej tak, aby používal pro vývoj databázi PostgreSQL. Z důvodu rychlosti a bezpečnosti budeme provozovat Nginx jako reverzní proxy pro webový rámec Django. Django poběží pod pythonovým WSGI HTTP serverem 'Gunicorn', 'Gunicorn' budeme spravovat a ovládat pomocí 'Supervisor' jako systému řízení procesů.

Předpoklad

  • Ubuntu 16.04
  • Kořenová oprávnění

Krok 1 – Instalace Django, Virtualenv a Gunicorn

Použiji python3 jako výchozí verzi Pythonu pro systém. Nainstalujeme python3 a pip3 na Ubuntu 16.04. Pip3 je systém pro správu balíčků pro instalaci a správu softwarových balíčků napsaných v pythonu.

Připojte se ke svému serveru jako uživatel root na terminálu nebo pomocí SSH (jako to dělám zde) a aktualizujte úložiště Ubuntu:

ssh [email protected]
sudo apt-get update

Nainstalujte python3 a pip3 pomocí tohoto příkazu apt:

sudo apt-get install python3-pip python3-dev

Vytvořte nový symbolický odkaz pro příkaz pip3, abyste jej mohli používat jako „pip“ místo „pip3“ a upgradujte jej:

ln -s /usr/bin/pip3 /usr/bin/pip
pip install --upgrade pip

Dále nainstalujte požadované balíčky pythonu pomocí příkazu pip. Zde nainstaluji Django, Virtualenv a Gunicorn:

pip install django virtualenv gunicorn

Krok 2 – Instalace a konfigurace PostgreSQL

Jako databázi pro náš projekt Django použijeme PostgreSQL. Nainstalujte PostgreSQL pomocí tohoto příkazu apt.

sudo apt-get install postgresql postgresql-contrib libpq-dev

Po dokončení instalace nainstalujte nový balíček pythonu s názvem 'psychopg2' pomocí pip. Je to databázový adaptér python-postgreSQL.

pip install psycopg2

Nyní přejděte k uživateli postgres a otevřete prostředí PostgreSQL pomocí příkazu psql:

su - postgres
psql

Nastavte nové heslo pro uživatele postgres pomocí příkazu níže:

\password postgres
Enter new password:

Dále vytvořte novou databázi a nového uživatele/role pro projekt django v PostgreSQL. Vytvořím nové databáze s názvem 'django_db' s uživatelem/rolí 'python_dev'. Zadejte příkaz níže do prostředí PostgreSQL.

CREATE USER python_dev WITH PASSWORD 'aqwe123';
CREATE DATABASE django_db OWNER python_dev;

Viz seznam databáze a role:

\list

Krok 3 – Zahájení nového projektu Django

Spusťte první projekt Django s názvem 'hello_django'. Pro projekt nebudeme používat práva root, pro projekt použiji normálního uživatele Linuxu 'natsume'. Neváhejte použít jiné uživatelské jméno, které popisuje váš projekt.

Vytvořit nového uživatele

Vytvořte nového uživatele systému Linux pomocí příkazu níže:

useradd -m -s /bin/bash natsume
passwd natsume

-m =Automaticky vytvořit domovský adresář.
-s =Definovat výchozí shell pro uživatele.

Vytvořit nový Virtualenv a nainstalovat Django

Přihlaste se k uživateli natsume:

su - natsume

Vytvořte nové virtuální prostředí v adresáři 'myproject' pro náš projekt Django s python3 jako výchozí verzí pythonu.

mkdir myproject
virtualenv --python=python3 myproject/

Přejděte do adresáře 'myproject' a aktivujte virtualenv.

cd myproject/
source bin/activate

Dále v tomto prostředí nainstalujte Django, gunicorn a psycopg2 pomocí příkazu pip.

pip install django gunicorn psycopg2

Zahájit nový projekt s PostgreSQL

Spusťte projekt Django 'hello_django' pomocí příkazu django-admin níže:

django-admin startproject hello_django

Vytvoří nový adresář 'hello_django', přejděte do tohoto adresáře a upravte konfigurační soubor 'setting.py' pomocí vim.

cd hello_django/
vim hello_django/settings.py

Změňte nastavení databáze na řádku 76 s konfigurací níže:

        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'django_db',
        'USER': 'python_dev',
        'PASSWORD': 'aqwe123',
        'HOST': 'localhost',
        'PORT': '',

Na konci souboru nakonfigurujte statickou adresu URL přidáním konfiguračního řádku STATIC_ROOT níže:

STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

Uložte a ukončete.

Dále migrujte databázi do naší postgreSQL databáze a vytvořte nového administrátora. Poté shromážděte všechny statické soubory do statického adresáře, který se automaticky vytvoří, když spustíme příkaz.

python manage.py migrate
python manage.py createsuperuser
python manage.py collectstatic

Ujistěte se, že nedochází k žádné chybě, a proveďte zkušební provoz serveru projektu django pomocí příkazu runserver.

python manage.py runserver 0.0.0.0:8080

Otevřete webový prohlížeč a navštivte IP adresu serveru na portu 8080, v mém případě http://192.168.1.115:8080. Zobrazí se výchozí stránka Django.

Stiskněte Ctrl + c pro ukončení.

Krok 4 – Konfigurace projektu Django pomocí Gunicorn

Gunicorn nebo Green Unicorn je python WSGI HTTP server rozvětvený z projektu Ruby Unicorn. Podporuje různé webové rámce a snadno se konfiguruje.

Přejděte do adresáře 'myproject' a aktivujte virtuální prostředí pro domovský adresář uživatele natsume.

cd ~/myproject/
source bin/activate

Vytvořte nový soubor 'gunicorn_start' v adresáři bin pomocí vim:

vim bin/gunicorn_start

Vložte konfiguraci níže:

#!/bin/bash

# Project Name
NAME="hello_django"                       

# Django Project Directory
DJANGODIR=/home/natsume/myproject/hello_django          

# Run gunicorn on the socket file
SOCKFILE=/home/natsume/myproject/hello_django/run/gunicorn.sock

# Gunicorn running as user and group
USER=natsume
GROUP=natsume

# Workers
NUM_WORKERS=3

#Module Setting
#replace hello_django with your project name
DJANGO_SETTINGS_MODULE=hello_django.settings
DJANGO_WSGI_MODULE=hello_django.wsgi

echo "Starting $NAME as `whoami`"

# Activate the virtual environment
cd $DJANGODIR
source ../bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH

# Create the run directory if it doesn't exist
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR

# Start your Django Unicorn
# Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
exec ../bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--bind=unix:$SOCKFILE \
--log-level=debug \
--log-file=-

Uložte a ukončete.

Udělejte soubor spustitelným pomocí příkazu chmod.

chmod u+x bin/gunicorn_start

Krok 5 – Instalace a konfigurace správce

Supervisor je systém řízení procesů pro operační systémy Linux. Umožňuje vám konfigurovat, monitorovat a řídit řadu procesů na Linuxu. Supervisor je založen na pythonu, můžeme jej nainstalovat z úložiště python pypi příkazem pip nebo jej nainstalovat z úložiště ubuntu pomocí apt.

Nainstaluji správce pomocí tohoto příkazu apt:

sudo apt-get install supervisor

Správce má výchozí konfigurační soubor v adresáři '/ect/supervisor/'. Přejděte do tohoto adresáře a vytvořte novou konfiguraci pro náš projekt Django, abychom jej mohli ovládat pomocí supervizora.

cd /etc/supervisor/conf.d/
vim hello-django.conf

Níže vložte konfiguraci správce:

[program:hello_django]
command = sh /home/natsume/myproject/bin/gunicorn_start
user = natsume
stdout_logfile = /home/natsume/myproject/logs/gunicorn_supervisor.log
redirect_stderr = true
environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8

Uložte a ukončete.

Dále se přihlaste k uživateli natsume a vytvořte některé adresáře, které jsou potřeba pro soubor soketu gunicorn a soubor protokolu správce.

su - natsume

# Directory for gunicorn sock file
mkdir -p myproject/hello_django/run/

# Directory and file for supervisor log files
mkdir -p myproject/logs/
touch myproject/logs/gunicorn_supervisor.log

Zpět na uživatele root pomocí "exit" a spuštění Supervisor:

exit
systemctl start supervisor

Zkontrolujte stav a protokol procesu:

supervisorctl
tail -f hello_django

Krok 6 – Instalace a konfigurace Nginx pro projekt Django

V tomto kroku nainstalujeme Nginx a nakonfigurujeme jej jako reverzní proxy pro náš projekt Django.

Nainstalujte Nginx z úložiště Ubuntu:

sudo apt-get install nginx

Přejděte do konfiguračního adresáře virtuálního hostitele Nginx a vytvořte soubor virtuálního hostitele hello_django:

cd /etc/nginx/sites-available/
vim hello_django

Vložte konfiguraci níže:

# Django running with Gunicorn Sock file
upstream hello_django_project {
    server unix:/home/natsume/myproject/hello_django/run/gunicorn.sock fail_timeout=0;
}

server {

    listen   80;
    server_name www.django-nginx.com;

    client_max_body_size 4G;

    access_log /home/natsume/myproject/logs/nginx-access.log;
    error_log /home/natsume/myproject/logs/nginx-error.log;

    location /static/ {
        alias   /home/natsume/myproject/hello_django/static/;
    }

    location /media/ {
        alias   /home/natsume/myproject/hello_django/media/;
    }

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;

    # Try to serve static files from nginx, no point in making an
    # *application* server like Unicorn/Rainbows! serve static files.
    if (!-f $request_filename) {
        proxy_pass http://hello_django_project;
        break;
        }
   

# Error pages
    error_page 500 502 503 504 /500.html;
    location = /500.html {
        root /home/natsume/myproject/hello_django/static/;
        }
    }
}

Uložte a ukončete.

Aktivujte virtuálního hostitele a otestujte konfiguraci Nginx.

ln -s /etc/nginx/sites-available/hello_django /etc/nginx/sites-enabled/
nginx -t

Ujistěte se, že nedošlo k žádné chybě, a poté restartujte Nginx:

systemctl restart nginx

Krok 7 – Testování Djanga

V kroku 5 jsme vytvořili virtuálního hostitele pro náš projekt Django s názvem domény 'www.django-nginx.com'. Otevřete prohlížeč a navštivte název domény, který jste vybrali pro svůj projekt.

www.django-nginx.com/admin/

A budete přesměrováni na administrační panel Django.

Kontrola, zda všechny služby, které jsme nastavili, běží pomocí příkazu níže:

netstat -pl

Uvidíte soubor pid, port a sock používaný všemi službami.

Instalace a konfigurace Django s PostgreSQL a Nginx na Ubuntu 16.04 byla úspěšná.

  • https://www.djangoproject.com/
  • https://www.nginx.com/
  • http://gunicorn.org/
  • http://supervisord.org/

Ubuntu
  1. Jak nainstalovat Mattermost s PostgreSQL a Nginx na Ubuntu 16.04

  2. Jak nainstalovat Postgresql a phpPgAdmin na Ubuntu 15.04

  3. Jak nainstalovat Nginx s PHP5 a MySQL na Ubuntu 11.10

  1. Jak nainstalovat MediaWiki s Nginx na Ubuntu 16.04

  2. Jak nainstalovat Magento 2 s Nginx a Letsencrypt na Ubuntu 18.04

  3. Jak nainstalovat Gitlab s PostgreSQL a Nginx na Ubuntu 15.04

  1. Jak nainstalovat Magento s Nginx na Ubuntu 15.10

  2. Jak nainstalovat Drupal 8 s Nginx, PHP-FPM a SSL na Ubuntu 15.10

  3. Jak nainstalovat Mailpile s Nginx na Ubuntu 15.10