Небольшая статья о том, как заставить бота работать не на вашем компьютере, а где-то еще в интернете, круглосуточно, с хорошим постоянным интернет-соединением. Зачем? А что бы не приходилось комп держать постоянно включенным. Поехали.
Шаг первый. Арендуем выделенный сервер.
Я пользуюсь 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 – и вы должны попасть на свой сервер.
От вас сразу же потребуют, что бы вы сменили пароль, так что
- Укажите текущий пароль (он не отобразится) Enter.
- Придумайте и введите новый пароль (он тоже не будет отображаться), Enter, и
- Еще раз укажите новый пароль. Запомните, а лучше запишите его!
Если пароль будет слишком простым, то система ругнется и попросит придумать новый.
Шаг третий – закинуть бота на сервер.
Тут нужна будет программа 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 и т.п.
Так же процитирую полезную иформацию из комментариев:
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
Заключение
Геморрой, согласен) Но это если в первый раз делаешь. Зато потом это все работает как часы, не отъедает лишней памяти, не приходится ни за что переплачивать, позволяет паралелльно с ботом держать еще и свой сайт, да и кучу всего. В общем, дорогу осилит идущий, удачи вам в ваших начинаниях!
echo $STY
если выполнить её перед запуском бота?
И скопируйте текст ошибки.
Инструкция рабочая. Если хотите, пишите в фейсбук или на почту со скриншотами
Этот сайт не может обеспечить безопасное соединение
На сайте m.do.co используется неподдерживаемый протокол.
ERR_SSL_VERSION_OR_CIPHER_MISMATCH
Как по ней зарегиться?
Она рабочая в отличии от той, которая в начале поста.
аля
log("Получаем все неисполненные ордера по БД")
в
#log("Получаем все неисполненные ордера по БД")
ну или удалить их вообще
python3.5 ./exmo.py >> ./log.txt
Тогда будет писать всё в файл (но на экран не будет)
А можно вот так:
python3.5 ./exmo.py | tee -a ./log.txt
тогда будет писать и туда и туда
Возможно, он настроен у вас так, что никуда не сохраняет, а выводит на консоль :) Он так умеет и делает по умолчанию, если файл не указан
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
Мне кажется, было бы не плохо упомянуть эти команды в Вашей статье.
Добавил информацию в статью
n/python3.6
Ну так в практическом смысле - можно запустить на нём сайт, можно развернуть прокси и использовать для обхода блокировок - разумеется, не нарушая законов страны проживания ;)
Можно запускать ботов для телеграмма, собирать курсы разных бирж круглосуточно, парсить сайты для сбора нужной информации/контента, использовать как настроенную среду среду разработки для доступа с любого компьютера из дома/работы/отпуска..
Я лично использую один из дроплетов как тестовую среду - например, если мне нужно сделать сайт, я могу выложить результат там для показа и обсуждения.
Так же для некоторых проектов (когда нельзя использовать githab/gitlab) я поднимаю там сервер git - и получаю возможность командной разработки.
Иногда, когда мне срочно нужно проверить работу какого-то скрипта на пхп, например, я подключаюсь на дроплет и проверяю там - это проще и быстрее чем запускать виртуальную машину.
Ну и так далее - применений можно найти много, но большинство случаев могут заменить бесплатные решения, домашний ПК и т.д.
sudo swapoff /swapfile
rm /swapfile
Но лучше оставить, для просчета большого количества свечей память все равно потребуется
В линуксе полный нуб.
Если бота положить в директорию root то оттуда могу его запустить.