Установка, настройка и запуск 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. После её запуска на локальной машине, появляется окно, представленное ниже.
В поле «Имя хоста / 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.