Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
tristamoff
7 лет назад

Установка клиента golos.io на локальную машину(часть 2)


Скриншот с канала red21

В продолжении первой части данного цикла статей я расскажу о том, как развернуть полноценный web-клиент для доступа к блокчейну Голос.
Если вы работаете на Linux - читаем дальше, если у вас другая ОС - то сперва гляньте первую часть.

И так, поехали. За основу я брал материал уважаемого @vik`а. По его мануалу запустить голос у меня не получилось, видимо он устарел. Моя инструкция актуальна на сегодняшний день, устанавливать я всё буду на свежую систему.

Запускаем виртуальную машину.
На локальном компьютере запускайте консоль(терминал). Как говорил ранее - я запущу PuTTY через WinSCP (нажав Ctrl+P)
Окно PuTTY выезжает за окно виртуалки, чтоб было очевидно, что запущено она в основной ОС.

http://i.imgur.com/LLO5gKr.png
В первую очередь нужно установить Git.

Для справки: git - это система контроля версий. Она, скажем так, хранит слепок файловой системы(который вы сами “положите в git”). Если вы напишите какой-то плохой код, или затрёте что-то важное - всегда можно откатиться к одной из предыдущих версий. Версий файловой системы(бранчей) можно держать сколько угодно, объединять их между собой(мерджить). Это достаточно обширная тема.

Попробуйте набрать в консоли git. Если увидите сообщение о том, что данная программа не установлена - устанавливайте её так:
sudo apt-get install git

http://i.imgur.com/fuJCiTT.png

Теперь нужно где-то развернуть сайт.

Развернём прямо в домашней директории, по умолчанию вы находитесь в ней. Чтобы в неё вернуться в консоли можно написать cd ~.
Для получения кода сайта - его нужно склонировать из его репозитория. Находится он тут https://github.com/GolosChain/tolstoy
Клонируем его такой командой
git clone https://github.com/GolosChain/tolstoy

http://i.imgur.com/795JTtc.png
Теперь у вас в домашней директории есть папка tolstoy, в которой находится весь код клиента golos.io
Перейти в неё можно командой:
cd tolstoy
Затем создаём в ней папку tmp командой:
mkdir tmp

http://i.imgur.com/7k8bon6.png
Теперь установим curl(эта утилита позволяет обращаться к адресам в интернете и скачивать полученное содержимое).
Пишем в консоли
sudo apt-get install curl

http://i.imgur.com/K17CTdX.png
Далее нужно скачать Node Version Manager, сокращённо nvm.
Пишем в консоли:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash

http://i.imgur.com/eYV3dDf.png
И чтобы команда nvm работала - нужно выполнить две команды:
export NVM_DIR="/home/user/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

После успешной установки NVM с помощью него же и устанавливаем Node JS.
Для этого пишем:
nvm install node

http://i.imgur.com/K3ocozw.png

Если теперь выполнить команду nvm use node - то вы увидите свою версию NodeJS и NPM(Node.js Package Manager).
С помощью npm установим требуемые пакеты командой:
npm install
Так как после ключевого слова install мы не указали имени пакета - они подтянутся из файла npm-shrinkwrap.json

http://i.imgur.com/sCCTpnf.png
Вот тут один интересный момент. На моей системе инсталляция упала на пакете node-sass. Если у вас тоже валятся ошибки - то придётся внести правки в npm-shrinkwrap.json
Чтобы это исправить я поменял версию этого пакета.
sudo mcedit npm-shrinkwrap.json
Для поиска жмём F7 и пишем node-sass

http://i.imgur.com/bvt4Rqy.png
Значение “version” меняем на 4.5.3 и эту же версию вписываем в resolved:

http://i.imgur.com/QF7IIfT.png
Сохраняем и выходим.

Почему так? Думаю, что когда собирался npm-shrinkwrap.json версия ОС была другой и с такими версиями пакетов всё собиралось. Это скорее вопрос к @b1acksun и @sheriff

Если вы вносили эти правки - то опять делайте npm install.
Если всё проинсталилось без ошибок - то после установки пишем:
npm install -g babel-cli
npm i pm2 -g

http://i.imgur.com/bJ2DutW.png
Затем нужно взять экземпляры конфигов и на их основе сделать конфиги приложения:
Копируем конфиги так:
cp config/example/golos-example.json config/golos-dev.json
cp config/example/client-example.js config/client_config.js

http://i.imgur.com/Ww9ZgZC.png
Запускаем NodeJS командой:
node
И потом пишем такую команду:
crypto.randomBytes(32).toString('base64')

http://i.imgur.com/b4pL7G2.png
Вы увидите ключ. Его надо скопировать, он нам потом пригодится.

В консоли, как правило, не работает правая кнопка мыши. Просто выделите этот ключ и он скопируется в буфер обмена. Откройте блокнот и нажмите Ctrl+V, ключ должен вставиться.
Дважды нажмите Ctrl+C и node закроется.

Теперь установим БД MySQL командой:

sudo apt-get install mysql-server
Mysql попросит создать пароль для root. Можете вписать root или ничего не вписывать. Или придумать сложный пароль.

http://i.imgur.com/V18tC4s.png
У меня всё поставилось.

http://i.imgur.com/I9vABee.png
Если у вас возникли какие-то ошибки - попробуйте выполнить sudo apt-get update, а потом заново проинсталить mysql.
После установки mysql подключаемся к ней прямо в консоли:
sudo mysql -u root -p - без пароля
Если у вас есть пароль, то sudo mysql -u root -pPassword
Теперь удалим этого пользователя и создадим его заново, дав ему все привилегии.
Если вы подключились к mysql - то командная строка у вас должна начинаться с mysql>

http://i.imgur.com/taZkzju.png
Пишем по одной команде:
DROP USER 'root'@'localhost'; - удаляем пользователя
CREATE USER 'root'@'%' IDENTIFIED BY ''; - создаём пользователя
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; - выдаём привилегии
FLUSH PRIVILEGES; - сбрасываем “кэш”
Так-же находясь в mysql создаём БД:
create database golos_dev;
exit; - выходим

http://i.imgur.com/aPj988x.png
Для создания таблиц, необходимых для клиента, воспользуемся пакетом sequelize-cli. Он запустит миграцию из папки db.
Устанавливаем его:
npm install -g sequelize-cli pm2 mysql
Если всё нормально - то вы увидите примерно следующее:

http://i.imgur.com/LSnNvdc.png
Далее правим конфиг подключения к БД.
sudo mcedit db/config/config.json
У вас откроется интерфейс редактирования этого текстового файла:

http://i.imgur.com/h01sGkI.png
Я затёр пароль от root(я его не ставил). База golos_dev - оставляем, так как базу именно с таким именем мы создали чуть ранее. После правок жмём F2 и F10.

Теперь переходим в папку db и запускаем миграцию:
cd db
sequelize db:migrate

http://i.imgur.com/yrxxV4A.png
Всё, все таблицы успешно создались

Теперь находим ключ, который создали при помощи node. Если потеряли - можете создать новый, это не критично.
Его нужно вписать в golos-dev.json
cd ~/tolstoy - вернёмся в корень проекта
sudo mcedit config/golos-dev.json

http://i.imgur.com/eokTWJz.png
Ищите строку "server_session_secret": "some-long-super-secret-string", и меняете в ней some-long-super-secret-string на свой ключ.
Сохраняйте и выходите из редактирования.

http://i.imgur.com/XFEtvpC.png

Запускаем npm
npm start
Ждём пока проект скомпилируется

http://i.imgur.com/ai1EVTe.png

Если всё получилось - вы увидите:
webpack: Compiled successfully.
connecting to wss://ws.golos.io
Application started on port 3002

Это говорит о том, что проект успешно заработал.

Проверяем работоспособность блокчейна.

Теперь вспоминаете IP своего сервера и прямо в адресной строке браузера вписываете этот айпишник и через двоеточие порт 3002.

http://i.imgur.com/ZHLIX35.png

Как видите - в блокчейне все свеженькие посты.
Если посмотрите в консоль - то увидите ресурсы, которые вы запрашиваете, открывая страницы блокчейна.

http://i.imgur.com/QD9nl1v.png
А теперь первый нежданчик - не получается авторизоваться. Меню справа тоже не выезжает. В консоли видны ошибки.

http://i.imgur.com/jy05zpm.png
Решается эта проблема следующим патчем.
sudo mcedit node_modules/redbox-react/lib/index.js
Затем нажмите F7 и впишите function _getRewireRegistry__

http://i.imgur.com/ybN9GMm.png
После строки
theGlobalVariable.__$$GLOBAL_REWIRE_REGISTRY__ = Object.create(null);
Дописываем
return theGlobalVariable.__$$GLOBAL_REWIRE_REGISTRY__;

http://i.imgur.com/jmf4OI6.png
Как писал @pav

Такие проблемы часто возникают в момент установки голого свежего релиза из репозитория. А сама проблема кроется в npm компонентах/библиотеках которые в свою очередь подключают свои зависимости (npm библиотеки) без указания точной версии библиотек. Мы для этих вещей используем npm shrinkwrap.

Заново запускаем npm start
Пробуем нажать кнопку “Войти” - всё работает.

http://i.imgur.com/GS8ffFf.png
Можете авторизоваться

http://i.imgur.com/h3JFAKw.jpg

Можете править файлы проекта. После каждого изменения файла проект будет заново собираться. Можете так-же написать в консоли rc или даже закрыть npm и запустить его заново.

Важно понимать, что если вы закроете консоль - то npm остановится и сайт перестанет работать. Если нужно запустить голос и закрыть консоль - то выполните команду:
pm2 start npm -- start - запуск
pm2 restart npm -- start - рестарт

Заключение

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

0
52.647 GOLOS
На Golos с January 2017
Комментарии (14)
Сортировать по:
Сначала старые