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

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

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

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

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

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

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

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

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

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

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

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

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

В поле «Файл логов Passenger» вводим имя файла ведения логов. Мы указали имя – log_file.

После завершения заполнения полей, кликаем по кнопке «СОЗДАТЬ» в правом верхнем углу. В результате, запускается приложение с заданными нами параметрами и выводится предыдущая форма в обновлённом виде, которая представлена ниже.

Мы видим, что появилась закладка с именем введённого нами домена для приложения – web-site.com. Оставленные нами ранее пустые поля формы теперь заполнены нужными значениями. В верхней части окна выведена ссылка для доступа в виртуальное окружение нашего Python-приложения:

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

Эту ссылку необходимо скопировать и сохранить для дальнейшего использования, что мы и делаем. Ёё нужно будет вставить в командную строку, когда мы подключимся к приложению по ssh-протоколу.

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

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

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

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

В поле «Имя хоста / Host Name» вводим имя сервера или его IP-адрес, высылаемые всем нашим клиентам после заказа хостинга. В данном случае, это имя cp6nl.hyperhost.ua.

В поле «Порт / Port» выставляем порт доступа –  22.

С помощью переключателя «Тип соединения / Connection type» выбираем протокол SSH.

Для создания соединения кликаем по кнопке «Open» в нижней части окна. В результате, появляется окно терминала для ввода логина и пароля пользователя. После введения учётных данных нашего хостинг-аккаунта появляется доступ к командной строке терминала, как показано ниже. 

Активируем виртуальное окружение для нашего проекта с помощью команды, полученной ранее в панели управления аккаунтом. Введём её в командной строке терминала: 

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

Мы видим, что приглашение командной строки изменилось. В нём обязательно должны присутствовать номер версии языка Python и имя директории для нашего проекта – myapp. Это является верным признаком того, что мы находимся в программной среде выполнения Python.

Приступим к установке Фреймворка Django. В команде установки приложения мы должны будем использовать специфичный для Python-приложений менеджер пакетов – pip, а также указать номер последней версии Фреймворка Django. Введём в терминале:

 $ pip install django==4.2.2  

Как видим, установка прошла успешно. Убедимся в этом, проверив установленную версию программы:

$ django-admin --version  

Таким образом, установлена версия 4.2.2.

Создадим проект с помощью следующей команды:

 $ 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

Первое изменение: вставить имя нашего домена для параметра 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.conf.urls import 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)
# Set the application
application = get_wsgi_application()
application = PassengerPathInfoFix(application)

gh

 

 

Обновлённое содержимое:

Сохраним внесённые изменения и закроем файл.

Создадим базовый файл нашего Django-проекта с именем index.html. Для этого наберём в терминале:

$ nano ~/myapp/templates/static_pages/index.html

Внесём в файл следующие строки:

Welcome to the system Django!

Сохраним внесённые изменения и выйдём из редактора.

Далее, необходимо будет ввести ряд Python-команд для создания и настройки учётной записи суперпользователя для панели администрирования Фреймворка Django: 

$ python ~/myapp/manage.py migrate

$ python ~/myapp/manage.py createsuperuser

$ python ~/myapp/manage.py collectstatic

Здесь нужно будет указать логин, пароль и адрес электронной почты администратора системы.

Таким образом, создание и конфигурирование Django-проекта завершено. Для того, чтобы убедиться, что всё в порядке, нужно ещё раз зайти в Панель управления хостингом и выбрать инструмент «Настройка Python-приложений». Здесь можно увидеть созданное нами и уже запущенное приложение, как показано ниже. Перезагрузим его с помощью соответствующей команды в столбце «Действия» и выйдем из панели. 

Шаг 3 – Тестирование и администрирование созданного проекта

Для проверки работоспособности проекта достаточно в адресной строке браузера загрузить главную страницу домена, указанного при его конфигурировании. В нашем случае, это домен web-site.com. Результат показан ниже. Здесь отображается текст, который мы вели на главной странице нашего проекта. 

В случае, если содержимое главной страницы сайта не отображается, необходимо вручную запустить файл passenger_wsgi.py в командной строке терминала для возможности обнаружения и устранения возможных проблем в файлах конфигурации проекта. Вот эта команда:

$ python ~/myapp/passenger_wsgi.py

В случае же успешного запуска проекта в браузере, можно перейти в администраторскую панель Фреймворка Django. Для этого необходимо к адресу введённого ранее домена через слеш  добавить имя admin. В нашем случае, такой адрес будет выглядеть следующим образом:

Web-site.com/admin

Введём его в браузере и посмотрим на результат.

В появившемся окне необходимо ввести логин и пароль суперпользователя, созданного нами ранее. И Вы в администраторской панели Django!  

Подытожим результаты. Мы сумели создать и сконфигурировать простейший сайт на Фреймворке Django, который обеспечивает загрузку домашней страницы домена и взаимодействие с базой данных SQLite, а также даёт возможность управлять проектом с помощью администраторской панели Django.

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