Установка и запуск Python/Django на cPanel
В данной статье мы рассмотрим возможность установки Python приложения на сервера с панелью управления cPanel. Как и Ruby, Python сейчас пользуется большой популярностью, и все больше и больше разработчиков стараются создавать web-приложения на Python.
Для веб разработчиков есть замечательный инструмент – специальный фреймворк написанный на Python – Django. Например, он используется на таких крупных и известных сайтах, как Instagram, Disqus, Mozilla, Pinterest и других ресурсах.
Загрузка файлов приложения на сервер
Перед началом настройки вашего приложения рекомендуем запросить в техподдержке доступ по SSH (по умолчанию он выключен). Далее удобным вам способом скачайте файлы проекта на сервер. Вы можете использовать диспетчер файлов в cPanel, FTP, git и т. д.
В нашем примере будем разворачивать приложение из некого публичного GitHub репозитория, потому клонируем файлы себе при помощи git. Команды в командной строке будем вводить при помощи встроенного SSH-клиента cPanel.
Для загрузки файлов при помощи git вводим команду и ждем окончания копирования:
git clone https://github.com/tokibito/django-example-todo.git
Файлы будут загружены в корневую директорию аккаунта cPanel в папку django-example-todo.
Это имя нужно изменить, поскольку модуль настройки Python-приложений не поддерживает имена файлов и директорий с дефисами. К примеру, переименуем папку так:
mv django-example-todo django_example
Создание приложения Python
В cPanel переходим в раздел Настройка Python приложений:
В этом разделе будут отображены существующие приложения, если они есть. Для нового приложения нажимаем Создать приложение.
Создадим приложение с нужной нам версией Python:
Далее нужно установить зависимости. Это можно сделать в панели управления или в командной строке. В панели управления открываем редактирование приложения. Сверху будет выведена команда для входа в так называемое виртуальное окружение для управления через командную строку. Внизу можно указать путь к файлу со списком зависимостей requirements.txt.
После добавления файла requirements.txt сразу запустим установку необходимых модулей кнопкой Запустить pip install.
Если доменное имя, на котором разворачивается приложение, по какой-то причине не работает с этого сервера, то установка зависимостей будет завершена с ошибкой.
Если у вас нет возможности использовать зарегистированный домен или направить ваш существующий домен на сервер, то установку необходимых модулей можно выполнить в командной строке.
[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, и предварительно войти в виртуальное окружение.
Обратите внимание! Если вы разворачиваете приложение на 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 для корректного отображения стилей и изображений в браузере. Также можно было создать символьную ссылку с первой директории во вторую, чтобы не копировать каждый раз файлы после их добавления. Данный способ организации статических файлов будет актуален не всегда — все зависит от того, как написано именно ваше приложение, где хранится статитка и т. д.
Вот так в итоге выглядит наше тестовое приложение:
Часто при размещении Django-приложения на домене возникает такая ошибка:
Для ее решения нужно открыть файл настроек приложения 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-хостинге, и как устранить наиболее частые ошибки, возникающие в процессе. Если у вас остались какие-либо вопросы — обращайтесь в техподдержку.
Возможно, вас заинтересует
Вместе с новой версией WP Toolkit 6.4 мир увидел и аддон для cPanel WP...
Совсем недавно в версиях cPanel v116 и v110 LTS появились новые замечательные продукты –...
Друзья, в последнее время нашим клиентам поступают фишинговые письма с информацией, что дисковая квота...
Наш телеграм
с важными анонсами, розыгрышами и мемами
Присоединиться