ISPmanager. Создание и запуск проекта на Django
Инструкция по созданию и запуску проекта на Django с учётом настроек панели управления хостингом ISPmanager.
Создание нового проекта
Для создания и запуска нового проекта на Django необходимо выполнить следующие шаги:
- Заходим по ssh на площадку и создаём виртуальное окружение:
DOM="ИМЯ_ДОМЕНА" cd ~/private
для python 2.6:/opt/komtet/python26/bin/virtualenv mypython
для python 2.7:/opt/komtet/python27/bin/virtualenv mypython
для python 3.3:/opt/komtet/python33/bin/virtualenv mypython
для python 3.5:/opt/komtet/python35/bin/virtualenv mypython
- Активируем виртуальное окружение в консоли для удобства работы:
. ~/private/mypython/bin/activate
- Убеждаемся, что окружение python подключено:
which python >> /var/www/USER/data/private/mypython/bin/python
- Устанавливаем django последней версии, а также дополнительные библиотеки:
для версии python 2.x:pip install django pip install mysql-python pip install uwsgi
для версии python 3.x:pip install django pip install mysqlclient pip install uwsgi
- Создаем проект на django:
django-admin startproject myproject
- Создаем БД в панели управления, дадим ей имя "myproj_db" с пользователем "myproj_user" и паролем "myproj_pass". Также запоминаем IP адрес сервера БД, где мы создали нашу БД
- Настраиваем конфигурационный файл django-проекта:
mcedit ~/private/myproject/myproject/settings.py
- Указываем настройки подключения к БД, изменяя переменную DATABASES:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'myproj_db', 'USER': 'myproj_user', 'PASSWORD': 'myproj_pass', 'HOST': 'IP_АДРЕС_СЕРВЕРА_БД', } }
-
Разрешаем использовать имя хоста:
ALLOWED_HOSTS = ['*']
- Указываем каталоги для статики:
echo "MEDIA_URL = '/media/'" >> ~/private/myproject/myproject/settings.py
echo "STATIC_ROOT = '/var/www/$USER/data/www/$DOM/static'" >> ~/private/myproject/myproject/settings.py
echo "MEDIA_ROOT = '/var/www/$USER/data/www/$DOM/media'" >> ~/private/myproject/myproject/settings.py
- Работа с файлом настроек завершена. Теперь нужно заполнить БД таблицами по умолчанию, выполнить миграцию БД:
cd ~/private/myproject python manage.py migrate
В случае успеха мы должны увидеть подобное:Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying sessions.0001_initial... OK
- Создаем суперпользователя для проекта:
python manage.py createsuperuser --username admin --email СВОЙ_EMAIL
- Создаем каталоги для статики и синхронизируем статику:
python manage.py collectstatic
- Создаем MEDIA каталог и позволяем проекту писать в него файлы:
mkdir ~/www/$DOM/media
cat <<EOT >> ~/private/myproject/myproject/urls.py from django.conf.urls.static import static from django.conf import settings urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) EOT
- Так как наш проект будет работать под uwsgi, то необходимо создать скрипт управления запуском/остановкой:
touch ~/private/myproject/run chmod 755 ~/private/myproject/run mcedit ~/private/myproject/run
#!/bin/bash venv="$HOME/private/mypython" proj="$HOME/private/myproject" case "$1" in start) $venv/bin/uwsgi --ini $proj/uwsgi.ini ;; stop) $venv/bin/uwsgi --stop $proj/uwsgi.pid ;; restart) uwsgi --reload $proj/uwsgi.pid ;; esac
- А также настройки запуска:
cat <<EOT >> ~/private/myproject/uwsgi.ini [uwsgi] chdir=/var/www/$USER/data/private/myproject module=myproject.wsgi:application master=True pidfile=/var/www/$USER/data/private/myproject/uwsgi.pid socket=/var/www/$USER/data/private/myproject/uwsgi.sock vacuum=True max-requests=5000 daemonize=/var/www/$USER/data/private/myproject/myproject.log EOT
- Запускаем проект:
~/private/myproject/run start
- Первоначальные настройки в консоли завершены. Теперь нужно зайти в панель управления и настроить конфигурацию нужного нам сайта для работы с нашим окружением django. Заходим в панель управления и переходим в раздел "WWW" - "Настройка Django". Здесь мы видим список всех созданных WWW-доменов из раздела "WWW" - "WWW-домены"
- Выделаем нужный нам домен и нажимаем кнопку "Настроить" и заполняем форму следующим образом:
Путь до проекта Django — private/myproject
- Нажимаем ОК и ждём когда веб-сервер примет изменения в течении часа.
- Добавим cron-задачу, которая будет запускать uwsgi процесс при перезагрузке сервера. Для этого заходим в левом меню «Главное» - «Планировщик» и заполняем форму следующим образом:
где ~/private/myproject/run — это путь до скрипта запуска, который мы создали в п.15