Привет!
Вам необходимо пройти регистрацию что бы скачивать с нашего форума различные ресурсы и задавать вопросы.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.
Mr_vAHoooE
Писатель
Приветствую тебя уважаемый пользователь Na-Sha.Ru
Многие не знаю как поставить бота на сервер VDS/VPS для его работы 24/7
В данной статье мы рассмотрим это и научимся ставить бота на сервер
Для примера будем использовать комфортабельный и удобный ( на мой взгляд ) хостинг VDSina (Кликабельно)
Если есть желание скидки в 10% — вот партнерка Нажми на меня (Кликабельно)
1. Регистрация на VDS/VPS сервере
- Для начала «Регистрируемся» и заходим в «Личный кабинет».
- Нажимаем заветную кнопку «Создать сервер»
- Выбираем «Операционную систему» мы выбираем «Ubuntu 22.04».
- Выбираем «Тип сервера» мы выбираем «Стандартный» ( 1гб — Память, 30гб — Хранилище, 1core — Процессор, 32ТБ — трафик)
Зажмотили бабок - Выбираем локацию, я выбираю «Нидерланды» дабы у них политика по проще, и на законы России им фиолетово
- Выбираем «Автоматическая резервная копия» мне она не нужна и я отключаю эту функцию
- Дополнительный настройки сервера (hostname, ssh-key) я так-же отключаю данный параметр
- Нажимаем «Создать»
- Заходим в «Мои сервера»
- Находим «Наш сервер»
- Выписываем данные ( После его установки )
- IP адрес сервера
- Пользователь
- Пароль
3. Что бы войти на сервер есть много программ, самая распространенная это PYTTY
4. Рассмотрим 3 способа установки скриптов на сервер
4. Рассмотрим 3 способа установки скриптов на сервер
- Скачиваем и устанавливаем программу MobaXterm
- Нажимаем «Session», «SSH», в «Remote host» указываем Имя хоста(айпи) и жмём «OK».
- Возле текста «login as» вводим Имя пользователя, далее вводим пароль и подключаемся к серверу.
- Перемещаем папку с вашим скриптом или ботом в левое окно.
- Скачиваем и устанавливаем программу WinSCP
- Открываем «Параметры>Настройки>Интеграция>Программы», указываем путь к установленному раннее PuTTy и ставим галочки на «Помнить пароль сессии и передавать его PuTTy (SSH)» и «Открывать telnet-сессии в PuTTy для сессий FTP».
- Нажимаем на «Новое соединение», далее «Новое подключение», указываем имя хоста (айпи), имя пользователя, пароль и жмём «Войти».
- Перемещаем папку с вашим скриптом/ботом в правое окно.
- Жмём на кнопку открытия PuTTy окна.
- Скачиваем и устанавливаем программу FileZilla
- Указываем Хост (sftp://ВашАйпи) , имя пользователя, пароль и жмём «Быстрое соединение».
- Перемещаем папку с вашим скриптом или ботом в правое окно.
- Открываем ранее установленную программу PuTTY.
- После запуска, в поле «Host Name (or ip address)» указываем ранее полученный наш айпи адрес и нажимаем «Open».
- После открытия консоли, вводим своё имя пользователя (login as) и пароль (password). (При вводе пароля, символы не будут отображаться, не пугайтесь)
5. Теперь нам необходимо установить сам Python, Библиотеки, Утилиты.
(вместо python3.10, можете указать нужную вам версию питона)
sudo apt-get update sudo apt-get upgrade -y[B] (если вылезет окно, жмём enter)[/B] sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev curl software-properties-common -y sudo apt install software-properties-common sudo add-apt-repository ppa:deadsnakes/ppa (если вылезет окно, жмём enter) sudo apt-get install screen -y sudo apt-get install python3.10 -y sudo apt-get install python3-pip -y sudo apt-get install python3.10-dev -y sudo apt-get install python3.10-distutils -y python3.10 -m pip install pip --upgrade python3.10 -m pip install distlib --upgrade python3.10 -m pip install setuptools --upgrade
python3 -m pip install Название библиотеки
— Чтобы скрипт работал 24/7 и не выключался, нам нужно использовать раннее установленную утилиту screen.
Вводим команду screen -S любоеназваниесессии и жмём Enter.
После открытия окна screen, переходим в директорию со скриптом и прописываем:
— Скрипт запущен, чтобы свернуть окно screen, нажмите кнопки: CTRL + A + D
— Теперь можете смело закрывать PuTTy окно.
Наш скрипт успешно запущен
В: Как остановить/перезагрузить скрипт?
О: Прописываем команду screen -ls и получаем список скринов. Слева указаны айди скринов.
Прописываем screen kill АйдиСкрина далее запускаем новый скрин по инструкции выше.
В: При попытке подключения к screen’у пишет «There is no screen to be resumed matching».
О: Используйте screen -xr АйдиСкрина, вместо screen -r АйдиСкрина.
В: Как свернуть активный screen или выйти в главное меню?
О: Нажимаем сочетание клавиш CTRL + A + D.
В: Хочу установить несколько скриптов.
О: Выходим в главное меню если мы находимся в уже открытом screen’е. Прописываем команду screen -S ЛюбоеНазваниеСессии для открытия нового screen окна и запускаем свой скрипт.
В: Как сделать чтоб скрипт работал пока не упадет дедик или я сам его не закрою?
О: Когда запускаете скрипт вместо «python3 main.py» поставьте в конце символ «&» чтоб получилось «python3 main.py &»
Так-же хотел бы сказать что вместо утилиты «screen» мы можем использовать «Виртуальное Окружение»
Для каждого скрипта будут установлены свои библиотеки, они не будут конфликтовать друг с другом.
P.S: Например, если скрипт № 1 работает на библиотеке старой версии, а скрипту №2 нужна точно такая же, но новой версии.
Без использования вирт. окружения вы не сможете установить одну и ту же библиотеку 2-х разных версий.
Как поставить python скрипт бота на vds vps сервер
Данная статья рассматривает запуск Python-бота на VDS-сервере с Ubuntu 18.04. В статье опишем установку и настройку необходимых компонентов, а также создание службы systemd для непрерывной работы бота.
Первым шагом необходимо установить git для удобной работы с проектами:
Далее настроим SSH-ключ по статье «Как настроить SSH-ключ для GitHub», чтобы иметь возможность подключаться к удаленному репозиторию.
В Ubuntu 18.04 по умолчанию стоит Python 3.6.9. Поскольку наш бот написан на версии 3.9, то выполним ее установку.
add-apt-repository ppa:deadsnakes/ppa
Выполним установку Python 3.9 командой:
Она должна быть 3.9.16, как показано на скриншоте:
Однако предыдущая версия 3.6.9 по-прежнему доступна, и при запуске команд с использованием Python 3 будет использоваться именно она, а нам нужна более новая версия. Чтобы изменить интерпретатор по умолчанию, необходимо сначала проверить, какие версии Python уже используются в системе, для указания корректных путей далее по инструкции, выполнив эту команду:
Результат выполненной команды представлен ниже:
Для использования новой версии 3.9.16 вместо 3.6.9 добавим альтернативы:
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2
Проверим результат выполненных команд:
update-alternatives --list python3
Для настройки выбора версии выполним команду config:
update-alternatives --config python3
И в запросе укажем номер интерпретатора Python, который будет использоваться по умолчанию, как показано на скриншоте:
Теперь для команды Python3 будет всегда использоваться версия 3.9.16. Проверим ее:
Вывод работы команды представлен на скриншоте ниже:
Установим pip3 при помощи следующей команды:
И дополнительно пакет «python3.9-distutils»:
apt install python3.9-distutils
Установим виртуальное окружение:
Дополнительно установим venv lib для Python 3.9
apt install python3.9-dev python3.9-venv
В целях безопасности для запуска нашего бота создадим нового пользователя:
Добавим нашего пользователя с именем «PYbot» в группу «sudo»:
После создания нового пользователя необходимо перезайти на VDS-сервер под созданной учеткой.
Далее в корень папки PYbot склонируем свой репозиторий при помощи команды:
git clone git@github.com:Deimos715/python-bot.git
Перейдем в папку «python-bot»:
Добавим в наш проект виртуальное окружение:
Если необходимо выполнить его деактивацию, команда будет следующей:
Импортируем все зависимости нашего проекта из файла requirements.txt:
pip3 install -r requirements.txt
Наш бот почти установлен, запускаем его:
Хотя бот будет функционировать, он перестанет отвечать после завершения сеанса работы с VDS-сервером. Чтобы решить эту проблему, мы воспользуемся системой инициализации systemd, которая широко используется в дистрибутивах Linux. Если вам интересно узнать больше о systemd, вы можете изучить наши статьи «Как создавать файлы модулей systemd» и «Как работать с systemd».
Для обеспечения непрерывной работы бота и автоматического перезапуска в случае сбоя, мы создадим специальную службу:
nano /lib/systemd/system/bot.service
Со следующими настройками:
[Unit] Description=python-bot After=network.target [Service] Type=simple User=PYbot ExecStart=/PYbot/python-bot/venv/bin/python3 /PYbot/python-bot/bot.py ExecReload=/PYbot/python-bot/bot.py WorkingDirectory=/PYbot/python-bot/ KillMode=process Restart=always RestartSec=5 [Install] WantedBy=multi-user.target
Описание важных строек службы:
— Description — описание службы.
— User — пользователь из-под которого запущена служба.
— ExecStart и ExecReload — это команды для запуска и перезапуска бота.
— WorkingDirectory — путь к папке в которой файл запуска bot.py.
Для запуска службы выполним 2 команды:
systemctl enable bot.service
systemctl start bot.service
После запуска наш бот будет функционировать без перерыва даже после закрытия терминала. Кроме того, после перезагрузки системы бот автоматически запустится через 5 секунд в соответствии с параметром RestartSec.
Для проверки статусов и логов можно выполнить следующие команды:
systemctl status bot.service
Как запустить Python Telegram бота на VPS
Приветствую всех. Из этой статьи вы узнаете как запустить Telegram бота на виртуальном сервере, и настроить службу для его авто запуска и перезапуска.
Телеграм бот
#main.py import telebot bot = telebot.TeleBot("ТОКЕН") @bot.message_handler(func=lambda message: message.text.lower() in ['привет', 'здравствуйте']) def send_welcome(message): bot.reply_to(message, "Здравствуйте!") @bot.message_handler(func=lambda message: True) def echo_all(message): bot.reply_to(message, 'Я тебя не понимаю(') bot.infinity_polling()
Виртуальный сервер
Для демонстрации я буду использовать виртуальный сервер от Beget стоимостью 210 рублей в месяц. Вы можете использовать другого хостинг провайдера, или выбрать другую конфигурацию, в зависимости от вашего проекта.
Подключение к виртуальной машине
После того как вы создали VPS у вас откроется панель управления, где вы можете скопировать IP адрес машины и подключаться к ней по SSH.
Для этого можно использовать программу PuTTY или клиент OpenSSH, который входит в состав Windows 10. Для подключения по SSH выполните следующую команду:
Подготовка сервера
После того как вы подключились к серверу, выполните команды которые обновят списки, и устаревшие пакеты до последней версии.
sudo apt update sudo apt upgrade
Загрузка и запуск бота
Перейдите в каталог home и создайте папку для вашего проекта выполнив команды.
cd /home mkdir ramziv_bot cd ramziv_bot
Зайдите панель управления VPS и откройте Файловый менеджер.
Загрузите файлы вашего проекта на сервер, в моем случаи это только один файл main.py .
Установите зависимости вашего проекта, и запустите бота.
Примечание: Ubuntu 20.04 поставляется с установленной Python 3.8 из коробки, если для вашего проекта нужна другая версия, установите ее или используйте другую версию дистрибутива.
pip install pyTelegramBotAPI python3 main.py
Теперь перейдите в Телеграм и протестируйте работу.
Авто запуск и перезапуск телеграм бота
Создайте systemd службу для бота.
sudo nano /lib/systemd/system/ramziv_bot.service
[Unit] Description=Ramziv - Telegram Bot After=syslog.target After=network.target [Service] Type=simple WorkingDirectory=/home/ramziv_bot/ ExecStart=/usr/bin/python3 /home/ramziv_bot/main.py RestartSec=60 Restart=always [Install] WantedBy=multi-user.target
Выполните эти две команды что бы запустить службу.
sudo systemctl enable ramziv_bot sudo systemctl start ramziv_bot
Ваш бот запушен. Перейдите в Телеграм и убедитесь в этом.
Заключение
Ваш бот будет всегда запускаться при старте системы, и перезапускается при возникновении ошибки. Для примера вы можете специально вызвать исключения в одной из функций обернутой обработчиком, и отследить ее в журнале командой:
sudo journalctl -u ramziv_bot.service #Вывод #Jun 13 12:35:31 objmnuqxoa python3[1069]: File "/home/ramziv_bot/main.py", line 7, in send_welcome #Jun 13 12:35:31 objmnuqxoa python3[1069]: number = 1/0 #Jun 13 12:35:31 objmnuqxoa python3[1069]: ZeroDivisionError: division by zero