python-django-install.jpg

Очень мало информации по установке Django на сервер с Apache, обычно устанавливают на Nginx - таких мануалов полно.
Но вот мне нужно на уже имеющийся у меня сервер с Apache установить Django!
Попробую сделать это и зафиксировать шаги в этом статье!

Исходные данные:
  • сервер Ubuntu 18.04 с установленной панелью ISPmanager 5 Lite
  • веб-сервер Apache MPM-ITK
  • MySQL 5.7.28
Вот как установить Django на ISPmanager так же не нашел толковых мануалов в интернете

Приступим.

Подготовка сервера

Захожу на сервер под пользователем root, для этого обычно использую этот ssh клиент To view the link, you must: Sign In or Sign Up
Выполню стандартные команды обновления:
Код:
apt-get update
apt-get upgrade
Далее, в тех мануалах, что я нашел советуют создать пользователя и дать ему доступ к sudo (т.е. права суперпользователя )
Пользователя создать можно так (к примеру admin):
Код:
adduser admin
Но я этого делать не буду, так как у меня уже создан пользователь в панели ISPmanager 5 Lite

Даю ему права суперюзера:
Код:
usermod -aG sudo admin
Выхожу с ssh и снова логинюсь уже под пользователем (не root)
Сначала посмотрю какой же питон идет по дефолту с Ubuntu 18.04

Код:
python --version
>>> Python 2.7.17

python3 --version
>>> Python 3.6.9
Отлично!

Я использую Python 3, далее будет идти речь именно о нем!

Устанавливаю pip и mod-wsgi:
Код:
sudo apt-get install python3-pip libapache2-mod-wsgi-py3
Настройка виртуального окружения

Сервер настроили, теперь можно переходить к Django. Сначала нужно создать виртуальное окружение Python.

Для этого нужно установить virtualenv:
Код:
sudo pip3 install virtualenv
Далее нужно создать каталог для виртуального окружения и перейти в него!
Предварительно удалю все с папки домена (домен уже установлен в панели ISPmanager там должен быть index.html):
Код:
rm -rf  ~/www/you-site.com/*
Назву папку djangotest и создам ее в папке домена:
Код:
mkdir ~/www/you-site.com/djangotest
cd ~/www/you-site.com/djangotest
В этом каталоге создаю виртуальную среду Python (назву ее django1env) :
Код:
virtualenv djangotestenv
Включаю виртуальное окружение:
Код:
source djangotestenv/bin/activate
Включив виртуальную среду, наконец-то устанавливаю Django :dance:
Код:
pip install django
Примечание: Вне зависимости от версии Python в активной виртуальной среде используется команда pip, а не pip3.
Последняя на данный момент версия django-3.0.1 установлена!

Создание и настройка Django-приложения

Установив Django в виртуальную среду, можно приступать к созданию файлов Django-проекта.

Создание Django-проекта

Установите файлы Django в ранее созданный каталог. Это создаст каталоги второго уровня, хранящие код и скрипты. Обратите внимание: команда должна заканчиваться символом точки.
Код:
django-admin.py startproject myproject .
После выполнения этих команд внутри папки домена наблюдаем:

И внутри myproject:

Отлично, идем дальше..

Дальше нам нужно отредактировать settings.py
можно прямо на сервере используя nano или vim
но я скачаю его себе на компьютер, отредактирую в Notepad++ и залью назад (перезапишу)

Перед редактированием, нужно создать еще базу данных, по дефолту ISPmanager установил мне на Ubuntu 18.04 базу MySQL 5.7.28
Но я вот хочу использовать Postgres
Иду в раздел "возможности" и вижу, что она там уже есть но не установлена:

Устанавливаю!

Далее стандартно создаю базу данных но уже не MySQL, а Postgres!

Данные базы записываю где-то себе.

Далее возвращаемся к settings.py


В секции ALLOWED_HOSTS = [] добавьте IP, имя вашего домена и его псевдонимы:
Код:
ALLOWED_HOSTS = ['you.serv.IP.addr', 'you-site.com', 'www.you-site.com']
В секции DATABASES укажите данные для подключения к Postgres (там по дефолту SQLite нужно заменить):
Код:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'django_db',
        'USER' : 'user_name',
        'PASSWORD' : 'password',
        'HOST' : 'localhost',
        'PORT' : '5432',
    }
}
В конец файла добавьте директиву STATIC_ROOT, которая задаёт фреймворку Django местонахождение статических файлов.
Код:
. . .
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
Сохраните и закройте файл. Если скачивали к себе то презалейте!

В случае с Postgres нам нужно установить еще psycopg2:
Код:
sudo apt-get install libpq-dev python-dev
pip install psycopg2
После этого можно открыть исходную схему БД:
Код:
./manage.py makemigrations
./manage.py migrate
Создать аккаунт администратора проекта:
Код:
./manage.py createsuperuser
Где указать имя пользователя, адрес электронной почты и пароль.

Затем нужно собрать статический контент в один каталог:
Код:
./manage.py collectstatic
После подтверждения все статические файлы будут помещены в каталог static в каталоге проекта.
Если упешно то выдаст:
130 static files copied to '/var/www/admin/data/www/you-site.com/djangotest/static'.
Чтобы разблокировать сервер разработки, введите:
Код:
sudo ufw allow 8000
Запускаем сервер разработки Django:
Код:
./manage.py runserver 0.0.0.0:8000
Откройте браузер и посетите доменное имя или IP сервера на порте 8000:
Код:
http://server_IP:8000
Страница открылась:

:dance::tost:


Код:
http://your_ip:8000/admin/


Пройдя авторизацию, вы получите доступ к интерфейсу администратора.

Для остановки сервера разработки, нажмите CTRL-C.

Чтобы отключить виртуальную среду, введите:
Код:
deactivate
Отлично. сервер разработки это хорошо но нужно еще домен подключить!

Настройка Apache & wsgi

Иду в конфиг домена в ISPmanager


И заменяю (удаляю) там все содержимое на:

Код:
<VirtualHost 5.5.5.5:80>
ServerName you-site.com
DocumentRoot /var/www/admin/data/www/you-site.com
WSGIScriptAlias / /var/www/admin/data/www/you-site.com/djangotest/myproject/wsgi.py


WSGIDaemonProcess myproject python-home=/var/www/admin/data/www/you-site.com/djangotest/djangotestenv python-path=/var/www/admin/data/www/you-site.com/djangotest
WSGIProcessGroup myproject

<directory /var/www/admin/data/www/you-site.com/djangotest/myproject>
   AllowOverride all
   Require all granted
   Options FollowSymlinks
</directory>

Alias /static /var/www/admin/data/www/you-site.com/djangotest/static

<Directory /var/www/admin/data/www/you-site.com/djangotest/static>
  Require all granted
</Directory>
</VirtualHost>
Где:
  • 5.5.5.5 - IP вашего сервера
  • admin - ваш пользователь
  • you-site.com - ваш домен
  • djangotestenv - название виртуального окружения
  • myproject - название проекта
Перезапустите сервис Apache, чтобы обновить настройки.
Код:
sudo systemctl restart apache2
Переходим по нужному домену you-site.com и наслаждаемся проделанной работой :)

В первую очередь эту заметку писал для себя, чтоб потом в случае необходимости быстро установить Django на сервер с ISPmanager и Apache!
Но может кому-то еще пригодится данный мануал!
  • Like
Реакции: List