# Работа Python

Услуга Поддержка веб-приложений позволяет запускать на Джино.Хостинге приложения, написанные на Python через модуль Apache mod_passenger.

# Python

Python — высокоуровневый объектно-ориентированный язык программирования. Используется в веб-разработке, анализе данных, машинном обучении, DevOps.

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

Для доступа к веб-приложении на хостинге понадобится доменное имя, привязанное к нему. К Хостингу можно привязать уже имеющийся домен или воспользоваться техническим адресом хостинг-контейнера.

Технический адрес указан в разделе Сводка в разделе Домены на хостинге и в общем виде выглядит так: 123xyz.hosting.myjino.ru или j12345678.myjino.ru. Мы рекомендуем пользоваться техническим адресом только для разработки и тестирования сайтов — размещать готовые проекты лучше на отдельном домене.

Проверить текущую версию Python и при необходимости изменить её можно в разделе УправлениеНастройки веб-сервера. Для каждого подключённого к хостингу домена можно использовать свою версию Python.

# Запуск приложения на Python

Приложения и сайты, написанные на Python, на Джино запускаются через модуль Apache mod_passenger: для запуска Python-приложения нужно использовать файл passenger_wsgi.py. Этот файл описывает взаимодействие веб-сервера с вашим приложением (указывает, какой файл должен обрабатывать запросы веб-сервера). Разместить passenger_wsgi.py нужно в папку с именем домена, на котором будет работать сайт, например, ~/domains/example.com.

Чтобы запустить простой сайт на техническом адресе сервера, нужно создать файл passenger_wsgi.py в папке ~/domains/123xyz.hosting.myjino.ru или ~/domains/j12345678.myjino.ru и поместить в него следующий код:

import sys
def application(environ, start_response):
    start_response('200 OK', [('Content-type', 'text/plain')])
    return [b"Hello, World!"]

Этот код выводит на страницу стандартное приветствие «Hello, World!». После сохранения файла нужно перезагрузить веб-сервер (УправлениеНастройки веб-сервераПерезагрузить) и в браузере в адресной строке ввести адрес вашего хостинга (в нашем случае это технический адрес). На открывшейся странице можно будет увидеть Hello, World!

Обратите внимание, что статическое содержимое вашего сайта нужно размещать в подпапке public_html.

Запуск Python-кода на Хостинге, созданном до 28.04.2022

На Хостинг-аккаунтах Джино, созданных до 28.04.2022, запуск Python-кода отличается от описанного выше.

Чтобы запустить Python-код с помощью модуля Apache mod_wsgi, нужно создать в папке с доменным именем файл .htaccess следующего содержания:

AddHandler wsgi-script .wsgi

После этого рядом нужно создать файл simple.wsgi, описывающий стандартное приветствие:

def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello Old World"]

После сохранения файлов можно проверить работу кода, открыв в браузере страницу http://domain_name/simple.wsgi. Мы увидим приветствие Hello Old World, указанное в нашем файле simple.wsgi.

# Создание виртуального окружения Python

Виртуальное окружение создается автоматический при подключении услуги Поддержка веб-приложений и выборе интерпретатора Python для вашего домена в директории аккаунта domains/.venv/pythonVER. Где VER - это версия Python интерпретатора. Для удобства работы с переменными окружения используется утилита direnv (opens new window). При переходе в директорию домена, переменные окружения будут загружены автоматический в соотвествии с выбранным интерпретатором.

Также виртуальное окружение можно создать стандартным способом. Пример как создать виртуальное окружение venv для Python 3.10:

/opt/alt/python39/bin/python3 -m venv venv39

Список доступных версий Python и путь к их интерпретаторам приведены в разделе УправлениеТехническая информация.

Для запуска на Джино.Хостинге проекта, написанного на Python, размещать проект следует в папке с доменным именем, на котором он будет работать. Например, ~/domains/123xyz.hosting.myjino.ru или ~/domains/j12345678.myjino.ru.

Описание основных принципов работы с Django- и Flask-приложениями на хостинге Джино представлено в отдельных статьях:

# Вопросы и ответы

Обязательно ли подключать SSH для работы с Django?

SSH нужен только для работы с утилитами django-admin и manage.py, если вы разрабатываете свой проект прямо на нашем сервере. Вы можете вести разработку на своём локальном хосте, копировать обновлённые файлы и содержимое БД на свой хостинг — в этом случае SSH-подключение не требуется.

У меня не работает команда *syncdb*. Почему?

Скорее всего, вы ведёте разработку прямо на сервере, используете MySQL в качестве БД и пытаетесь синхронизировать базу данных командой:

python manage.py syncdb

В этом случае в качестве значения поля HOST словаря DATABASES[default] в файле settings.py обязательно нужно указать IP 127.0.0.1. Это снизит скорость соединения с БД, поэтому после окончания работы с утилитой manage.py верните данное значение в исходное положение (пустая строка).