Установка, настройка и запуск Python/Django приложений на linux серверах с панелью управления cPanel

Аникей Александров 06.09.2017 03.08.2023 на прочтение 18 минуты

Возможности нашего виртуального хостинга на Linux серверах позволяют легко устанавливать и запускать любые Python-приложения, в том числе и хорошо известный Фреймворк Django. Предлагаемая нами инструкция по настройке среды выполнения Python-приложений и конфигурированию Django-проектов поможет Вам за короткое время получить полностью готовую среду для разработки и выполнения Ваших собственных проектов на основе языка Python. Желаем удачи!

Шаг 1 – Настройка среды выполнения для Python-приложений в cPanel

Для нашего виртуального хостинга в качестве основной панели управления используется cPanel. Это означает, что все первоначальные настройки нужно выставить именно в ней.  Для этого в адресной строке браузера нужно вставить ссылку на вход в панель управления хостингом, высылаемую всем клиентам сразу же после приобретения хостинг-пакета. Так, для нашего аккаунта, такая ссылка будет иметь следующий вид: https://cp6nl.hyperhost.ua:2083/. Соответствующее окно для входа в панель показано ниже.     

После введения имени пользователя и пароля мы попадаем в «центр управления» аккаунтом. Весь имеющийся инструментарий по управлению хостингом и приложениями разбит на разделы, в соответствии с выполняемыми функциями. Нас интересует раздел 

«Программное обеспечение», в котором находится инструмент «Настройка Python-приложений» (подчёркнут на скрине).

После перехода по указанной ссылке попадаем в окно, вид которого представлен ниже.

Здесь формируется список Python-приложений для аккаунта. В данном случае список пуст. Поэтому, начнём с того, что создадим своё первое приложение, кликнув по кнопке в правом верхнем углу – «СОЗДАТЬ ПРИЛОЖЕНИЕ». В результате, появится форма для указания основных параметров приложения, которую необходимо заполнить (см. скрин).

Рассмотрим правила заполнения каждого из полей формы.

В поле выбора версии языка Python выбираем нужную нам версию (желательно - рекомендуемую).

В поле «Application root \ Корневой каталог приложения» вводим название каталога, в котором будет размещено наше приложение на сервере - myapp.

В поле выбора Application URL-адреса приложения нужно выбрать доступный домен. В нашем случае - это ресурс test-domain.com.

Следующие два поля связаны с запуском приложения, и их следует оставить пустыми. В этом случае система автоматически создаст объект приложения и файл запуска приложения с именем passage_wsgi.py.

 

Переведено с помощью DeepL.com (бесплатная версия)


Мы видим, что появилась вкладка с названием введенного нами домена для приложения - test-domain.com. Поля формы, которые мы ранее оставили пустыми, теперь заполнены необходимыми значениями. В верхней части окна отображена ссылка для доступа к виртуальной среде нашего Python-приложения:

source /home/websitec/virtualenv/myapp/3.9/bin/activate && cd /home/websitec/myapp

 

Эту ссылку нужно скопировать и сохранить для дальнейшего использования, что мы и делаем. Ее нужно будет вставить в командную строку при подключении к приложению по протоколу SSH. Или в функционале «Terminal» панели управления CPanel. Мы будем использовать первый метод.

Теперь переходим ко второму этапу - созданию рабочего проекта Django.

Шаг 2 – Создание и настройка Django-проекта с помощью SSH-протокола

Для реализации этого этапа мы должны подключиться к нашему хостинг-аккаунту с помощью одного из стандартных средств доступа через SSH-протокол. В нашем случае - это хорошо известная программа PuTTY или KiTTY.

Стоит отметить, что на виртуальном хостинге доступ по SSH предоставляется по запросу. Поэтому для его получения вам нужно связаться с техподдержкой и попросить предоставить доступ по SSH протоколу для работы с Python/Django


                                           

В поле «Имя хоста / Host Name» вводим имя сервера или его IP-адрес, высылаемые всем нашим клиентам после заказа хостинга. В данном случае, это имя cp6nl.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.

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

Купить хостинг


Close Screen
Аникей Александров
Статей: 41
Оцените статью:


Спасибо за отзыв
Рейтинг: 4.2 из 5 Голосов: 19