Запуск nodejs служб на ubuntu 18

В директории /lib/systemd/system требуется создать файл с расширением .service

Файл должен содержать следующую информацию

[Unit]
Description=docs service by nodejs
After=network-online.target

[Service]
User=www-data 
Restart=on-failure
WorkingDirectory=/var/www/docs
ExecStart=/usr/bin/node /var/www/docs/bin/www

[Install]
WantedBy=multi-user.target

где,

  • User — имя пользователя от имени которого запускается служба
  • WorkingDirectory — каталог с приложением, где nodejs

После этого требуется перезапустить daemon

systemctl daemon-reload
systemctl restart docs 
systemctl status docs

, где docs имя службы

Механизм хранения ошибок от клиентских приложений

Для хранение клиентских ошибок от клиентских приложений используется нижеуказанная таблица.

sd_client_errors

  • id: uuid — первичный ключ;
  • c_message: text — текст ошибки;
  • c_code: text — код ошибки;
  • d_created: timestamp with time zone — дата возникновения ошибки на клиенте;
  • fn_user: integer — идентификатор пользователя чьё приложение вызвало ошибку;
  • c_version: text — номер версии;
  • c_platform: text — тип платформы, например, Android, iOS, Sailfish OS;
  • jb_data: jsonb — Прочая информация. Например: ОС, версия, Архитектура или модель и т.д.;
  • dx_date: timestamp with time zone — Дата сохранения на сервере. Вычисляется при вставке;
Читать далее «Механизм хранения ошибок от клиентских приложений»

systemd вместо upstart

В Ubuntu 18 нет upstart и чтобы можно было использовать это механизм нужно научиться работать с systemd

  1. переходим в каталог /lib/systemd/system и внутри него создаем новый сервис, например node_app.service
[Unit] 
Description=hello_env.js - making your environment variables rad
Documentation=https://example.com
After=network.target

[Service]
Environment=NODE_PORT=3001
Type=simple
User=ubuntu # тут нужен пользователь например root (от имени кого запускаем)
ExecStart=/usr/bin/nodejs /home/ubuntu/hello_env.js
Restart=on-failure

[Install]
WantedBy=multi-user.target

Подробнее тут.

sudo systemctl daemon-reload # перезапускаем deamon
sudo systemctl start hello_env

Чтение серверных настроек

Для чтения настроек доступна удаленная функция PN.setting.getSettings

Данная функция вернёт объект настроек предназначенный для пользователя, который был авторизован в системе.

Пример запроса

[{
"action": "setting",
"method": "getSettings",
"data": [{ "params": ["MBL_"] }],
"type": "rpc",
"tid": 1
}]
Читать далее «Чтение серверных настроек»

Peer authentication failed for user

Если при сохранении файла (cf_save_file) выдается ошибка

could not connect to server "fs"
Peer authentication failed for user "mobnius"

то нужно перейти на сервер и изменить настройки pg_hba.conf

Все значения peer заменить на md5.

Примечание: для пользователя postgres менять не нужно.

Читать далее «Peer authentication failed for user»

Настройка LiveQML

В Qt Creator открываем «вкладку» Проекты.

Затем выбираем нужный комплект, в моем случаи это «SailfishOS-*-i486«. Далее выбираем настройку «запуска». И включаем пункт «Включить QML» из раздела «Настройки отладчика».

Читать далее «Настройка LiveQML»

Координаты в базе данных PostgreSQL

Для работы с координатами в бд «Mobnius» необходимо скачать и установить пакет postgis.

sudo apt-get install postgis

Инструкция по установке находится здесь.

sudo -u postgres psql mobnius
mobnius=# CREATE EXTENSION postgis;

Далее необходимо перейти в базу данных и установить расширение postgis, в поле «schema» указать «public»
Координаты в бд «Mobnius» используются в следующих таблицах:

  • ad_tracking;
  • cd_files;
  • cd_points.
Читать далее «Координаты в базе данных PostgreSQL»

b_current и b_check

Некоторые таблицы содержать две колонки:

  • b_current: boolean – текущая актуальная запись для одного элемента object_id;
  • b_check: boolean – подтвержденная запись, была проверена диспетчером или пользователь является доверенным.

АЛГОРИТМ ПРИМЕНЕНИЯ ПОЛЕЙ

  • b_current проставляется только после установки b_check – диспетчер подтверждает результат работы, говоря тем самым, что запись является последней актуальной;
  • для нескольких записей в рамках одной точки (см. object_id) b_current может быть установлен, только у одного;
  • по установленным значениям b_check можно просматривать историю точки.