Установка и запуск Python/Django на cPanel

post thumbnail

В данной статье мы рассмотрим возможность установки Python приложения на сервера с панелью управления cPanel. Как и Ruby, Python сейчас пользуется большой популярностью, и все больше и больше разработчиков стараются создавать web-приложения на Python.

Для веб разработчиков есть замечательный инструмент – специальный фреймворк написанный на Python – Django. Например, он используется на таких крупных и известных сайтах, как Instagram, Disqus, Mozilla, Pinterest и других ресурсах.

Загрузка файлов приложения на сервер

Перед началом настройки вашего приложения рекомендуем запросить в техподдержке доступ по SSH (по умолчанию он выключен). Далее удобным вам способом скачайте файлы проекта на сервер. Вы можете использовать диспетчер файлов в cPanel, FTP, git и т. д.

В нашем примере будем разворачивать приложение из некого публичного GitHub репозитория, потому клонируем файлы себе при помощи git. Команды в командной строке будем вводить при помощи встроенного SSH-клиента cPanel.

Запуск Python/Django на cPanel | Блог Hostpro

Для загрузки файлов при помощи git вводим команду и ждем окончания копирования:

git clone https://github.com/tokibito/django-example-todo.git

Загрузка через Git | Блог Hostpro

Файлы будут загружены в корневую директорию аккаунта cPanel в папку django-example-todo.

Место, куда загружаются файлы | Блог Hostpro

Это имя нужно изменить, поскольку модуль настройки Python-приложений не поддерживает имена файлов и директорий с дефисами. К примеру, переименуем папку так:

mv django-example-todo django_example

Создание приложения Python

В cPanel переходим в раздел Настройка Python приложений:

Настройка Python приложений | Блог Hostpro

В этом разделе будут отображены существующие приложения, если они есть. Для нового приложения нажимаем Создать приложение.

Создать приложение Python | Блог Hostpro

Создадим приложение с нужной нам версией Python:

Создать приложение Python | Блог Hostpro

Далее нужно установить зависимости. Это можно сделать в панели управления или в командной строке. В панели управления открываем редактирование приложения. Сверху будет выведена команда для входа в так называемое виртуальное окружение для управления через командную строку. Внизу можно указать путь к файлу со списком зависимостей requirements.txt.

Установка зависимости | Блог Hostpro

После добавления файла requirements.txt сразу запустим установку необходимых модулей кнопкой Запустить pip install.

Если доменное имя, на котором разворачивается приложение, по какой-то причине не работает с этого сервера, то установка зависимостей будет завершена с ошибкой.

Проблема с доменом | Блог Hostpro

Если у вас нет возможности использовать зарегистированный домен или направить ваш существующий домен на сервер, то установку необходимых модулей можно выполнить в командной строке.

[django@skm271 ~]$ source /home/django/virtualenv/django_example/myproject/3.6/bin/activate && cd /home/django/django_example/myproject
 (myproject:3.6)[django@skm271 myproject]$ cd ..
 (myproject:3.6)[django@skm271 django_example]$ pip install -r requirements.txt

Запускать команду нужно в папке, где находится файл requirements.txt, и предварительно войти в виртуальное окружение.

Запуск команды в папке | Блог Hostpro

Обратите внимание! Если вы разворачиваете приложение на Django, то во время установки этого модуля файл wsgi.py перезаписывается. Если ваш «Файл запуска приложения» имеет такое же имя, то его нужно будет загрузить на сервер повторно с удалением стандартного файла wsgi.py от модуля Django.

Настройка приложения Python

Далее нужно выполнить все действия для настройки приложения. Например, создать базу данных и подключить ее в файле settings.py, выполнить миграцию данных в базу и прочее.

Для нашего демонстрационного приложения мы выполнили такие команды в командной строке:

Миграция информации в базу данных:

(myproject:3.6)[django@skm271 myproject]$ python manage.py migrate

Создание учетной записи администратора:

(myproject:3.6)[django@skm271 myproject]$ python manage.py createsuperuser

Также мы скопировали папку /home/django/django_example/myproject/todo/static в папку /home/django/public_html/static для корректного отображения стилей и изображений в браузере. Также можно было создать символьную ссылку с первой директории во вторую, чтобы не копировать каждый раз файлы после их добавления. Данный способ организации статических файлов будет актуален не всегда — все зависит от того, как написано именно ваше приложение, где хранится статитка и т. д.

Вот так в итоге выглядит наше тестовое приложение:

Создание приложения Python/Django | Блог Hostpro

Часто при размещении Django-приложения на домене возникает такая ошибка:

Вероятные ошибки | Блог Hostpro

Для ее решения нужно открыть файл настроек приложения settings.py и изменить строку:

  • ALLOWED_HOSTS = [] #здесь может быть пусто или указан какой-то домен

на такую:

  • ALLOWED_HOSTS = ['*'] #здесь можно написать перечень доменов, по которым может открываться приложение; если указана *, то имя домена разрешается любое.

Особенности подключения базы данных к приложению

Python и, в частности, фреймворк Django поддерживает несколько типов (драйверов) баз данных. На наших серверах общего хостинга доступны драйверы MariaDB (mysql), Postgresql и sqlite. У каждого из этих вариантов есть свои особенности из-за ограничений, накладываемых услугой общего хостинга.

Если вы хотите использовать самую актуальную версию Django (2.2+) cо стандартным драйвером БД, то вам потребуется библиотека sqlite не ниже версии 3.8.3. Но операционная система CentOS 7, установленная на наших серверах предоставляет версию 3.7.17 и глобально обновить ее возможности нет.

Если вы столкнетесь с ошибкой вида:

raise ImproperlyConfigured('SQLite 3.8.3 or later is required (found %s).' % Database.sqlite_version)
 django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).

то можно перейти на другой драйвер, например mysql, или установить в свой аккаунт актуальную версию sqlite.

Стоит учесть, что базовый драйвер sqlite подходит для только тестовых или учебных проектов. Для более серьезных приложений лучше использовать другие базы данных.

Чтобы появилась возможность установить новую версию sqlite 3.8.3+, вам нужно обратиться в техподдержку, чтобы для вашего аккаунта включили возможность компиляции пакетов из исходного кода. Далее по очереди выполните следующие команды в командной строке вашей хостинг-услуги:

cd ~/tmp/
wget https://www.sqlite.org/2019/sqlite-autoconf-3280000.tar.gz 
tar -xzf sqlite-autoconf-3280000.tar.gz 
cd sqlite-autoconf-3280000/ 
./configure --prefix=/home/USER/
make 
make install

Вам нужно будет заменить USER вашим именем пользователя (логин от cPanel). Процесс компиляции займет некоторое время.

Далее нужно отредактировать файл /home/USER/.bashrc, добавив строку:

export LD_LIBRARY_PATH="/home/USER/lib"

В случае использования драйверов Mysql или Postgresql доступ вашего пользователя к компилятору также необходим, потому что менеджер pip будет выполнять компиляцию во время установки модулей mysqlclient или psycopg2.

Подробнее о подключении различных драйверов БД можно прочитать в документации Django (1, 2).

Таким образом, вместе с запросом доступа по SSH нужно попросить техподдержку включить доступ к компилятору.

Вывод

В этой статье мы постарались максимально подробно рассказать, как развернуть Python-приложение на нашем Linux-хостинге, и как устранить наиболее частые ошибки, возникающие в процессе. Если у вас остались какие-либо вопросы — обращайтесь в техподдержку.

Telegram Hostpro

Наш телеграм

с важными анонсами, розыгрышами и мемами

Присоединиться

Возможно, вас заинтересует

Аддон «WP Guardian» в cPanel: почему это важно, и как он работает
Аддон «WP Guardian» в cPanel: почему это важно, и как он работает

Вместе с новой версией WP Toolkit 6.4 мир увидел и аддон для cPanel WP...

Новые продукты в cPanel - Sitejet Builder и Site Quality Monitoring
Новые продукты в cPanel - Sitejet Builder и Site Quality Monitoring

Совсем недавно в версиях cPanel v116 и v110 LTS появились новые замечательные продукты –...

Фишинговые письма от имени cPanel. Как защитить себя?
Фишинговые письма от имени cPanel. Как защитить себя?

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