ISPmanager. Создание и запуск проекта на Django

Инструкция по созданию и запуску проекта на Django с учётом настроек панели управления хостингом ISPmanager.

Создание нового проекта

Для создания и запуска нового проекта на Django необходимо выполнить следующие шаги:

 

 

  1. Заходим по 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
  2. Активируем виртуальное окружение в консоли для удобства работы:
    . ~/private/mypython/bin/activate
  3. Убеждаемся, что окружение python подключено:
    which python
    >> /var/www/USER/data/private/mypython/bin/python
  4. Устанавливаем 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
  5. Создаем проект на django:
    django-admin startproject myproject
  6. Создаем БД в панели управления, дадим ей имя "myproj_db" с пользователем "myproj_user" и паролем "myproj_pass". Также запоминаем IP адрес сервера БД, где мы создали нашу БД
  7. Настраиваем конфигурационный файл django-проекта:
    mcedit ~/private/myproject/myproject/settings.py
  8. Указываем настройки подключения к БД, изменяя переменную DATABASES:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'myproj_db',
            'USER': 'myproj_user',
            'PASSWORD': 'myproj_pass',
            'HOST': 'IP_АДРЕС_СЕРВЕРА_БД',
        }
    }
    
  9. Разрешаем использовать имя хоста:
    ALLOWED_HOSTS = ['*']
  10. Указываем каталоги для статики:
    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
  11. Работа с файлом настроек завершена.  Теперь нужно заполнить БД таблицами по умолчанию, выполнить миграцию БД:
    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
  12. Создаем суперпользователя для проекта:
    python manage.py createsuperuser --username admin --email СВОЙ_EMAIL
  13. Создаем каталоги для статики и синхронизируем статику:
    python manage.py collectstatic
  14. Создаем 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
  15. Так как наш проект будет работать под 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
    
  16. А также настройки запуска:
    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
    
  17. Запускаем проект:
    ~/private/myproject/run start
  18. Первоначальные настройки в консоли завершены. Теперь нужно зайти в панель управления и настроить конфигурацию нужного нам сайта для работы с нашим окружением django. Заходим в панель управления и переходим в раздел "WWW" - "Настройка Django". Здесь мы видим список всех созданных WWW-доменов из раздела "WWW" - "WWW-домены"
  19. Выделаем нужный нам домен и нажимаем кнопку "Настроить" и заполняем форму следующим образом:
    Путь до проекта Django — private/myproject
     
    Путь до виртуального окружения PYTHON — private/mypython

    ispmanager. django config
  20. Нажимаем ОК и ждём когда веб-сервер примет изменения в течении часа.
  21. Добавим cron-задачу, которая будет запускать uwsgi процесс при перезагрузке сервера. Для этого заходим в левом меню «Главное» - «Планировщик» и заполняем форму следующим образом:
    screen222.png
    где ~/private/myproject/run — это путь до скрипта запуска, который мы создали в п.15

Вам также может помочь