Обслуговування додатків django за допомогою apache і mod_wsgi в ubuntu

Розміщення серверів в надійних дата-центрах Європи. Відкрийте хмарний VPS / VDS сервер на швидких SSD за 1 хвилину!

Кращий хостинг:
- захистить дані від несанкціонованого доступу в охоронюваному європейському ЦОДі
- прийме оплату хоч в bitcoin.
- дозволить поставити свій дистрибутив

- захист від DDos-атак
- безкоштовний backup
- Uptime 99,9999%
- ЦОД - TIER III
- провайдер - TIER I

Підтримаємо російською мовою 24/7/365 Працюємо з юрособами і фізособами. Вам прямо зараз потрібно 24 ядра і 72 Gb RAM. Будь ласка!

Наші вигідні тарифи доведуть, що дешевий хостинг ви ще не знали!

Хвилинна справа: виберіть конфігурацію, оплатіть і CMS на VPS готова.
Money Back - 30 днів!

Банківськими картами, електронною валютою, через термінали Qiwi, Webmoney, PayPal, Новоплат і ін.

Задайте питання в службу підтримки 24/7/365

Знайдіть відповіді в нашій базі і познайомтеся з рекомендаціями

Django - це продуктивний веб-фреймворк для розробки додатків або сайтів в Python.

Django також надає простий сервер розробки для локального тестування коду. На жаль, для виробництва необхідно шукати більш безпечний і потужний веб-сервер, так як цей сервер абсолютно не підходить.

Даний посібник допоможе встановити і налаштувати Django в віртуальному оточенні Python, а також налаштувати Apache для підтримки програми та обробки клієнтських запитів (для цього використовується модуль Apache під назвою mod_wsgi, який взаємодіє з Django через інтерфейс WSGI).

вимоги

Для виконання даного керівництва потрібно попередньо налаштувати сервер Ubuntu 16.04 і створити не-root користувача з доступом до sudo. Детальні інструкції по початкового налаштовування сервера і створенні користувачів можна знайти тут.

Фреймворк Django в цьому посібнику буде встановлений в віртуальне оточення Python, що дозволить використовувати індивідуальний набір пакетів для цього додатка.

Після запуску програми потрібно налаштувати взаємодію веб-сервера Apache з додатком Django. Для цього використовується модуль mod_wsgi, який перетворює HTTP-запити в зрозумілий Django формат згідно специфікації WSGI.

Установка пакетів з репозиторію Ubuntu

Для початку потрібно встановити зі сховищ Ubuntu всі необхідні пакети: веб-сервер Apache, модуль mod_wsgi і pip (пакетний менеджер Python).

Оновлення індекс пакетів і встановіть програми.

Якщо ви використовуєте Python 2, введіть:

sudo apt-get update
sudo apt-get install python-pip apache2 libapache2-mod-wsgi

В Python 3 використовується інший пакет pip:

sudo apt-get update
sudo apt-get install python3-pip apache2 libapache2-mod-wsgi-py3

Налаштування віртуального середовища

Підготувавши сервер, можна приступати до роботи над додатком Django. Спочатку створіть віртуальне оточення Python для зберігання інструментів проекту.

Для цього використовуйте команду virtualenv. Щоб встановити цю утиліту, введіть:

Python 2:
sudo pip install virtualenv
Python 3:
sudo pip3 install virtualenv

Тепер утиліта virtualenv встановлена, і можна використовувати її для створення оточення. Створіть каталог, в якому буде знаходитися віртуальне оточення, і перейдіть в нього:

У цьому каталозі створіть віртуальну середу Python:

Ця команда створить віртуальне оточення на ім'я myprojectenv в каталозі myproject, а також встановить локальну версію Python і pip, які можна використовувати для створення ізольованого середовища розробки проекту.

Перш ніж приступити до установки залежностей додатки, потрібно включити віртуальне оточення.

source myprojectenv / bin / activate

Після цього командний рядок зміниться, вказуючи, що поточної середовищем є віртуальне середовище Python:

Включивши віртуальне середовище, встановіть Django:

pip install django

Примітка. Незалежно від версії Python в активній віртуальному середовищі використовується команда pip, а не pip3.

Створення та налагодження Django-додатки

Встановивши Django у віртуальне середовище, можна приступати до створення файлів Django-проекту.

Створення Django-проекту

Встановіть файли Django в раніше створений каталог. Це створить каталоги другого рівня, що зберігають код і скрипти. Зверніть увагу: команда повинна закінчуватися символом точки.

django-admin.py startproject myproject.

Налаштування Django-проекту

У керівництві використовується стандартна БД SQLite, тому установка не займе багато часу.

Примітка. Для підтримки масштабних програм рекомендується налаштувати більш надійну СУБД.

У центрі уваги буде настройка каталогу статичних файлів Django.

В кінець файлу додайте директиву STATIC_ROOT, яка задає фреймворку Django місцезнаходження статичних файлів.


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

Збережіть і закрийте файл.

Після цього можна відкрити вихідну схему БД за допомогою скрипта управління:

/ myproject
./manage.py makemigrations
./manage.py migrate

Потім потрібно зібрати статичний контент в один каталог:

Після підтвердження все статичні файли будуть поміщені в каталог static в каталозі проекту.

Тепер потрібно розблокувати порт сервера розробки Django, 8000. На даний момент він закритий брандмауером UFW (якщо ви налаштували сервер згідно з цим керівництву).

Щоб розблокувати сервер розробки, введіть:

sudo ufw allow 8000

Протестуйте проект, запустивши сервер розробки Django:

/manage.py runserver 0.0.0.0:8000

Відкрийте браузер і відвідайте доменне ім'я або IP сервера на порту 8000:

На екрані повинна з'явитися привітальна сторінка Django:

It worked!
Congratulations on your first Django-powered page.

Щоб зупинити сервер розробки, натисніть CTRL-C.

Щоб відключити віртуальну середу, введіть:

Налаштування Apache

Отже, проект Django готовий, і можна приступати до налаштування Apache на фронт-енді. Всі клієнтські підключення, отримані Apache, будуть перетворені в формат WSGI, необхідний Django, за допомогою модуля mod_wsgi (який повинен був включитися автоматично після установки).

Щоб налаштувати WSGI, відредагуйте стандартний віртуальний хост.

sudo nano /etc/apache2/sites-available/000-default.conf

Всі директиви, які знаходяться в файлі, можна залишити. Потрібно тільки додати кілька нових опцій.

Спочатку налаштуйте статичні файли; після цього Apache буде направляти всі запити, що починаються з / static, в каталог static, який знаходиться в каталозі проекту. Для цього потрібно визначити Alias ​​і надати доступ до необхідного каталогу.


.
Alias ​​/ static / home / 8host / myproject / static

Require all granted

Потім потрібно налаштувати права доступу до файлу wsgi.py (другий рівень каталогів проекту), в якому зберігається код проекту. Для цього використовуйте розділ Directory.


.
Alias ​​/ static / home / 8host / myproject / static

Require all granted



Require all granted


Тепер можна перейти до налаштувань, що обробляють WSGI. Для запуску процесів WSGI використовуйте режим демона; для цього використовується директива WSGIDaemonProcess. Ця директива приймає для процесу довільне ім'я. У керівництві використовується ім'я myproject.

Потім потрібно вказати шлях до Python, де сервер Apache зможе знайти всі необхідні компоненти. Оскільки в налаштуванні використовується віртуальне оточення, потрібно вказати шлях до каталогу віртуального середовища, а потім - шлях Python до базового каталогу проекту Django.

Після цього потрібно вказати групу процесів; це значення має збігатися зі значенням директиви WSGIDaemonProcess (в даному випадку це myproject). На завершення потрібно встановити алиас скрипта, щоб сервер Apache передавав запити для кореневого домена в файл wsgi.py:


.
Alias ​​/ static / home / 8host / myproject / static

Require all granted



Require all granted


WSGIDaemonProcess myproject python-home = / home / 8host / myproject / myprojectenv python-path = / home / 8host / myproject
WSGIProcessGroup myproject
WSGIScriptAlias ​​/ /home/8host/myproject/myproject/wsgi.py

Збережіть і закрийте файл.

Права доступу

Використовуючи базу даних SQLite (яка є стандартною), не забудьте надати веб-ерверу Apache доступ до неї.

Для цього потрібно надати групі-власнику права на запис і читання. За замовчуванням файл БД називається db.sqlite3 і повинен знаходитися в каталозі проекту:

Передайте права на файл групі, в яку входить Apache; це група www-data.

sudo chown: www-data

Щоб мати право на запис у файлі, група повинна бути власником батьківського каталогу файлу.

sudo chown: www-data

Тепер потрібно знову відредагувати налаштування брандмауера. Закрийте порт 8000 і додайте виняток для трафіку Apache:

sudo ufw delete allow 8000
sudo ufw allow 'Apache Full'

Перевірте синтаксис файлів Apache:

sudo apache2ctl configtest

Якщо в файлах немає помилок, команда поверне:

Перезапустіть сервіс Apache, щоб оновити налаштування.

sudo systemctl restart apache2

Примітка. Номер порту вказувати не потрібно.

Подальші дії

Тепер додаток Django працює в індивідуальній віртуальному середовищі, а модуль mod_wsgi допомагає Apache перетворювати запити в зрозумілий Django формат.

Переконавшись, що додаток працює, ви можете приступати до налаштування безпеки. Якщо у програми є доменне ім'я, можна отримати безкоштовний SSL-сертифікат від Let's Encrypt.

Вітаю!
Ви написали :

Django - це продуктивний веб-фреймворк для розробки додатків або сайтів в Python. Django також надає простий сервер розробки для локального тестування коду. На жаль, для виробництва необхідно шукати більш безпечний і потужний веб-сервер, так як цей сервер абсолютно не підходить.

А чому не підходить? Чому Django не підходить в плані потужності і безпеки?
Питання задаю, тому що не дуже в цьому разібраюсь.
Наперед дякую!

Справа не в фреймворку Django, а в його вбудованому сервері розробки.

Сервер розробки Django - це простий і легкий веб-сервер, який дозволяє протестувати сайт на етапі розробки. Такий веб-сервер не впорається з високим трафіком на етапі виробництва: він потрібен тільки для того, щоб в процесі розробки вам не довелося витрачати ресурси і час на настройку повнофункціонального веб-сервера типу Apache або Nginx.

Щиро дякую за відповідь! Зрозумів вас

Схожі статті