Поиск по сайту:

Как установить Django с PostgreSQL и Nginx на Ubuntu 16.04


На этой странице

  1. Шаг 1. Установите Django, Virtualenv и Gunicorn
  2. Шаг 2. Установка и настройка PostgreSQL
  3. Шаг 3. Запуск нового проекта Django
    1. Создать нового пользователя
    2. Создайте новый Virtualenv и установите Django
    3. Начать новый проект с PostgreSQL

    Django — это бесплатный веб-фреймворк с открытым исходным кодом, основанный на Python. Это высокоуровневая веб-инфраструктура Python с архитектурным шаблоном MVT (Model-View-Template). Django поддерживается Django Software Foundation (DSF). Веб-фреймворк Django работает быстро, он помогает разработчикам быстро создавать приложения (RAD). var slotId=div-gpt-ad-howtoforge_com-box-3-0;var ffid=1;var alS=1002%1000;var container=document.getElementById(slotId);container.style.width=100%;var ins =document.createElement(ins);ins.id=slotId+-asloaded;ins.className=adsbygoogle ezasloaded;ins.dataset.adClient=pid;ins.dataset.adChannel=cid;if(ffid==2){ins.dataset .fullWidthResponsive=true;}

    В этом руководстве я покажу вам, как установить веб-фреймворк Django и настроить его для использования базы данных PostgreSQL для разработки. Мы будем использовать Nginx в качестве обратного прокси-сервера для веб-фреймворка Django из соображений скорости и безопасности. Django будет работать под HTTP-сервером Python WSGI Gunicorn, мы будем управлять и контролировать Gunicorn с помощью Supervisor в качестве системы управления процессами.

    Предпосылка

    • Убунту 16.04
    • Привилегии root

    Шаг 1 — Установите Django, Virtualenv и Gunicorn

    Я буду использовать python3 в качестве версии Python по умолчанию для системы. Мы установим python3 и pip3 на Ubuntu 16.04. Pip3 — это система управления пакетами для установки и управления программными пакетами, написанными на python.

    Подключитесь к вашему серверу как пользователь root на терминале или по SSH (как я делаю это здесь) и обновите репозиторий Ubuntu:

    ssh 
    sudo apt-get update

    Установите python3 и pip3 с помощью этой команды:

    sudo apt-get install python3-pip python3-dev

    Создайте новую символическую ссылку для команды pip3, чтобы иметь возможность использовать ее как \pip\ вместо \pip3\, и обновите ее:

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

    Затем установите необходимые пакеты Python с помощью команды pip. Я установлю Django, Virtualenv и Gunicorn здесь:

    pip install django virtualenv gunicorn

    Шаг 2. Установите и настройте PostgreSQL.

    Мы будем использовать PostgreSQL в качестве базы данных для нашего проекта Django. Установите PostgreSQL с помощью этой команды apt.

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

    Когда установка будет завершена, установите новый пакет Python с именем psycopg2 с помощью pip. Это адаптер базы данных python-postgreSQL.

    pip install psycopg2

    Теперь войдите в систему пользователя postgres и откройте оболочку PostgreSQL с помощью команды psql:

    su - postgres
    psql

    Установите новый пароль для пользователя postgres с помощью следующей команды:

    \password postgres
    Enter new password:

    Затем создайте новую базу данных и нового пользователя/роль для проекта django в PostgreSQL. Я создам новые базы данных с именем django_db с пользователем/ролью python_dev. Введите команду ниже в оболочке PostgreSQL.

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

    См. список и роль базы данных:

    \list

    Шаг 3 — Запустите новый проект Django

    Запустите первый проект Django с именем hello_django. Мы не собираемся использовать привилегии root для проекта, я буду использовать для проекта обычного пользователя Linux natsume. Не стесняйтесь использовать другое имя пользователя, которое описывает ваш проект.

    Создать нового пользователя

    Создайте нового пользователя Linux с помощью следующей команды:

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

    -m=Автоматически создать домашний каталог.
    -s=Определить оболочку по умолчанию для пользователя.

    Создайте новый Virtualenv и установите Django

    Войти под пользователем natsume:

    su - natsume

    Создайте новую виртуальную среду в каталоге myproject для нашего проекта Django с python3 в качестве версии python по умолчанию.

    mkdir myproject
    virtualenv --python=python3 myproject/

    Перейдите в каталог myproject и активируйте файл virtualenv.

    cd myproject/
    source bin/activate

    Затем установите Django, gunicorn и psycopg2 с помощью команды pip в этой среде.

    pip install django gunicorn psycopg2

    Начать новый проект с PostgreSQL

    Запустите проект Django hello_django с помощью команды django-admin ниже:

    django-admin startproject hello_django

    Он создаст новый каталог hello_django, перейдите в этот каталог и отредактируйте файл конфигурации settings.py с помощью vim.

    cd hello_django/
    vim hello_django/settings.py

    Измените настройки базы данных в строке 76 с приведенной ниже конфигурацией:

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

    В конце файла настройте статический URL-адрес, добавив строку конфигурации STATIC_ROOT ниже:

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

    Сохранить и выйти.

    Затем перенесите базу данных в нашу базу данных postgreSQL и создайте нового пользователя-администратора. Затем соберите все статические файлы в статический каталог, который автоматически создается при выполнении команды.

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

    Убедитесь, что ошибки нет, и выполните тестовый запуск сервера проекта django с помощью команды runserver.

    python manage.py runserver 0.0.0.0:8080

    Откройте веб-браузер и посетите IP-адрес сервера на порту 8080, в моем случае http://192.168.1.115:8080. Вы увидите страницу Django по умолчанию.

    Нажмите Ctrl + c, чтобы выйти.

    Шаг 4. Настройте проект Django с помощью Gunicorn.

    Gunicorn или Green Unicorn — это HTTP-сервер Python WSGI, созданный на основе проекта Ruby Unicorn. Он поддерживает различные веб-фреймворки и прост в настройке.

    Перейдите в каталог myproject и активируйте виртуальную среду для домашнего каталога пользователя natsume.

    cd ~/myproject/
    source bin/activate

    Создайте новый файл gunicorn_start внутри каталога bin с помощью vim:

    vim bin/gunicorn_start

    Вставьте конфигурацию ниже:

    #!/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=-

    Сохранить и выйти.

    Сделайте файл исполняемым с помощью команды chmod.

    chmod u+x bin/gunicorn_start

    Шаг 5 — Установите и настройте Supervisor

    Supervisor — это система управления процессами для операционных систем Linux. Он позволяет настраивать, отслеживать и контролировать ряд процессов в Linux. Supervisor основан на python, мы можем установить его из репозитория pypi с помощью команды pip или установить из репозитория ubuntu с помощью apt.

    Я установлю супервизор с помощью этой подходящей команды:

    sudo apt-get install supervisor

    Supervisor имеет файл конфигурации по умолчанию в каталоге /ect/supervisor/. Перейдите в этот каталог и создайте новую конфигурацию для нашего проекта Django, чтобы мы могли управлять им с помощью супервизора.

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

    Вставьте конфигурацию Supervisor ниже:

    [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

    Сохранить и выйти.

    Затем войдите в систему под пользователем natsume и создайте несколько каталогов, необходимых для файла сокета Gunicorn и файла журнала супервизора.

    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

    Вернитесь к пользователю root с помощью \exit\ и запустите Supervisor:

    exit
    systemctl start supervisor

    Проверьте статус и журнал процесса:

    supervisorctl
    tail -f hello_django

    Шаг 6. Установите и настройте Nginx для проекта Django.

    На этом этапе мы установим Nginx и настроим его как обратный прокси-сервер для нашего проекта Django.

    Установите Nginx из репозитория Ubuntu:

    sudo apt-get install nginx

    Перейдите в каталог конфигурации виртуального хоста Nginx и создайте файл виртуального хоста hello_django:

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

    Вставьте конфигурацию ниже:

    # 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/;
            }
        }
    }

    Сохранить и выйти.

    Активируйте виртуальный хост и проверьте конфигурацию Nginx.

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

    Убедитесь, что ошибки нет, затем перезапустите Nginx:

    systemctl restart nginx

    Шаг 7 — Тестирование Джанго

    На шаге 5 мы создали виртуальный хост для нашего проекта Django с доменным именем www.django-nginx.com. Откройте браузер и перейдите на доменное имя, которое вы выбрали для своего проекта.

    www.django-nginx.com/admin/

    И вы будете перенаправлены на панель администратора Django.

    Проверка того, что все сервисы, которые мы настроили, запущены с помощью команды ниже:

    netstat -pl

    Вы увидите pid, порт и файл sock, используемые всеми службами.

    Установка и настройка Django с PostgreSQL и Nginx в Ubuntu 16.04 прошла успешно.

    Ссылки

    • http://supervisord.org/