Как настроить Python скрипт на хостинге

Условия

В примере:

  1. ОС Windows 7 или выше
  2. Используется хостинг с Linux
  3. Требуемая версия Python 3.7.6. Хостинг имеет базовые настройки, где возможно выбрать версию Python
  4. У целевого хостинга используется ISP Manager
  5. Доступ через SSH клиент подключение к хостингу Putty

Настройка в панели управления доменом

  1. Для настройки нужно перейти к Панели управления хостингом, выбрать целевой хостинг.
  2. Перейдите в настройки хостинга в ISP Manager в разделе WWW/WWW-домены. Установить галочку на CGI-скрипты и Версия Python в данном случае значение Python-3.7.6 Нажать OK, чтобы применить изменения.
ISP Manaher hosting config

SSH клиент подключение

Есть хостинг, нужно настроить на нем Python:

  1. Подключение происходит через приложение Putty, которое необходимо установить.
  2. Подключитесь к хостингу по SSH для чего необходимо запустить приложение Putty, прописать в поле Host Name IP адрес целевого хостинга (его можно узнать на странице управления хостингами) и нажать кнопку Open
  3. При первом подключении к серверу появится окно «Предупреждение безопасности PuTTY». Нажмите кнопку  Да. Появится окно для набора команд, его мы будем называть Терминал, как в Linux системах
  4. Далее необходимо пройти логин операцию. Введите логин хостинга в первой строке со значением  «login as:» и нажмите кнопку Enter для выполнения команды (здесь выполняется команда, Enter выполняет команду, далее подразумевается, что выполняя команду вы будете нажимать эту кнопку ). Далее следует строка: “<username>@<ip adress>’s password:”  пишем команду пароль к учетной записи. Как только вы подключитесь по SSH, вы окажетесь в домашнем каталоге вашего хостинга.
Putty Alert
Putty terminal

5. Создадим Виртуальное окружение, для чего, надо перейдите в домашний каталог вашего пользователя с помощью команды: cd ~
Убедитесь, что вы в нужном каталоге, выполнив команду: 
pwd
Для этого Виртуальное окружение необходимо создать в одной из существующих папок с нужной версией Python. Эту песочницу мы планируем использовать для вашего проекта. Версия Python должна совпадать со значением устанавливаем в пункте 2.
Чтобы узнать доступные версии Python, выполните команду:
ls -la /opt/python/*/bin/python
Для создания виртуального окружения выполните команду:
/opt/python/python-3.7.6/bin/python -m venv pyth3
Где pyth3 – это название для Виртуального окружения

Putty Python folders

6. Активируйте ваше виртуальное окружение с помощью команды:
source pyth3/bin/activate
Если слева от строки ввода команды появилось название вашего виртуального окружения pyth3, значит оно активировалось.

7. После активации можно использовать команды формата pip install <app name>, для установки набора необходимых библиотек, согласно инструкциям по установке. Библиотека pip, в данном случае, уже установлена.
8. После всех операций, в ISP Manager в Менеджере файлов можно найти папку /pyth3/

Важно: если вы несколько раз подряд ввели неправильный пароль и сервер заблокировал соединение по SSH, обычно блокируется на 2 часа или более
Важно: Если лень набирать используйте буфер обмена: для вставки в Терминал используйте Shift+Insert
Важно: Обратите внимание: многие из  команд выполнить на виртуальном хостинге не получится (установка и удаление пакетов, монтирование файловых систем и др.), так как у вас нет root-доступа.
Важно: Для нашей версии Python 3.7.6 будет свой каталог и это называется — Виртуальное окружение. Это как песочница для работы с нужной версией Python. Такой подход гарантирует, что в песочнице будет нужная версия Python и строго определенный набор библиотек.
Важно: команда для контроля, какая версия Python в активированном виртуальном  окружении:
python --version
Важно: Если в вашей системе обновилась версия Python, то виртуальное окружение иногда тоже нужно обновить. Но обновлять мы будем папку, где находится библиотека Pythobn, на которую мы ссылаемся. Для этого вызываем venv аналогично созданию окружения, добавив ключ –upgrade команда:
pyvenv --upgrade /opt/python/python-3.7.6/bin/python

Проверяем работоспособность Python скрипта

1. Для тестирования необходимо создать файл test.py с кодом:

print('Hello')

код выводит в консоль текст Hello

2. Файл по ftp заливаем на хостинг в папку /pyth3/bin/

3.  Для работы в Менеджере файлов нужно найти файл и установить (разрешить) ему атрибуты на Исполнять, Писать и Читать по схеме -rwxr-xr-x (установить галочку и желательно снять галочки для атрибутов не члены групп или владелец).

4. Исполнить файл можно в режиме Терминала (Консоли), например, через Putty.

С активацией:

Логинимся и активируем каталог со средой команда:

source pyth3/bin/activate

Исполняем файл (он лежит в bin папке) команда:

pyth3/bin/python pyth3/bin/test.py

Без активации:

Логинимся и сразу исполняем файл командой:

pyth3/bin/python pyth3/bin/test.py

В итоге мы увидим в терминале сообщение: Hello

Установка библиотек в Python

Вам точно не будет хватать базового набора библиотек в Python. Необходимо будет их подключить, для чего:

1.Логинимся через Putty на Терминал и активируем каталог наш со средой команда:

source pyth3/bin/activate

2. Вводим в Теримнале команду :

pip install <app name>

, где <app name> это имя библиотеки (сборки). Действуя по инструкциям по установке сторонних библиотек. Библиотека pip в данном случае уже установлена.

Запуск скрипта по расписанию Python скрипта

Теперь необходимо выполнять скрипт автоматически периодически, например, ежедневно. Для примера будем использовать уже созданную нами папку /pyth3/с Виртуальным окружением, но команда будет выполнятся без активации.

  1. В панели ISP Manager выберите в разделе Главное пункт Планировщик
  2. Планировщик кнопка Настройки здесь заполните email адрес, куда будут приходить письма с отчетом о выполнении (текст из консоли исполняемого приложения)
  3. В меню Планировщик кликаем кнопку Создать
  4. Заполняем поля: Команда, Описание и Выполнять Каждый час команда:
    pyth3/bin/python3/var/www/u0000000/data/pyth3/bin/test.py
    Описание: test
    Выполнять: каждый час или выберите другие интервалы
  5. Жмем кнопку OK и все готово
  6. Чтобы узнать, когда выполнился наш скрипт загляните в указанную выше почту

Важно: команда содержит в себе путь к исполняемому скрипту, он в вашем случае может быть другим

Важно: значение в команде pyth3/bin/python3 это путь к файлу ядра Python, фактически же ядро находится в другой каталог по адресу /opt/python/python-3.7.6/bin/python, а это ссылка на среду из Виртуального окружения. Если в команде использовать прямую путь к ядру может возникнуть ошибка исполнения, так как мы потеряли связку с дополнительным набором библиотек.

Важно: в консоли, если запросить текущую версию Python командой:

python --version

то в ответ мы получим значение 2.7.15 это ядро по умолчанию.
Код примера и библиотек будет работать на версии 3 и выше, поэтому код запускается в Виртуальным окружении, где мы сами определяем, какую версию мы будем использовать.