Categories: Python Блог

Загрузка телеграм бота на сервер. Подробные шаги загрузки файла *.py на бесплатный сервер PythonAnywhere

Самым сложным для меня, как для новичка, была загрузка телеграм бота на сервер, чтобы он начал полноценно работать. В этой статье хочу рассказать подробные шаги моего самого первого опыта. Для теста я выбрала бесплатный сервер.

Существует множество бесплатных виртуальных серверов для тестирования ботов. Вот некоторые из них:

  1. PythonAnywhere – облачный хостинг для приложений Python. PythonAnywhere предоставляет бесплатный тарифный план, который позволяет развернуть одно приложение Python.
  2. Kamatera – есть тестовый период на месяц. Отличное решение для начального теста, а после пролноценной работы.
  3. Heroku – платформа для развертывания и хостинга приложений, которая предоставляет бесплатный тарифный план. Он позволяет развернуть приложение на серверах Heroku и бесплатно запустить до 5 приложений.
  4. Amazon Web Services (AWS) – облачная платформа, которая предоставляет бесплатный тарифный план, включая Amazon EC2 (виртуальные серверы), Amazon S3 (хранилище данных) и другие сервисы.
  5. Google Cloud Platform (GCP) – облачная платформа, которая также предоставляет бесплатный тарифный план, включая Google Compute Engine (виртуальные серверы) и другие сервисы.
  6. Microsoft Azure – облачная платформа, которая также предоставляет бесплатный тарифный план, включая виртуальные машины и другие сервисы.

PythonAnywhere

Для первого тестирования своего бота я выбрала PythonAnywhere. Регистрация интуитивно понятная.
Примечание: в бесплатном тарифе очень мало процесорных минут, так что этот тариф больше подходит для тестов, а не для полноценной работы. Для полноценной работа я рекомендую платные сервера https://zomro.com/

ШАГ 1. Начало работы. Установка виртуальной среды

1. Перейдите в Dashboard и запустите консоль. Для этого нажимаем New Console – $ Bash

2. Выполните следующую команду в консоли, чтобы установить инструмент virtualenv (инструмент для создания виртуальной среды):

pip3.8 install --user virtualenv

3. Создайте виртуальную среду. По умолчанию, виртуальная среда создаётся в папке /home/ваше_имя_пользователя/. В этом случае у вас будет возможность установить необходимые пакеты и зависимости для каждого проекта в отдельности, не мешая друг другу. Также это упростит управление проектами, потому что все ваши проекты будут находиться в одном месте.
Эта команда создаст виртуальную среду с именем myenv, используя Python 3.8. Вы можете изменить имя и/или версию Python, заменив myenv и python3.8 соответственно.

virtualenv --python=python3.8 myenv

Или

python3.8 -m venv myenv

Данный скриншот показывает,что все прошло успешно.

Результат в консоли после установки виртуальной среды.

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

source myenv/bin/activate

Вы увидите что теперь Вы нахоитесь внутри виртуальной среды. Строка будет начинаться с имени вашей виртуельной среды.

ШАГ 2. Установка библиотек и загрузка телеграм бота на сервер.

Если вы используете бесплатный аккаунт, то доступ к SFTP в нем не доступен.
Поэтому Вам нужно будет обойтись только встроенным файловым менеджером PythonAnywhere.
Он находится по ссылке: https://www.pythonanywhere.com/user/your-username/files/

Если у Вас платный аккаут, тогда Вы можете подключится по SFTP к PythonAnywhere. Для этого Вы можете скачать и установить FileZilla и ввести следующую информацию:

  1. Имя хоста (Hostname) – это обычно указывается в формате your-username.pythonanywhere.com. Вместо your-username нужно указать свой логин на PythonAnywhere.
  2. Имя пользователя (Username) – это также ваш логин на PythonAnywhere.
  3. Порт (Port) – по умолчанию используется порт 22.
  4. Пароль (Password) – это пароль от вашей учетной записи PythonAnywhere.

После этого создайте папку для вашего проекта, у меня это weatherbot и загузите в папку нужные файлы.
Все зависимые библиотеки я установила с файла requirements.txt, который просто создала в своем проекте на компьютере. Вот мои шаги для установки библиотек из файл requirements.txt.

Создаем файл requirements.txt

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

pip install pipreqs

В папке проекта запустить

pipreqs . --encoding=utf-8

Файл requirements.txt создан. Его тоже загрузите на сервер PythonAnywhere

Для установки нужных библиотек, перейдите в консоль (раздел “Consoles” в PythonAnywhere), и выполните следующую команду внутри активированной виртуальной среды:

pip install -r requirements.txt

Это установит все библиотеки, перечисленные в файле requirements.txt. Если в процессе установки возникнут ошибки, проверьте, что версии библиотек в вашем файле requirements.txt совместимы со средой Python на сервере.

Консоль после загрузки всех зависимых библиотек

ШАГ 3. Запуск проекта.

Все готова для запуска телеграм-бота на бесплатном сервере. Тут все просто.
Запускаем консоль.
В консоли поочереди набираем
1. Запуск виртуальной среды (где myenv – ваше имя виртуальной среды)

source myenv/bin/activate

2. Переходим в папку проекта (где folder_bot папка вашего бота)

cd folder_bot

3. Запуск файла бота (где main.py файл вашего бота)

python3 main.py

Иииииииии……если Вы на бесплатном тарифе у Вас может быть ошибка:

Aiohttp client throws an error: ClientConnectorError: Cannot connect to host api.telegram.org:443 ssl:default

Чтобы не было этой ошибки в рамках бесплатного тарифа нужно в код вашего бота добавить следующее:

PROXY_URL = "http://proxy.server:3128"

### в строку инициализации бота добавить прокси proxy=PROXY_URL
bot = Bot(token=tg_bot_token, proxy=PROXY_URL)

После того как вы внесли изменения в файл бота, его снова нужно загрузить на сервер, вместо предыдущего и повторить шаги 1-3 для запуска бота.

Вот теперь действиетльно все!
Ваш бот работает!!!!

Recent Posts

  • Excel

Как правильно открыть CSV с многострочными ячейками в Excel

Если при открытие csv файла с помощью excel У все поехали ячейки - это простой… Read More

% дней назад
  • Python

Загрузка проекта на Github и Автодеплой на сервер

Простые шаги как происходит Загрузка проекта на Github и Автодеплой на сервер Сделайте работу проще! Read More

% дней назад
  • Python
  • Полезная минутка

Миграция базы данных в проектах Python

Миграция базы данных - помогают с этим библиотеки SQLAlchemy и Alembic. Read More

% дней назад
  • Python

Команды Git – Шпаргалка по основным командам Git

Основные Команды Git, которые точно пригодятся. Сохрани себе шпаргалку Git Read More

% дней назад
  • Python

Установка PostgreSQL на сервер Ubuntu и подключение через pgAdmin

Установка PostgreSQL на сервер Read More

% дней назад
  • Полезная минутка

Как создать PrimaryKey для таблицы в PostgreSQL

Как создать PrimaryKey в талице базы данных SQL [РЕШЕНО] Ошибка relation tablename_id_seq doesn't exist Read More

% дней назад