OnePlace version 0.2.0. Создание профиля, подписка на теги, мультиаккаунты
Веб-клиент для блокчейнов Golos и Steem.
Технологии: Node.js, Vue.js, Loopback, Redis, MySQL
Релиз версии 0.2.0, запущенной сейчас на сайте. Пост с анонсом и описанием функционала.
Сайт: https://oneplace.media
Github: https://github.com/OnePlace-media/oneplace/releases/tag/v0.2.0
Установка
Клонирование репозитория и установка npm модулей
git clone git@github.com:OnePlace-media/oneplace.git
cd oneplace && npm i
Установка зависимостей
Данная инструкция ориентирована на пользоватлей linux с debian дистрибутивами.
Node.js
Установите Node.js, мы рекомендуем использовать LTS version и nvm для установки:
nvm install 8.9.4
nvm use 8.9.4
OnePlace является комплексным решением и имеет дополнительный функционал над обоими блокчейнами. Вам необходимо установить базы данных MySQL и Redis. Используйте Docker Compose с нашим docker-compose.yml или установите в ручном режиме:
MySQL
sudo apt-get update
sudo apt-get install mysql-server
В данном репозитории присутствует sql-скрипт для инициализации структуры БД. Используйте его для быстрого старта:
# Вставка sql-скрипта в mysql
mysql -u root < ./server/data/mysql/mysql-init.sql
# Логин Mysql
mysql -u root
# Создаем нового пользователя
CREATE USER 'oneplace'@'localhost' IDENTIFIED BY 'password';
# Настройка привилегий
GRANT ALL PRIVILEGES ON oneplace.* TO 'oneplace'@'localhost'
Вы также можете использовать MySql WorkBench с нашим model файлом для расширения sql-схемы.
Redis
sudo apt-get install redis
Конфигурация
После установки сконфигурируйте redis-server для работы в качестве демона на локальном порту, для этого в стандартный конфиг (например, /etc/redis/redis.conf) внесите следующие изменения:
daemonise yes
bind 127.0.0.1
port 6379
После установки зависимостей необходимо создать конфигурационные файлы из шаблонов:
cd server
# Главный config
cp config.sample.json config.json
# Параметры к источникам данных (mysql, redis и т.д.)
cp datasources.sample.json datasources.json
config.json
{
...,
"postingWrapper": {
"steemDomain": "URL до ноды STEEM с HTTP JSON-RPC протоколом",
"golosDomain": "URL до ноды GOLOS с HTTP JSON-RPC протоколом",
"WIF": "Приватный постинг ключ аккаунта приложения в блокчейнах STEEM и GOLOS",
"username": "Имя аккаунта приложения в блокчейнах STEEM и GOLOS (без @)"
}
}
Сборка и запуск
Мы приготовили несколько команд для быстрой сборки и запуска всех сервисов. Для начала необходимо собрать рабочую версию клиента с готовым конфигом:
# Сборка фронт части проекта
npm run build
Для запуска демонов мы рекомендуем использовать PM2. Подробнее в process.json.
pm2 start process.json
# запуск мониторинг pm2
pm2 monit
Но вы можете осуществить запуск вручную.
Запуск в ручном режиме
# Запуск LoopBack-API сервера
npm start
# Запуск VueSSR сервера
npm run client
Подробнее см. package.json.
После установки
На данный момент проект не является монолитным приложением, с помощью nginx вы легко можете объединить интерфейсы VUE с loopback, простой пример:
location /api {
proxy_pass http://127.0.0.1:3001;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
location ~* ^/(dist|static) {
root /var/www/oneplace/data/www/oneplace.media/client;
expires 7d;
}
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
В ближайшем будущем
- Запуск демонов в кластере и soft рестарт с нулевым простоем
- Полное покрытие Unit тестами (frontend) и BDD (API) тестами с Karma, Mocha и PhantomJS
- Непрерывная интеграция и автоматический деплой
- Git flow и релизы с change log
- Полная документация