Ispmanager поддерживает Python — так удобнее управлять сайтами, веб-серверами и средой прямо в панели. Расскажем, как без проблем добавить в панель сайт на Python — c Django или без него, настроить работу по API или работать через утилиту mgrctl.
Python или PHP
Считается, что PHP и Python — самые популярные языки программирования. Есть версия, что PHP подходит для сложных сайтов, а Python — для приложений. Какой язык выбрать — зависит от знаний разработчика и задач проекта.
Python — универсальный язык программирования, требующий строгой структуры. Подходит для разработки сайтов и сложных приложений: игр, веб-приложений и других.
С Python:
легче искать ошибки, чем в PHP
проще понять код другого разработчика
работать с Python быстрее благодаря сторонним библиотекам
PHP чаще используется для разработки сайтов — так удобнее работать с веб-страницами.
С PHP:
позволяет встраивать код сразу в HTML
лучше справляется с большим количеством запросов
быстрее работает на веб-серверах, чем Python
В ispmanager между PHP и Python выбирать не нужно — можно работать одновременно и с тем и другим для разных проектов на одном сервере.
Настройка Python в ispmanager
Настроить Python в панели управления интуитивно просто:
1. Включаем Python. Переходим в «Настройки» → «Конфигурация ПО» → выбираем строчку с Python → «Установить ПО».
Как выглядит настройка:
2. Выбираем нужные версии. Все версии Python не всегда нужны в работе — они занимают дополнительное место. Чтобы после установки не удалять лишнее, можно сразу выбрать нужные версии.
Выделяем строку с Python → «Настройки работы ПО» → выбираем нужные версии ПО → «Сохранить».
Как выглядит установка версий Python:
Важно: чтобы установить Python, нужен nginx. Если nginx нет, то устанавливаем веб-сервер так же, как и Python — через конфигурацию ПО.
3. Меняем права пользователей. По умолчанию, у пользователей права на работу с Python выключены — если вы планируете создавать сайты, то права нужно выдать. Для новых пользователей права можно настроить сразу вместе с другими параметрами.
Как поменять права пользователя:
Рекомендация: для дополнительной безопасности лучше использовать системного пользователя, чтобы скрипты не работали из-под root.
Добавляем сайт на Python без Django
Как добавить сайт на Python в панель управления, если вы работаете без фреймворка Django:
1. Создаем сайт. Включаем Python → раздел «Сайты → «Создать сайт». Вводим данные и выбираем обработчик Python. Если в списке нет обработчика, то у пользователя нет доступа к Python.
2. Открываем файлы и загружаем сайт:
3. Указываем нужные пакеты — в файле requirements.txt
4. Устанавливаем библиотеки. После загрузки сайта нажимаем на три точки в конце строки и переходим в раздел «Просмотр пакетов Python» — выбираем и устанавливаем нужные библиотеки.
Дополнительно можно перейти в консоль с активированной Python-средой с помощью пункта «Shell-клиент»:
5. Перезапускаем Python. Нажимаем три точки в конце строки и выбираем «Перезапустить Python». Иконка Python должна стать зеленой — значит, проект работает стабильно.
6. Проверяем, что все работает корректно. Добавляем в файл hosts
запись формата IP example.com
IP
— адрес вашего сервераexample.com
— адрес сайта
Как найти файл hosts
в разных ОС — рассказали в документации →
Добавляем сайт на Python с Django
Действия немного отличаются от предыдущего раздела: нужно выполнить дополнительные настройки, а в разделе «Конфигурация ПО» — включить компоненты nginx, Python и MySQL.
Как подготовить и настроить панель ispmanager к работе Django-проекта — подробно рассказали в документации →
Если есть вопросы — приходите в телеграм-сообщество ispmanager →
Python в панели для скриптов и ботов
Как разместить скрипт Python в ispmanager, чтобы запускать его по cron
→
Используем сущность «Сайт» — так мы никогда не забудем название Python-среды, но получим дополнительные записи в разделе «Сайты». Записи влияют на число доступных сайтов — их количество сократится. Дополнительно будет визуальный интерфейс для установки пакетов вместо консоли.
Скрипт размещаем так же, как и сайт на Python в ispmanager. Разница только в одном — загружаем скрипт, а не файлы сайта.
Создаем среду самостоятельно. Название Python-среды можно забыть, потому что оно будет только в файловом менеджере. Дополнительной записи в разделе «Сайты» не будет — количество доступных сайтов в лицензии ispmanager не поменяется.
Как разместить скрипт вручную:
1. Включаем Python → переходим в shell-клиент.
2. Создаем окружение с помощью команды:
/opt/ispmanager/pythonВЕРСИЯ/bin/pythonВЕРСИЯ -m venv
ВЕРСИЯ
— нужная версия Python.
Имя-вашего-окружения
— имя окружения.
3. Активируем окружение, если вам нужно работать внутри него.
Активируем с помощью команды:
source имя-вашего-окружения/bin/activate
4. Устанавливаем библиотеки.
Используем команды:
pip install имя-библиотеки после активации окружения
или
pip3 install имя-библиотеки после активации окружения
Как выглядят команды в shell-клиенте:
5. Загружаем файлы на сервер. Сохраняем путь до скрипта — он понадобится для запуска.
6. Запускаем скрипт с помощью команды:
имя-вашего-окружения/bin/python3.11 путь-до-файла
Используем cron
планировщик, если нужно сделать запуск автоматическим.
Как выглядит новое задание для cron
планировщика:
Обращаемся к другой панели по API
Ispmanager поддерживает работу по API с помощью Python — удобно обращаться к скриптам и приложениям на другом сервере. Структура запросов к API одинаковая, независимо от языка.
Структура запроса:
http(s)://адрес:порт/ispmgr?авторизация&func=функция&параметры&out=тип-вывода
Какие значения указываем в запросе →
«Авторизация»:
тип авторизации, в случае с запросами по API
уникальный номер сессии
параметр
authinfo
ключ авторизации — используется для перенаправления пользователя из другой системы без экрана авторизации
Подробнее о методах авторизации рассказали в документации →
В примере используем authinfo
— метод подойдет, когда взаимодействовать с панелью нужно один раз, потому что передается логин и пароль.
«Func» — нужная нам функция. С помощью функций можно выполнять операции с сущностями: показывать список, редактировать, создавать, выключать или включать.
Где найти полный список функций:
В панели — через команду в консоли:
/usr/local/mgr5/sbin/mgrctl -m ispmgr -i
Что делать, если не нашли нужную функцию:
1. Указываем в shell-клиенте команду:
tail -f /usr/local/mgr5/var/ispmgr.log | grep Request
2. Выполняем нужную задачу в интерфейсе панели.
3. Возвращаемся в shell-клиент — там найдем список вызванных функций.
«Параметры» — параметры функции. Обычно, параметры уточняют, к какой именно сущности мы обращаемся. Список находится в документации или его можно получить с помощью команды:
tail -f /usr/local/mgr5/var/ispmgr.log | grep Request
«Out» — тип вывода. В большинстве случаев используется json
или xml
Полный список форматов и их описание хранятся в документации
Можно сделать свой формат вывода — подробное руководство в документации
Важно: ispmanager поддерживает только методы GET и POST.
Для работы с API ispmanager с помощью Python подойдет любая библиотека, работающая с запросами. Для примера используем стандартную библиотеку requests
Как выглядит запрос:
Import requests
Api_request = requests.request(‘get’, ‘https://domain.com:1500/ispmgr?authinfo=LOGIN:PASS&func=wireguard.user&out=xml’
Ответ выглядит так:
К другим функциям запросы формируются по такому же принципу.
Обращаемся к другой панели через утилиту mgrctl
Обращаться напрямую к панели через утилиту удобно, когда скрипт расположен на том же сервере, что и панель. Запрос через mgrctl
формируется одинаково и не зависит от его содержания, как и в случае с API.
Структура запроса:
/usr/local/mgr5/sbin/mgrctl -m ispmgr [функция] [параметры]
функция — одна из списка функций панели
параметры — параметры функции
Для mgrctl
не нужна авторизация, потому что мы обращаемся к панели внутри сервера. Дополнительно нам нужна библиотека subprocess
— просто добавить строчку выше в Python не получится.
Как выглядит запрос:
Import subprocess
subprocess.run([url], shell=True)
url
— полная команда дляmgrctl
, например:
‘/usr/local/mgr5/sbin/mgrctl -m ispmgr wireguard.user.suspend elid=elid sok=ok’
shell
— параметр для использования оболочки. Если значение отличается отTrue
, то запрос не будет работать корректно.
Если вам понравилась статья, то подписывайтесь на наш телеграм-канал, чтобы не пропустить другие полезные материалы.
Полезные материалы по теме в нашем блоге на Хабре
Как с помощью Python и Google Sheets интегрировать «Яндекс Метрику» в ispmanager