Как установить Django с PostgreSQL и Nginx на Ubuntu 16.04
На этой странице
- Шаг 1. Установите Django, Virtualenv и Gunicorn
- Шаг 2. Установка и настройка PostgreSQL
- Шаг 3. Запуск нового проекта Django
- Создать нового пользователя
- Создайте новый Virtualenv и установите Django
- Начать новый проект с 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/