Встановлення і запуск 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 +) із стандартним драйвером БД, то вам буде потрібна бібліотека 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

Наш телеграм

з важливими анонсами, розіграшами й мемами

Приєднатися

Можливо, вас зацікавить

Нові продукти в cPanel – Sitejet Builder і Site Quality Monitoring
Нові продукти в cPanel – Sitejet Builder і Site Quality Monitoring

Зовсім нещодавно у версіях cPanel v116 і v110 LTS зʼявилися нові чудові продукти –...

Фішингові листи від імені cPanel. Як захистити себе?
Фішингові листи від імені cPanel. Як захистити себе?

Друзі, останнім часом нашим клієнтам надходять фішингові листи з інформацією, нібито дискова квота користувача...

cPanel vs Plesk. Битва титанів
cPanel vs Plesk. Битва титанів

cPanel і Plesk – одні з найпопулярніших комерційних панелей управління і водночас дві “конкуруючі...