Встановлення, налаштування та запуск програм 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.

Варто зазначити, що на віртуальному хостингу доступ через SSH надається лише за запитом. Тому, щоб його отримати, вам потрібно звернутися до технічної підтримки та попросити надати доступ за SSH-протоколом для роботи з Python/Django.


                                       

У поле «Ім’я хоста / 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, який:

Це повноцінний стартовий шаблон для подальшої розробки функціональних веб застосунків.

 

Придбати хостинг