Встановлення, налаштування та запуск програм Python/Django на серверах Linux з панеллю керування cPanel
Можливості нашого віртуального хостингу на Linux серверах дозволяють легко встановлювати та запускати будь-які Python-програми, у тому числі і добре відомий Фреймворк Django. Пропонована нами інструкція щодо настроювання середовища виконання Python-додатків та конфігурування Django-проектів допоможе Вам за короткий час отримати повністю готове середовище для розробки та виконання Ваших власних проектів на основі мови Python. Бажаємо удачі!
Крок 1 – Налаштування середовища виконання для Python-додатків у cPanel
Для нашого віртуального хостингу як основна панель управління використовується cPanel. Це означає, що всі початкові установки потрібно виставити саме в ній. Для цього в адресному рядку браузера потрібно вставити посилання на вхід до панелі керування хостингом, що надсилається всім клієнтам відразу ж після придбання хостинг-пакету. Так, для нашого облікового запису, таке посилання матиме такий вигляд: https://cp11nl.hyperhost.ua:2083/. Відповідне вікно для входу до панелі показано нижче.
Після введення імені користувача та пароля ми потрапляємо до “центру керування” обліковим записом. Весь наявний інструментарій з керування хостингом та додатками розбитий на розділи відповідно до виконуваних функцій. Нас цікавить розділ:
"Програмне забезпечення", в якому знаходиться інструмент "Налаштування Python-додатків" (підкреслено на скрині).
Після переходу за вказаним посиланням відкривається вікно, вигляд якого представлено нижче.
Тут формується список Python-додатків для облікового запису. У цьому випадку список порожній. Тому почнемо з того, що створимо свій перший додаток, натиснувши кнопку у верхньому правому куті — «СТВОРИТИ ДОДАТОК \ CREATE APPLICATION». У результаті з’явиться форма для введення основних параметрів додатка, яку потрібно заповнити (див. скріншот).
Розглянемо правила заповнення кожного з полів форми.
У полі вибору версії мови Python обираємо потрібну нам версію (бажано — рекомендовану).
У полі «Application root \ Кореневий каталог додатка» вводимо назву каталогу, в якому буде розміщено наш додаток на сервері — myapp.
У полі вибору Application URL-адреси додатка потрібно вибрати доступний домен. У нашому випадку — це ресурс test-domain.com.
Наступні два поля пов’язані із запуском додатка, і їх слід залишити порожніми. У цьому випадку система автоматично створить об’єкт додатка та файл запуску додатка з іменем passage_wsgi.py.
Ми бачимо, що з’явилася вкладка з назвою введеного нами домену для додатка — test-domain.com. Поля форми, які ми раніше залишили порожніми, тепер заповнені необхідними значеннями. У верхній частині вікна відображено посилання для доступу до віртуального середовища нашого Python-додатка:
sourse /home/bogdan/virtualenv/myapp/3.13/bin/activate && cd /home/bogdan/myapp
Це посилання потрібно скопіювати й зберегти для подальшого використання, що ми й робимо. Його потрібно буде вставити в командний рядок під час підключення до додатка за протоколом SSH. Або в функціоналі “Terminal” панелі керування CPanel. Ми будемо використовувати перший метод.
Тепер переходимо до другого етапу — створення робочого проєкту Django.
Крок 2 – Створення та налаштування Django-проєкту за допомогою SSH-протоколу
Для реалізації цього етапу ми повинні підключитися до нашого хостинг-акаунта за допомогою одного зі стандартних засобів доступу через SSH-протокол. У нашому випадку — це добре відома програма PuTTY або KiTTY.
У поле «Ім’я хоста / Host Name» вводимо ім’я сервера або його IP-адресу, які надсилаються всім нашим клієнтам після замовлення хостингу. У даному випадку це ім’я cp11nl.hyperhost.ua.
У полі «Порт / Port» виставляємо порт доступу – 22.
За допомогою перемикача «Тип з’єднання / Connection type» вибираємо протокол SSH.
Для створення з’єднання натискаємо кнопку «Open» в нижній частині вікна. В результаті з’являється вікно термінала для введення логіна і пароля користувача. Після введення облікових даних нашого хостинг-аккаунту з’являється доступ до командного рядка термінала, як показано нижче.
Активуємо віртуальне оточення для нашого проєкту за допомогою команди, отриманої раніше в панелі управління акаунтом. Введемо її в командному рядку термінала:
$ source /home/bogdan/virtualenv/myapp/3.13/bin/activate && cd /home/bogdan/myapp
Ми бачимо, що запрошення командного рядка змінилося. У ньому обов'язково повинні бути присутні номер версії мови Python і ім’я директорії для нашого проєкту – myapp. Це є правильним показником того, що ми знаходимося в програмному середовищі виконання Python.
Приступимо до встановлення фреймворку Django. У команді встановлення додатка ми повинні будемо використовувати специфічний для Python-додатків менеджер пакетів – pip, а також вказати номер останньої версії фреймворку Django. Введемо в терміналі:
$ pip install django==5.1.6
Як бачимо, встановлення пройшло успішно. Переконаймося в цьому, перевіривши встановлену версію програми:
$ django-admin --version
Таким чином, встановлена версія 5.1.6.
Створимо проєкт за допомогою наступної команди:
$ django-admin startproject myapp ~/myapp
Створимо низку директорій, необхідних для зберігання статичних файлів. Для цього наберемо в терміналі:
$ mkdir -p ~/myapp/templates/static_pages
$ mkdir ~/myapp/static_files
$ mkdir ~/myapp/static_media
У файл конфігурації проєкту settings.py внесемо низку змін, наведених нижче:
$ nano ~/myapp/myapp/settings.py
Перша зміна: імпортуємо модуль os над імпортом класу Path.
import os
Друга зміна: вставляємо ім’я нашого домену в параметр ALLOWED_HOSTS = [].
Третя зміна: замінюємо вміст розділу TEMPLATES наведеним нижче кодом.
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
Четверта зміна: під рядком з адресою для статичних файлів STATIC_URL додаємо наступний код.
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static_files')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "static_media"
Нижче наведено скріншоти оновленого коду для всіх випадків.
Зберігаємо зміни у файлі (Ctrl+O, Enter) і виходимо з редактора (Ctrl+X).
Видаляємо вміст файлу urls.py та вставляємо в нього код, наведений нижче.
$ nano ~/myapp/myapp/urls.py
Старий вміст файлу:
Код для вставлення:
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from django.urls import re_path as url
from django.views.generic.base import TemplateView
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^$', TemplateView.as_view(template_name='static_pages/index.html'), name='home'),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Оновлений вміст файлу:
Зберігаємо внесені зміни та закриваємо файл.
Видаляємо весь вміст із файлу запуску додатку passenger_wsgi.py і вставляємо оновлений код.
$ nano ~/myapp/passenger_wsgi.py
Старий вміст файлу:
Новий код:
import os
import sys
import django.core.handlers.wsgi
from django.core.wsgi import get_wsgi_application
# Set up paths and environment variables
sys.path.append(os.getcwd())
os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'
# Set script name for the PATH_INFO fix below
SCRIPT_NAME = os.getcwd()
class PassengerPathInfoFix(object):
def __init__(self, app):
self.app = app
def __call__(self, environ, start_response):
from urllib.parse import unquote
environ['SCRIPT_NAME'] = SCRIPT_NAME
request_uri = unquote(environ['REQUEST_URI'])
script_name = unquote(environ.get('SCRIPT_NAME', ''))
offset = request_uri.startswith(script_name) and len(environ['SCRIPT_NAME']) or 0
environ['PATH_INFO'] = request_uri[offset:].split('?', 1)[0]
return self.app(environ, start_response)
application = get_wsgi_application()
application = PassengerPathInfoFix(application)
Оновлений вміст файлу:
Зберігаємо внесені зміни та закриваємо файл.
Створимо базовий файл нашого Django-проєкту з іменем index.html. Для цього введемо в терміналі:
$ nano ~/myapp/templates/static_pages/index.html
У файл вносимо наступні рядки:
Welcome to the system Django!
Зберігаємо внесені зміни (Ctrl+O, Enter) та виходимо з редактора (Ctrl+X).Далі необхідно ввести низку Python-команд для створення та налаштування облікового запису суперкористувача для панелі адміністрування фреймворку Django:
$ python ~/myapp/manage.py migrate
$ python ~/myapp/manage.py createsuperuser
$ python ~/myapp/manage.py collectstatic
Під час виконання команди createsuperuser потрібно буде вказати логін, пароль та адресу електронної пошти адміністратора системи.
Таким чином, створення й конфігурування Django-проєкту завершено. Щоб переконатися, що все працює належним чином, знову заходимо в Панель керування хостингом і вибираємо інструмент «Налаштування Python-додатків». Тут можна побачити створений нами та вже запущений застосунок, як показано нижче. Перезапускаємо його за допомогою відповідної кнопки в стовпці «Дії \ Actions» та виходимо з панелі.
Крок 3 – Тестування та адміністрування створеного проєкту
Для перевірки працездатності проєкту достатньо в адресному рядку браузера завантажити головну сторінку домену, вказаного під час його налаштування. У нашому випадку це домен test-domain.com.
Результат показано нижче: на сторінці відображається текст, який ми ввели на головній сторінці нашого проєкту.
У разі, якщо вміст головної сторінки сайту не відображається, необхідно вручну запустити файл passenger_wsgi.py у командному рядку термінала, щоб виявити та усунути можливі помилки в конфігураційних файлах проєкту. Ось команда для цього:
$ python ~/myapp/passenger_wsgi.py
Ця дія дозволить побачити повідомлення про помилки (якщо такі є) безпосередньо в терміналі, що значно полегшить діагностику проблем.
У разі ж успішного запуску проєкту в браузері можна перейти до адміністративної панелі фреймворку Django. Для цього до раніше введеного доменного імені додаємо через слеш admin. У нашому випадку адреса виглядає так:
test-domain/admin
Вводимо цю адресу в браузері й дивимося на результат. Якщо все працює правильно, ви побачите сторінку входу до адмін-панелі Django.
У вікні, що з’явиться, потрібно ввести логін і пароль суперкористувача, створеного нами раніше. І все — ви в адміністративній панелі Django!
Підсумуємо результати:
Ми успішно створили й сконфігурували найпростіший сайт на фреймворку Django, який:
- відображає головну сторінку домену;
- взаємодіє з базою даних SQLite;
- надає можливість керування проєктом через адмін-панель Django.
Це повноцінний стартовий шаблон для подальшої розробки функціональних веб застосунків.