Как запустить бота на сервере

Небольшая статья о том, как заставить бота работать не на вашем компьютере, а где-то еще в интернете, круглосуточно, с хорошим постоянным интернет-соединением. Зачем? А что бы не приходилось комп держать постоянно включенным. Поехали.

Шаг первый. Арендуем выделенный сервер.

Я пользуюсь DigitalOcean.com, т.к. мне нравится сервис и удобство пользования. Для работы бота достаточно аренды виртуального сервера за 5$ в месяц. Если зарегистрируетесь по моей ссылке (если не работает, то попробуйте эту), то сайт предоставит вам в долг 10$, чего должно хватить на два месяца тестирования. Можно найти и другой VPS/VDS, в статье же будет рассмотрен запуск бота на VPS на базе Ubuntu.

Итак, регистрация. Тут нет ничего сложного. Переходим на сайт, и нажимаем SIGN UP:

Просят подтвердить почту - идем в свой почтовый ящик и подтверждаем

После этого сервис попросит вас указать данные карты, с которой 1го числа следующего месяца будет произведено списание средств. По-моему, необязательно что бы на ней были деньги, главное, что бы это была рабочая карта со сроком годности и т.п. 

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

Нажмите Create и выберите Droplets

Выбираете Ubuntu (какая там будет доступна на данный момент), и сервер за 5$ в месяц.

 

Ниже будет выбор страны базирования сервера, прочее, что вам пока что не нужно, проматывайте вниз и нажимайте зеленую кнопку Create

             Дроплет начнет разворачиваться и появится в списке дроплетов – дождитесь конца установки.

После окончания вам на почту придет информация о сервере – IP адрес, логин и пароль

Итак, дроплет создан, пора начать им пользоваться в наших целях.



Шаг второй. Подключение к серверу и смена пароля.

Так как сервер на базе Linux, то придется немного изменить свои привычки, и освоить кое-что новое. Нам понадобятся две программы, первая – консольный клиент putty (почувствуй себя хакером ;)) Качаем тут

(если не знаете, какую качать, качайте первую).

После скачивания и установки запускайте, и давайте подключимся к вновь созданному серверу. Программа запросит реквизиты для подключения. Укажите IP адрес, который вам прислали в письме, и нажмите Enter.

Появится черное окно, и запрос, доверяете ли вы этому серверу – нажимайте «Да».

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

От вас сразу же потребуют, что бы вы сменили пароль, так что

  1. Укажите текущий пароль (он не отобразится) Enter.
  2. Придумайте и введите новый пароль (он тоже не будет отображаться), Enter, и
  3. Еще раз укажите новый пароль. Запомните, а лучше запишите его!

Если пароль будет слишком простым, то система ругнется и попросит придумать новый.



Шаг третий – закинуть бота на сервер.

Тут нужна будет программа WinSCP. Скачать её можно отсюда https://winscp.net/eng/download.php.

Устанавливаем, запускаем (я указываю интерфейс коммандера, а не проводника), после запуска указываем IP адрес, пользователь – root, пароль – тот, что вы придумали на прошлом шаге. Нажимаем «Войти». Вас спросят, доверяете ли вы серверу, отвечайте «Да»

У вас будут открыты две панели – слева ваш компьютер, справа – ваш сервер. Нужно из левой панели в правую перетащить ваш файл с ботом. Найдите где там он у вас лежит, и мышкой перетащите – я уже перетащил:

В файле должны быть уже прописаны ключи и все такое. Если у вас несколько ботов, перетаскивайте всех, под разными названиями, конечно.



Шаг четвертый – запуск бота.

Возвращаемся в окно putty, что бы проверить работу бота. Если putty уже закрылось, то переподключитесь, указав уже новый пароль. Про старый в любом случаем уже можно забыть.

Итак, вы на сервере, для начала давайте проверим, что все работает как надо.

Выполните команду

python3.5 ./exmo.py

И вы должны увидеть что-то вроде:

 Нажмите Ctrl+C, что бы остановить бота. Он работает, но если вы сейчас закроете putty или выключите компьютер или отвалится интернет, то и бот перестанет работать. Поэтому бота мы будем запускать по другому.

Выполните команду

screen

Вы увидите окно с текстом, нажмите просто Enter

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

echo $STY

Если вернется строка с информацией, значит вы внутри виртуальной сессии.

Так что запускайте бота тут, в этой виртуальной сессии

python3.5 ./exmo.py

и он будет работать круглосуточно.

Проверьте, закройте окно putty и подключитесь заново. Ничего не происходит, бота нет?! На самом деле, он продолжает работать в фоне. Выполните команду

screen -ls

и вы увидите запущенные виртуальные сессии

Число в начале строки – это PID процесса. Что бы подключится к выбранному экрану, выполните команду

screen -r -d 2013

2013 надо будет заменить на ваше число, разумеется. И.. вы снова попадете к боту и можете посмотреть, чем он там занимается.



Дополнительно.

Что бы запустить несколько ботов, надо для каждого запустить свою сессию screen, и в каждой сессии запускать по боту. Т.е. упрощенно говоря, выполняете screen, Enter, python3.5 ./bot1.py, после чего закрываете putty (либо нажимаете Ctrl+A+D), и опять screen, Enter, python3.5 ./bot2.py и т.п.

Если требуется внести изменения в бота, то алгоритм будет следующим: Вы подключаетесь к сессии бота, как написано выше, нажимаете Ctrl+C, что бы его остановить, с помощью winSCP закидываете новую версию файла на сервер (или правите прямо там), и заново запускаете python3.5 ./exmo.py

UPD. Для того, что бы установить ta-lib и прочее, нужно выполнить эти команды:

apt install python3-pip
pip3 install numpy
wget <a href="https://l.facebook.com/l.php?u=http%3A%2F%2Fprdownloads.sourceforge.net%2Fta-lib%2Fta-lib-0.4.0-src.tar.gz&h=ATPy1uX8MkNUfNNuwmZMvPhNFlcDJmKCTrIGF5OCjs_80Lop71uo-JDFNcxMmvv5BrdO4ilxZxWrcMiFTPOlEAOblp5EB9Jzy-NB-F6h9fsxyWEcFEaSTZ7pppQ6BcoGEcKJl_D0ZFAA" rel="nofollow noopener" target="_blank">http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz</a>
tar -xvzf ./ta-lib-0.4.0-src.tar.gz
cd ./ta-lib/
./configure --prefix=/usr
make
make install
pip3 install TA-lib


Заключение

Геморрой, согласен) Но это если в первый раз делаешь. Зато потом это все работает как часы, не отъедает лишней памяти, не приходится ни за что переплачивать, позволяет паралелльно с ботом держать еще и свой сайт, да и кучу всего. В общем, дорогу осилит идущий, удачи вам в ваших начинаниях!


Это статья из цикла "Популярно о бирже"
Все статьи цикла:

Последнее изменение:


Крипто-кошельки для помощи и благодарности проекту:

Bitcoin адрес проекта: [[address]]

Перевод на сумму [[value]] BTC получен. Спасибо!.
[[error]]

Ethereum адрес проекта: [[address]]



Комментарии
11.11.2017 18:26:25
При закрытии putty и бот отключается. Делал всё по шагам.
ПроголосоватьПроголосовать
0 0
11.11.2017 18:32:02
Пишет cannot exxes и всё.
ПроголосоватьПроголосовать
0 0
11.11.2017 22:04:47
А что выводит команда
echo $STY
если выполнить её перед запуском бота?
И скопируйте текст ошибки.
Инструкция рабочая. Если хотите, пишите в фейсбук или на почту со скриншотами
ПроголосоватьПроголосовать
0 0
15.11.2017 21:05:52
root@ubuntu-512mb-nyc3-01:~# pip install numpy
The program 'pip' is currently not installed. You can install it by typing:
apt install python-pip
библиотеки не устанавливаются
ПроголосоватьПроголосовать
0 0
16.11.2017 13:16:43
Точно, обновил статью
ПроголосоватьПроголосовать
0 0
16.11.2017 08:42:37
Ув. Андрей, ваша реферальная ссылка (https://m.do.co/c/41ea66be21d8) не работает в брайзерах. Антивир её не пропускает, а браузер пишет:
Этот сайт не может обеспечить безопасное соединение
На сайте m.do.co используется неподдерживаемый протокол.
ERR_SSL_VERSION_OR_CIPHER_MISMATCH

Как по ней зарегиться?
ПроголосоватьПроголосовать
0 0
16.11.2017 13:19:20
Спасибо за информацию. Добавил в статью ссылку из комментария ниже - https://www.digitalocean.com/?refcode=41ea66be21d8
ПроголосоватьПроголосовать
0 0
16.11.2017 08:59:41
Я порылся в сети и нашел образец рефки, как правильно. Рефка Андрея будет такой:https://www.digitalocean.com/?refcode=41ea66be21d8
Она рабочая в отличии от той, которая в начале поста.
ПроголосоватьПроголосовать
0 0
16.11.2017 13:17:26
Ух ты, спасибо!
ПроголосоватьПроголосовать
0 0
17.11.2017 21:26:41
Андрей еще проблема такая на сервере 2 бота на полонекс и на битрекс за 3 дня лог файлы один 6 гб второй 3 гб как в логе оставить только выполненный цикл купил продал ну и дату?
ПроголосоватьПроголосовать
0 0
17.11.2017 21:46:25
Как вариант можно закомментировать всё ненужное, все вызовы функции log

аля
log("Получаем все неисполненные ордера по БД")
в
#log("Получаем все неисполненные ордера по БД")
ну или удалить их вообще
ПроголосоватьПроголосовать
0 0
18.11.2017 23:30:17
не получается установить талиб итд пишет E: Unable to locate package python3-pip
ПроголосоватьПроголосовать
0 0
19.11.2017 00:15:42
Это на DigitalOcean, Ubuntu? Я проверял на свежесозданном дроплете..

Попробуйте так
apt-get update
apt-get install python3-pip
ПроголосоватьПроголосовать
0 0
19.11.2017 15:54:07
Спасибо за ответ, всё получилось как написано в статье, я следовал тексту и пытался установить дополнения после того как зашёл в screen -r -d 2013, а надо сразу устанавливать после того как ввели логин и пароль
ПроголосоватьПроголосовать
0 0
19.11.2017 16:22:11
Андрей я подключил ексмо бот к серверу после того как я захожу в окно терминала, что бы посмотреть как он работает я вижу всего несколько строк(при debug = TRUE ), как мне просмотреть все сообщения бота с момента запуска или может как то изменить print на log и скидывать все сообщения в текстовый файл
ПроголосоватьПроголосовать
0 0
20.11.2017 00:45:31
В линуксе всё просто - можно перенаправить вывод в файл
python3.5 ./exmo.py >> ./log.txt
Тогда будет писать всё в файл (но на экран не будет)

А можно вот так:
python3.5 ./exmo.py | tee -a ./log.txt
тогда будет писать и туда и туда
ПроголосоватьПроголосовать
0 0
20.11.2017 00:57:40
Спасибо, я пока ждал вашего ответа разобрался с logging. правда никак ни могу отыскать где он на сервере сохраняет файл логов
ПроголосоватьПроголосовать
0 0
Пожалуйста, авторизуйтесь, что бы оставить свой комментарий