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

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

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

Я пользуюсь 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 и т.п.

Так же процитирую полезную иформацию из комментариев:

Я запустил у себя на сервере сразу 8 ботов и чтобы не путаться в файлах и не запоминать цифры при обращении к нужному боту создавал их под именами. Вызывается командой:
screen -S "----------" (вместо ------ написать название валюты например BTC)
получается запись:
463.BCH (12/19/2017 09:55:02 AM) (Detached)
351.ETH (12/19/2017 09:38:11 AM) (Detached)
32721.ZEC (12/19/2017 09:29:58 AM) (Detached)
31661.XMR (12/19/2017 04:00:47 AM) (Detached)
18677.XRP (12/15/2017 05:52:05 PM) (Detached)
18534.ETC (12/15/2017 05:49:01 PM) (Detached)
18470.LTC (12/15/2017 05:47:43 PM) (Detached)
18408.BTC (12/15/2017 05:45:51 PM) (Detached)
И второе, когда пробовал как торгует бот насоздавал кучу сессий, потом их останавливал и создавал новые, но не работающие сессии остались и сильно мешали, потом нашел команду по их удалению: 
Подключиться к сессии screen -r -d 2013 (число-работающий бот) Cntr+a и ввести :quit

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

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

apt install python3-pip
pip3 install numpy
wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
tar -xvzf ./ta-lib-0.4.0-src.tar.gz
cd ./ta-lib/
./configure --prefix=/usr
make
make install
pip3 install TA-lib

Заключение

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

Тэги: