Всем еще раз привет!
В продолжении первой части, в которой я обещал продолжить настройку Blynk сервера, решил сделать короткую заметку о подключении к Blynk базе данных PostgreSQL.
Как и в первой части установка и настройка будет происходить в среде FreeBSD12.0, предполагается, что Blynk доступен по пути /usr/local/etc/blynk/server-0.41.2-java8.jar
Устанавливаем нужные нам пакаджи:
# pkg install postgresql96-server-9.6.11_2 postgresql96-contrib-9.6.11_2
Даем PostgreSQL разрешение на запуск:
# echo 'postgresql_enable="YES"' >> /etc/rc.conf
Создаем рабочую директорию для PostgreSQL (у меня автоматом не создалось) и устанавливаем разрешения:
# mkdir /var/db/postgres/data96 # chown postgres /var/db/postgres/data96/
Инициализируем и запускаем PostgreSQL:
# /usr/local/etc/rc.d/postgresql initdb # /usr/local/etc/rc.d/postgresql start
Скачиваем две схемы для баз данных:
# wget --no-check-certificate https://raw.githubusercontent.com/blynkkk/blynk-server/master/server/core/src/main/resources/create_schema.sql -O /tmp/create_schema.sql # wget --no-check-certificate https://raw.githubusercontent.com/blynkkk/blynk-server/master/server/core/src/main/resources/reporting_schema.sql -O /tmp/reporting_schema.sql
Авторизуемся пользователем postgres и запускаем cl-интерфейс postgres (т.к. под рутом по-умолчанию запрещено коннектится с базой):
# su - postgres # psql
Либо, если установлено sudo, то:
# sudo -u postgres psql
Делаем импорт из sql схем:
\i /tmp/create_schema.sql \i /tmp/reporting_schema.sql
Выходим из psql и из шелла пользователя (если заходили через su):
\q ctrl+d
Останавливаем Blynk сервер:
# ps auxw | grep java root 726 0,0 4,1 2208084 124344 - Is 17:47 0:42,63 /usr/local/openjdk8/bin/java -jar /usr/local/etc/blynk/server-0.41.2-java8.jar -dataFolder /usr/local/etc/blynk/data root 1114 0,0 0,1 11444 2672 0 S+ 19:20 0:00,00 grep java root@test:/usr/home/vino # kill 726
Создаем конфигурационный файл сервера:
# vi /usr/local/etc/blynk/server.properties initial.energy=100000 allow.reading.widget.without.active.app=false user.message.quota.limit=100 logs.folder=/usr/local/etc/blynk/logs user.dashboard.max.limit=100 lcd.strings.pool.size=6 server.ssl.key= webhooks.response.size.limit=96 hardware.mqtt.port=8440 table.rows.pool.size=100 terminal.strings.pool.size=25 admin.email=blynk@blynk.ru admin.rootPath=/admin user.widget.max.size.limit=20 listen.address= blocking.processor.thread.pool.limit=6 stats.print.worker.period=60000 enable.db=true force.port.80.for.csv=false enable.raw.db.data.store=true restore.host=blynk-cloud.com csv.export.data.points.max=43200 restore=false user.profile.max.size=128 allow.store.ip=true allowed.administrator.ips=0.0.0.0/0,::/0 net.interface=eth webhooks.frequency.user.quota.limit=1000 http.port=8080 web.request.max.size=524288 user.devices.limit=50 async.logger.ring.buffer.size=2048 user.tags.limit=100 server.ssl.key.pass= admin.pass=password hard.socket.idle.timeout=10 product.name=Blynk data.folder=/usr/local/etc/blynk/data map.strings.pool.size=25 profile.save.worker.period=60000 https.port=9443 log.level=info server.ssl.cert= force.port.80.for.redirect=true notifications.queue.limit=2000 notifications.frequency.user.quota.limit=5
В котором для подключения к базе данных отвечают две строки:
enable.db=true enable.raw.db.data.store=true
Запускаем Blynk:
# java -jar /usr/local/etc/blynk/server-0.41.2-java8.jar -dataFolder /usr/local/etc/blynk/data
Просматриваем postgres.log:
less /usr/local/etc/blynk/logs/postgres.log
Если в выхлопе видим похожее на это:
19:59:24.682 - DB url : jdbc:postgresql://localhost:5432/blynk?tcpKeepAlive=true&socketTimeout=150 19:59:24.682 - DB user : test 19:59:24.682 - Connecting to DB... 19:59:24.961 - Connected to database successfully. 19:59:24.962 - Reporting DB url : jdbc:postgresql://localhost:5432/blynk_reporting?tcpKeepAlive=true&socketTimeout=150 19:59:24.963 - Reporting DB user : test 19:59:24.963 - Connecting to reporting DB... 19:59:24.975 - Connected to reporting database successfully.
То мы настроили связку Blynk и posgreSQL.
До встречи!
Спасибо за статью. Нужна ли база данных чтобы хранить статистику для SuperChart на локальном сервере (там разные настройки — 15 мин, полчаса, час, и т.д. вплоть до года-двух)?
Или это для чего-то еще?
Сложно сказать критерии требуемости использования базы данных.
Я бы опирался не на время хранения метрик, а на количество пользователей на сервере.
Т.е. для единоличного использования хватит sqlite.