Уже не первый раз меня спрашивали о том, как разместить своего бота на сервере и запустить его. В этой статье, я постараюсь коротко и ясно объяснить об этом. Но делать я это буду на бесплатном хостинге — Heroku.
Я разбил статью на 5 глав. Как я сказал ранее, статья будет короткой. И с помощью этой навигации будет проще ориентироваться по требуемой информации.
Статью о том, как написать своего Telegram-бота на NodeJS я уже писал. Думаю я объяснил там всё достаточно понятно. Изучить её, если у вас еще нету бота и вы хотите его разработать на NodeJS. Если вы написали своего бота не на JavaScript, то можете пропускать эту часть и приступать ко второй главе.
Я люблю этот сервис за то, что я могу протестировать свои проекты в режиме «продакшн». Это дает мне гарантию, что мой проект будет работать стабильно, когда я его запущу в «боевом режиме».
Особой разницы в размещении бота на Heroku или на отдельном сервере нету. Тут всё достаточно просто.
Придумайте название своему проекту. Название должно быть уникальным. Выбор региона не принципиален.
После создания проекта, вам будет предложены варианты деплоя (размещения) вашего проекта на Heroku.
Тут есть несколько вариантов. Я опишу только первые два.
Я буду пользоваться первым вариантом.
Следуя простой инструкции, указанной в разделе \"Deploy\", можно загрузить свой проект на сервер Heroku.
1heroku login 2
1cd my-telegram-bot 2
1git init 2heroku git:remote -a archakov-im-telegram-bot 3
Первая — инициализирует Git в вашей папке. Вторая — установит ссылку на репозиторий Heroku, для деплоя (размещения) вашего проекта на сервере.
Когда внесли все правки и убедились, что всё должно работать нормально, создайте в папке с вашим проектом — Procfile. Без расширения, просто - Procfile.
Внутри этого файла, вам нужно указать команду, которая будет выполняться при запуске вашего проекта на Heroku. То есть, Heroku должен знать, что ему нужно запускать. В файле Procfile указана соответствующая команда, которая запустит бота.
1web: node index.js 2
В моем случае, это npm start
. Так как у меня код написан на ES6, мне нужно конвертировать ES6 в ES5 с помощью Babel. И только после этого, у меня запускается команда запуска бота, типа: node index.js
.
Почти готово. Вам осталось теперь просто запушить вашего бота на сервер Heroku и запустить бота.
1git add . 2git commit -m \"init\" 3git push heroku master 4
Если вам лень каждый раз вбивать эти команды, пропишите в package.json в scripts, следующую команду:
1\"scripts\": { 2\"deploy\": \"git add . && git commit -m \'fix\' && git push heroku master\" 3} 4
Если же бот не запустился после пуша, выполните последнюю команду для запуска бота на Heroku и готово!
1heroku ps:scale web=1 2
Тут тоже достаточно всё просто. Если вы не хотите публиковать своего бота на GitHub\'e, вы можете использовать BitBucket.
Регестрируемся. Создаем репозиторий, нажав на плюсик слева.
Называем репозиторий как хотим, тут всё так же, как и на GitHub.
После чего, заходим так же в свой проект с ботом. И добавляем в Git, ссылку на этот репозиторий.
1cd my-telegram-bot 2git remote add origin git@bitbucket.org:Archakov06/archakov-im-telegram-bot.git 3
У вас должна быть другая ссылка на репозиторий. Кликните на \"I have an existing project\" и ниже указана команда с вашим репозиторием.
Пушим всё на BitBucket репозиторий. На своём сервере клонируем репозиторий с BitBucket и любые изменения просто скачиваем командой:
1git pull origin master 2
После того как вы склонировали репозиторий и установили все зависимости на вашем сервере, вам остается запустить бота в фоновом режиме — Запуск Node.js в фоновом режиме.
1nohup nodejs index.js > /dev/null 2>&1 & 2ps aux | grep node 3
Или же есть еще два варианта запуск бота:
Если у вас бот не запустился, проверьте логи, командой heroku logs
.
Если вы рассчитываете на халяву от Heroku и ожидаете, что ваш бот будет хоститься на их сервере, то мне придётся вас огорчить. Ваш бот будет работать 30 секунд, после чего отключается. Переодично включается, когда как. В общем, Heroku подходит для теста бота в «боевом режиме».
Это уже 6 или 7 статья по разработке телеграм ботов. Думаю, мой блог скоро превратится в \"блог о программировании телеграм ботов\". Что самое странное, я написал больше 55 статей про разные темы, но 90% запросов из поисковых систем, связаны с телеграм ботами. Тем не менее приложу к этой статье несколько своих статей по Telegram.