Джанго

Създаване на приложение Django на Ubuntu Server

Създаване на приложение Django на Ubuntu Server
Django е обща платформа за разработване на уебсайтове, уеб приложения и уеб API. Има много предимства при използването на рамката Django за вашия проект като ваш инструмент и ако не сте сигурни, че тя е подходяща, трябва само да се обърнете към многобройните големи имена, използващи Django в стека им.

Разполагането на Django в производствена среда за първи път може да бъде обезсърчаваща задача. Често разработчиците ще стартират екземпляр на Linux в облака за тяхната производствена среда.

В този урок ще ви покажем как да стартирате Django в производство, като използвате нов екземпляр на Ubuntu.

Ще приемем, че цялото ви редактиране се извършва на сървъра и че изпълнявате командите като root.

За този урок използваме Ubuntu 18.04.2 LTS

Създаване на потребител за проекта

Ще създадем нов потребител, django, за стартиране на нашето приложение. Това осигурява малка полза за сигурността.

За да създадете новия потребител:

useradd -m django

The -m флаг създава нова домашна директория: / home / django.

Настройка на средата на Python

Първо, първо: актуализирайте списъците си с apt-get update

Ubuntu 18.04 кораби с Python 3.6, но не се доставя с pip, което ще трябва да инсталирате вашите зависимости.

apt-get инсталирайте python3-pip

Сега, когато имаме pip, нека създадем виртуална среда. Виртуалната среда помага да се избегнат конфликти с Python пакетите, използвани от Linux.

pip3 инсталирайте virtualenv
cd / home / django
virtualenv env

Сега сте създали виртуален Python 3.6 среда в / home / django / env папка, която може да се активира със следната команда: Сега, когато имаме pip, нека създадем виртуална среда. Виртуалната среда помага да се избегнат конфликти с Python пакетите, използвани от Linux.

source / home / django / env / bin / activate

Настройване на проекта Django

За този урок ще създадем временен проект на Django. Ако разполагате свой собствен код, вместо това ще трябва да го качите на сървъра. Ще работим в домашната директория / home / django.Настройване на проекта Django

Нека създадем проекта Django:

cd / home / django
източник env / bin / активиране
pip инсталирайте django
django-admin startproject урок

Проверете дали нещата работят, като изпълните:

CD урок
python управлява.py runserver 0.0.0.0:80

Нашият екземпляр на Ubuntu работи на 178.128.229.34, така че ще се свържем с http: // 178.128.229.34.Проверете дали нещата работят, като изпълните:

Вероятно ще видите нещо подобно:

За да поправим това, ще редактираме / home / django / tutorial / tutorial / settings.py. намирам ALLOWED_HOSTS = [] и го настройте на:

ALLOWED_HOSTS = [
„178.128.229.34 '# заменете това с IP адреса на вашия сървър
или името на домейна, което използвате за свързване
]

Сега да се върнем към http: // 178.128.229.34:

Страхотен! Ние сме онлайн!

Настройване на PostgreSQL, базата данни

По подразбиране Django използва база данни SQLite3. За съжаление, SQLite3 не позволява едновременни записи. Ако вашият уебсайт някога има само един потребител, който редактира данни, а останалите посетители просто четат страници, това може да е подходящо. Но ако имате няколко души, които редактират данни едновременно, вероятно ще искате да използвате различен бекенд.

Общият избор са PostgreSQL и Mysql. Ще използваме PostgreSQL за този урок.

Започнете с инсталиране на PostgreSQL:

apt-get инсталирайте postgresql

След това стартирайте psql, черупка на базата данни. По подразбиране само потребителят на postgres може да се свърже с базата данни, така че първо ще трябва да се удостоверим като този потребител:

su - postgres
psql

След това се нуждаем от база данни и потребител за достъп до нея:

създаване на урок за база данни;
създайте потребител tutorial_user с криптирана парола 'tutorial_password';
предоставяне на всички привилегии на урок за база данни на tutorial_user;

Сега въведете exit или натиснете два пъти Ctrl-D: веднъж, за да излезете от psql, и веднъж, за да излезете от черупката на postgresuser.

Страхотен! Сега разполагаме с нашата база данни и потребител. Нека проверим дали можем да влезем в нашата база данни.

Ще се опитаме да отворим черупка на базата данни, този път влизайки в базата данни, която създадохме с потребителя, който създадохме:

psql -Ututorial_user -dtutorial -h127.0.0.1 -W

В подканата въведете паролата, която създадохме: tutorial_password.

Ако видите черупка на база данни, постигнахте успех. Ако видите грешки, ще трябва да се върнете назад и да разберете какво не е наред.

Свързване на Django към базата данни

За да свържем Django с базата данни, първо трябва да инсталираме адаптера Python PostgreSQL:

pip инсталирайте psycopg2-двоичен файл

Тогава, нека се отворим / home / django / tutorial / tutorial / settings.pyи конфигурирайте връзката.

Намерете текущата си връзка с база данни; ако не сте го модифицирали, може да изглежда по следния начин:

БАЗИ ДАННИ =
'по подразбиране':
'ENGINE': 'django.db.бекендове.sqlite3 ',
„ИМЕ“: os.път.присъединяване (BASE_DIR, 'db.sqlite3 '),

За да се свържем с PostgreSQL, ще го заменим със следното:

БАЗИ ДАННИ =
'по подразбиране':
'ENGINE': 'django.db.бекендове.postgresql_psycopg2 ',
'NAME': 'урок',
'USER': 'tutorial_user',
'PASSWORD': 'tutorial_password',
„HOST“: „127.0.0.1 ',
„ПОРТ“: „5432“,

Нека тестваме връзката:

cd / home / django / tutorial
python управлява.py runserver 0.0.0.0:80

Бихте могли отново да посетите вашия уебсайт (за нас на http: // 178.128.229.34 /, но заменете това с вашия IP или име на хост).

Ако всичко е наред, можем да продължим.

Настройване на nginx, уеб сървъра

Когато тичаш python управлява.py runserver, използвате сървъра за разработка на Django. Това е чудесно за локално развитие, но както при SQLite3, всъщност не е подходящо за производство.

Общият избор за производствени уеб сървъри са nginx и Apache. За този урок ще използваме nginx.

Инсталирайте nginx, като използвате следното:

apt-get инсталирайте nginx

Сега, ако всичко е работило добре, nginx трябва да работи на порт 80. Продължете и проверете вашия уебсайт; трябва да видиш:

Страхотно, така че nginx работи и работи! След това ще трябва да го конфигурираме за комуникация с Django. Отворете конфигурационния файл nginx, намиращ се на / etc / nginx / sites-available / default. Нека заменим файла със следното:

django нагоре по веригата
сървър 127.0.0.1: 8000;

сървър
слушайте 80;
местоположение /
try_files $ uri @send_to_django;

местоположение @send_to_django
proxy_set_header Хост $ http_host;
proxy_redirect изключен;
proxy_pass http: // django;

Тествайте конфигурационния файл, като стартирате nginx -t. Ако всичко е наред, можем да презаредим, като стартираме nginx -s reload.

Сега, ако посетите вашия сайт, ще видите следното:

Всеки път, когато видите това, това означава, че nginx не е успял да предаде заявката на процеса нагоре. В момента това е така, защото се опитва да предаде заявката на 127.0.0.1: 8000, но няма процес за слушане на този адрес.

Нека да стартираме сървъра за разработка на Django и да опитаме отново:

cd / home / django / tutorial
python управлява.py runserver 127.0.0.1: 8000

и отново посетете уебсайта си. Трябва да видите вашето приложение Django.

Монтиране на Django на Gunicorn

Не забравяйте, че не искаме да използваме нашия сървър за разработка на Django в производството. Вместо това ще използваме сървър за интерфейс на уеб сървър (WSGI), за да стартираме Django. Nginx ще предаде заявката на WSGI сървъра, който изпълнява Django.

Общият избор за WSGI сървър е Gunicorn и uWSGI. За този урок ще използваме Gunicorn.

Нека инсталираме Gunicorn:

pip инсталирайте gunicorn

След това можем да започнем gunicorn, както следва:

cd / home / django / tutorial
урок за gunicorn.wsgi

Сега трябва да можете да посетите уебсайта си и да видите как приложението ви работи правилно.

Стартиране на Gunicorn като услуга

Има няколко проблема с пускането на gunicorn като този:

  1. Ако затворим сесията на SSH, процесът на оръжието ще спре.
  2. Ако сървърът се рестартира, процесът на gunicorn няма да започне.
  3. Процесът се изпълнява като root. Ако хакерите намерят експлойт в кода на нашето приложение, те ще могат да изпълняват команди като root. Ние не искаме това; но затова създадохме djangouser!

За да разрешим тези проблеми, ще стартираме Gunicorn като системна услуга.

cd / home / django
mkdir bin
cd / home / django / bin
докоснете старт сървър.ш

В стартовия сървър.ш:

cd / home / django
източник env / bin / активиране
CD урок
урок за gunicorn.wsgi

Сега можете да тествате скрипта:

cd / home / django / bin
bash start-server.ш
# посетете уебсайта си, той трябва да работи

Сега създаваме системната услуга за Gunicorn. Създайте / etc / systemd / system / gunicorn.услугата следва:

[Мерна единица]
Описание = Gunicorn
След = мрежа.мишена
[Обслужване]
Тип = просто
Потребител = django
ExecStart = / home / django / bin / start-server.ш
Рестартиране = при неизправност
[Инсталирай]
WantedBy = многопотребителски.мишена

Сега, нека активираме услугата и я стартираме

systemctl активира gunicorn
systemctl старт gunicorn

В момента трябва да можете да видите уебсайта си.

Можем да изключим gunicorn, както следва:

systemctl стоп gunicorn

И трябва да видите 502 Bad Gateway.

И накрая, нека проверим цикъла на зареждане:

systemctl старт gunicorn
Рестартирай сега

Когато машината ви се върне онлайн, трябва да видите, че уебсайтът ви работи.

Статични файлове

Ако посетите администраторския панел на Django на вашия уебсайт на адрес / admin / (за нас това е http: // 178.128.229.34 / admin /), ще забележите, че статичните файлове не се зареждат правилно.

Ще трябва да създадем нова папка за статични файлове:

cd / home / django
mkdir статичен

След това казваме на Django, че трябва да постави статичните файлове, като редактира / home / django / tutorial / tutorial / settings.py и добавяне:

STATIC_ROOT = '/ home / django / static /'

Сега можем да съберем статичните файлове:

cd / home / django
източник env / bin / активиране
CD урок
python управлява.py collectstatic

И накрая, трябва да кажем на nginx да обслужва тези статични файлове.

Нека отворим / etc / nginx / sites-available / default и добавим следното директно над твоето местоположение / блок:

местоположение / статично /
root / home / django;
try_files $ uri = 404;

Целият файл сега трябва да изглежда така:

django нагоре по веригата
сървър 127.0.0.1: 8000;

сървър
слушайте 80;
местоположение / статично /
root / home / django;
try_files $ uri = 404;

местоположение /
try_files $ uri @send_to_django;

местоположение @send_to_django
proxy_set_header Хост $ http_host;
proxy_redirect изключен;
proxy_pass http: // django;

Можем да презаредим файла, като използваме nginx -s reload

И вуаля! Сега вашите статични файлове ще работят напълно.

Заключение

В този момент приложението ви Django работи правилно. Ако имате някои специални изисквания, може да се наложи да настроите кеш като Redis или опашка за съобщения като Rabbit MQ. Може да искате да настроите непрекъснато разгръщане, тъй като процедурата за разгръщане може да отнеме известно време.

Друга важна стъпка е да предприемете подходящите стъпки за осигуряване на вашата машина на Ubuntu. В противен случай може да откриете, че сървърът ви се държи неправилно!

Късмет!

Топ 5 продукти за ергономична компютърна мишка за Linux
Продължителната употреба на компютър причинява ли болка в китката или пръстите? Страдате ли от схванати стави и постоянно ли ви се налага да си ръкува...
Как да променяте настройките на мишката и тъчпада с помощта на Xinput в Linux
Повечето дистрибуции на Linux се доставят с библиотека “libinput” по подразбиране за обработка на входни събития в системата. Той може да обработва вх...
Пренастройте бутоните на мишката си по различен начин за различен софтуер с X-Mouse Button Control
Може би се нуждаете от инструмент, който може да промени контрола на мишката с всяко приложение, което използвате. Ако случаят е такъв, можете да изпр...