2.7.4. Проксирование трафика в веб-приложения
Только для бизнес-хостинга
Возможность запускать веб-приложения доступна только на бизнес-хостинге и входит в стоимость тарифа. При смене тарифа на виртуальный хостинг веб-приложения перестанут работать.На хостинге доступна возможность проксировать HTTP-трафик на локальный IP-адрес, благодаря чему можно запускать приложения на PHP, Python и Go.
Схема работы
Мы выдаём вам уникальный локальный IP-адрес вида 127.*.*.*, где * — любое число от 0 до 255, и порт по умолчанию — 3000. Вы используете эти значения в своём приложении — указываете их в команде запуска или непосредственно в коде.
Порядок обработки запроса:
- Запрос поступает на общий сервер через порт
80или443. - На основе имени хоста перенаправляется приложению на локальный IP-адрес.
- Приложение получает данные, обрабатывает их и возвращает ответ.
Реальный IP-адрес посетителя передаётся в заголовке X-REAL-IP.
Дополнительные порты на выделенном IP
При наличии выделенного IP на него можно дополнительно принимать запросы на любой порт в диапазоне3000-3100. Это позволяет одному приложению принимать трафик на сайт и одновременно принимать другой тип трафика на порт выделенного IP. Также можно запускать приложение и без проксирования запросов на сайт — занять порт на выделенном IP и обрабатывать разные соединения только на нём.
Запуск приложения
- Откройте раздел «Настройки сайта».
- Переключите «Веб-сервер» на «Проксирование трафика» и сохраните изменения:

- Разместите файлы вашего приложения на хостинге в нужном каталоге.
- Откройте раздел «Настройки веб-приложения».
- Укажите каталог и команду для запуска вашего приложения:

- Каталог запуска — путь к каталогу, из которого должно запускаться ваше приложение. Если оставить пустым, будет использоваться корневой каталог сайта.
- Команда запуска — команда для запуска вашего приложения. Можно использовать стандартные операторы управления Bash (
&&,;,||) для объединения нескольких последовательных команд. В команде запуска или в коде самого приложения используйте локальный IP-адрес и порт из блока «Проксирование HTTP-трафика в приложение»:
- Сохраните изменения и проверьте работу приложения:

В блоке «Логи приложения» можно в реальном времени следить за логами в процессе запуска и работы приложения.
Примеры запуска приложений
Внимание!
Во всех командах вместоexample.com используйте адрес вашего домена, вместо sub — название вашего поддомена.
PHP
- В разделе «Настройки хостинг-аккаунта» (или «Хостинг → Настройки хостинг-аккаунта») установите для PHP версию 8.0 или выше и сохраните изменения.
- Подключитесь к хостингу по SSH.
- Перейдите в каталог поддомена, в котором будут находиться файлы вашего проекта:
cd example.com/sub - Установите Workerman:
composer require workerman/workerman - Создайте файл
index.phpс таким содержимым (пример «An http server» из репозитория Workerman):<?php use Workerman\Worker; require_once __DIR__ . '/vendor/autoload.php'; // #### http worker #### $http_worker = new Worker('http://0.0.0.0:2345'); // 4 processes $http_worker->count = 4; // Emitted when data received $http_worker->onMessage = function ($connection, $request) { //$request->get(); //$request->post(); //$request->header(); //$request->cookie(); //$request->session(); //$request->uri(); //$request->path(); //$request->method(); // Send data to client $connection->send("Hello World"); }; // Run all workers Worker::runAll();В строке
$http_worker = new Worker('http://0.0.0.0:2345');вместо0.0.0.0и2345используйте IP-адрес и порт со страницы настроек веб-приложения. - На странице с настройками веб-приложения укажите команду запуска (в команде используйте свои данные):
/usr/local/php84/bin/php -c /home/example/.system/php/sub.example.com.ini /home/example/example.com/sub/index.php start - Сохраните изменения, запустите приложение и проверьте работу сайта.
В случае успеха на сайте должен отображаться текст «Hello World».
- В разделе «Настройки хостинг-аккаунта» (или «Хостинг → Настройки хостинг-аккаунта») установите для PHP версию 8.0 или выше и сохраните изменения.
- Подключитесь к хостингу по SSH.
- Перейдите в каталог поддомена, в котором будут находиться файлы вашего проекта:
cd example.com/sub - Установите Workerman:
composer require workerman/workerman - Создайте файл
index.phpс таким содержимым (пример «A websocket server» из репозитория Workerman):<?php use Workerman\Worker; require_once __DIR__ . '/vendor/autoload.php'; // Create a Websocket server $ws_worker = new Worker('websocket://0.0.0.0:2346'); // Emitted when new connection come $ws_worker->onConnect = function ($connection) { echo "New connection\n"; }; // Emitted when data received $ws_worker->onMessage = function ($connection, $data) { // Send hello $data $connection->send('Hello ' . $data); }; // Emitted when connection closed $ws_worker->onClose = function ($connection) { echo "Connection closed\n"; }; // Run worker Worker::runAll();В строке
$ws_worker = new Worker('websocket://0.0.0.0:2346');вместо0.0.0.0и2345используйте IP-адрес и порт со страницы настроек веб-приложения. - На странице с настройками веб-приложения укажите команду запуска (в команде используйте свои данные):
/usr/local/php84/bin/php -c /home/example/.system/php/sub.example.com.ini /home/example/example.com/sub/index.php start - Сохраните изменения и запустите приложение.
- Проверьте работу WebSocket:
- Откройте в браузере консоль разработчика.
- Поочерёдно выполните команды (в первой команде используйте адрес вашего сайта):
const ws = new WebSocket('wss://example.com') ws.onmessage = m => console.log(m.data) ws.send('lorem ipsum') - В случае успеха в консоли должен отображаться текст «Hello lorem ipsum».
Django
Запуск Django 4.2 на Python 3.10:
- В разделе «Настройки хостинг-аккаунта» (или «Хостинг → Настройки хостинг-аккаунта») установите для Python версию 3.10 или выше и сохраните изменения.
- Подключитесь к хостингу по SSH.
- Установите Django:
pip install --user Django - Перейдите в каталог поддомена, в котором будут находиться файлы вашего проекта:
cd example.com/sub - Создайте новый проект с названием
project:django-admin startproject project . - Примените миграции:
python manage.py migrate - Отредактируйте файл настроек вашего проекта
project/settings.pyи в строкеALLOWED_HOSTS = []в квадратных скобках укажите в одинарных кавычках адрес вашего сайта'sub.example.com'. - На странице с настройками веб-приложения укажите команду запуска:
python3.10 manage.py runserver 127.*.*.*:3000В команде вместо
127.*.*.*и3000используйте IP-адрес и порт со страницы настроек веб-приложения. - Сохраните изменения, запустите приложение и проверьте работу сайта.
В случае успеха на сайте должна отобразиться страница с текстом «The install worked successfully! Congratulations!».
Решение проблемы со стилями в админ-панели Django:
- Отредактируйте файл настроек вашего проекта
project/settings.pyи после строкиSTATIC_URL = 'static/' добавьте такие:import os STATIC_ROOT = os.path.join(BASE_DIR, 'static') - В каталоге проекта выполните команду:
python manage.py collectstatic
Flask
Запуск Flask 2.3 на Python 3.10:
- В разделе «Настройки хостинг-аккаунта» (или «Хостинг → Настройки хостинг-аккаунта») установите для Python версию 3.10 или выше и сохраните изменения.
- Подключитесь к хостингу по SSH.
- Перейдите в каталог поддомена, в котором будут находиться файлы вашего проекта:
cd example.com/sub - Создайте виртуальную среду Python:
python -m venv .venv - Активируйте созданную виртуальную среду:
source .venv/bin/activate - Установите Flask:
pip install --user Flask - Деактивируйте виртуальную среду:
deactivate - Создайте файл
hello.pyс таким содержимым (пример «A Minimal Application» из официальной документации):from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): return "<p>Hello, World!</p>" - На странице с настройками веб-приложения укажите команду запуска:
source .venv/bin/activate && python3.10 -m flask --app hello.py run --host 127.*.*.* --port 3000В команде вместо
127.*.*.*и3000используйте IP-адрес и порт со страницы настроек веб-приложения. - Сохраните изменения, запустите приложение и проверьте работу сайта.
В случае успеха на сайте отобразится текст «Hello, World!».
Go
Запуск простого приложения на Go 1.20:
- В разделе «Настройки хостинг-аккаунта» (или «Хостинг → Настройки хостинг-аккаунта») установите для Go версию 1.20 или выше и сохраните изменения.
- Подключитесь к хостингу по SSH.
- Перейдите в каталог поддомена, в котором будут находиться файлы вашего проекта:
cd example.com/sub - Создайте файл
simple.goс таким содержимым (пример «Introducing the net/http package (an interlude)» из официальной документации):package main import ( "fmt" "log" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:]) } func main() { http.HandleFunc("/", handler) log.Fatal(http.ListenAndServe("127.*.*.*:3000", nil)) }В строке
log.Fatal(http.ListenAndServe("127.*.*.*:3000", nil))вместо127.*.*.*и3000используйте IP-адрес и порт со страницы настроек веб-приложения. - Скомпилируйте созданный файл:
go build simple.go - Установите для скомпилированного файла права
750:chmod 750 simple - На странице с настройками веб-приложения укажите команду запуска:
./simple - Сохраните изменения, запустите приложение и проверьте работу сайта.
В случае успеха на сайте должен отображаться текст «Hi there, I love!» с названием страницы, к которой вы обратились.
Комментарии
1. треба створити базу даних на в розділі "Бази даних"
2. і просто вписати її в settings.py
DATABASES = {
'default': {
'ENGINE': 'mysql.connector.django',
'NAME': 'назва бази даних - вказана в панелі керування базами даними',
'HOST': 'localhost',
'USER': 'юзернейм - вказаний в панелі керування базами даними',
'PASSWORD': 'пароль - вказаний в панелі керування базами даними',
'PORT': '3306'
}
}
Чи є якісь заготовлені команди в linux щоб зробити рестарт додатку через SSH? Чи прийдеться все таки через HTTP запит на API хостингу робити перезапуск додатку?