📦 Green-Signal OPC Server

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

🔧 Шаг 1: Загрузка скрипта установки

Загрузить скрипт install.sh

Используйте одну из команд ниже для загрузки скрипта установки:

С помощью wget:

wget https://app.green-signal.ru/install.sh

С помощью curl:

curl -O https://app.green-signal.ru/install.sh
Примечание: Выберите команду в зависимости от того, какой инструмент установлен в вашей системе.

🔐 Шаг 2: Предоставление прав на выполнение

Дать скрипту права на выполнение

Выполните следующую команду:

chmod +x install.sh

Эта команда добавляет право на выполнение файлу install.sh.

🚀 Шаг 3: Выполнение скрипта установки

Запустить скрипт установки

Выполните скрипт с необходимыми параметрами:

sudo ./install.sh <ИМЯ_УСТРОЙСТВА> <КОД_ПОДКЛЮЧЕНИЯ>

Параметры скрипта:

1️⃣ ИМЯ_УСТРОЙСТВА (первый параметр)

GlobalId нового устройства. Это уникальный идентификатор вашего устройства в системе Green-Signal.

Примеры: MyDevice, server-001, warehouse-sensor

Где получить: Это имя, которое вы придумываете для своего устройства. Оно используется для идентификации в системе мониторинга.

2️⃣ КОД_ПОДКЛЮЧЕНИЯ (второй параметр)

Код подключения от продюсера (сервера управления). Это уникальный числовой код, который связывает ваше устройство с аккаунтом на сервере.

Примеры: 5000, 1234, 9999

Где получить: Вы получаете код во 2 пункте инструкции

Пример использования:

sudo ./install.sh "MyDevice" 5000

Разбор примера:

  • "MyDevice" - globalId вашего устройства
  • 5000 - код подключения от продюсера
Важно: Требуется использование sudo, так как скрипт устанавливает файлы в системную директорию /etc/sdmOpcServer.

✅ Шаг 4: Проверка успешной установки

Убедитесь в отсутствии ошибок

После выполнения скрипта убедитесь, что:

  • ✅ Скрипт завершился без ошибок
  • ✅ В выводе видна надпись "Cleanup completed"

Проверить работоспособность

Запустите файл opcServer для проверки:

cd /etc/sdmOpcServer
./opcServer
Успех: Если приложение запустилось без ошибок и выводит информацию о работе, установка выполнена успешно.

Для остановки процесса нажмите Ctrl+C

⚙️ Шаг 5: Настройка автозапуска

📋 Самостоятельная настройка автозапуска

После успешной установки и проверки работоспособности приложения вам необходимо самостоятельно настроить автозапуск сервиса для вашей операционной системы.

Способ настройки зависит от типа системы инициализации, используемой вашей ОС:

  • systemd - используется в Ubuntu 16.04+, CentOS 7+, Debian 8+
  • init.d - используется в старых версиях Linux (Debian 7, CentOS 6, Ubuntu 14.04 и ранее)
  • OpenRC - используется в Alpine Linux и некоторых других дистрибутивах
  • runit - альтернативная система инициализации

Рекомендуется использовать systemd, так как это стандарт в современных Linux-системах.

💡 Примеры настройки для различных систем инициализации (нажмите чтобы развернуть)

Создание systemd сервиса

Для автоматического запуска приложения при загрузке системы, создайте файл сервиса systemd:

sudo nano /etc/systemd/system/green-signal-opc.service

Скопируйте следующее содержимое:

[Unit] Description=Green-Signal OPC Server Wants=network-online.target After=network-online.target [Service] Type=simple WorkingDirectory=/etc/sdmOpcServer/ ExecStart=/etc/sdmOpcServer/opcServer ExecStopPost=/etc/sdmOpcServer/opcServer --stop StartLimitBurst=10 Restart=on-failure RestartSec=2s OOMScoreAdjust=-100 [Install] WantedBy=multi-user.target

Нажмите: Ctrl+X, затем Y, затем Enter для сохранения

Активировать сервис

Выполните следующие команды:

1. Перезагрузить конфигурацию systemd:

sudo systemctl daemon-reload

2. Включить автозапуск сервиса:

sudo systemctl enable green-signal-opc.service

3. Запустить сервис:

sudo systemctl start green-signal-opc.service

Проверить статус сервиса

Убедитесь, что сервис работает:

sudo systemctl status green-signal-opc.service
Успех: Если статус показывает "active (running)", сервис работает корректно.

Просмотр логов:

sudo journalctl -u green-signal-opc.service -f

Создание init.d скрипта

Для старых систем на базе init.d создайте скрипт:

sudo nano /etc/init.d/green-signal-opc

Скопируйте следующее содержимое:

#!/bin/bash ### BEGIN INIT INFO # Provides: green-signal-opc # Required-Start: $local_fs $network $syslog # Required-Stop: $local_fs $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Green-Signal OPC Server # Description: Start/stop Green-Signal OPC Server daemon ### END INIT INFO NAME="green-signal-opc" DAEMON="/etc/sdmOpcServer/watchdog" WORKDIR="/etc/sdmOpcServer" PIDFILE="/var/run/$NAME.pid" USER="root" LOGFILE="/var/log/$NAME.log" test -x $DAEMON || exit 0 . /lib/lsb/init-functions do_start() { log_daemon_msg "Starting $NAME" if [ -f $PIDFILE ] && kill -0 $(cat $PIDFILE) 2>/dev/null; then log_progress_msg "already running" log_end_msg 0 return 0 fi cd $WORKDIR start-stop-daemon --start --quiet \ --pidfile $PIDFILE \ --make-pidfile \ --background \ --chdir $WORKDIR \ --chuid $USER \ --exec $DAEMON \ -- >> $LOGFILE 2>&1 RETVAL=$? log_end_msg $RETVAL return $RETVAL } do_stop() { log_daemon_msg "Stopping $NAME" start-stop-daemon --stop --quiet \ --pidfile $PIDFILE \ --retry=TERM/30/KILL/5 RETVAL=$? rm -f $PIDFILE log_end_msg $RETVAL return $RETVAL } do_restart() { do_stop sleep 2 do_start } do_status() { if [ -f $PIDFILE ]; then PID=$(cat $PIDFILE) if kill -0 $PID 2>/dev/null; then echo "$NAME is running (PID: $PID)" return 0 else echo "$NAME is not running (stale PID file)" return 1 fi else echo "$NAME is not running" return 3 fi } case "$1" in start) do_start ;; stop) do_stop ;; restart|force-reload) do_restart ;; status) do_status ;; *) echo "Usage: $0 {start|stop|restart|force-reload|status}" exit 1 ;; esac exit $?

Нажмите: Ctrl+X, затем Y, затем Enter для сохранения

Установка прав и регистрация

1. Дать скрипту права на выполнение:

sudo chmod +x /etc/init.d/green-signal-opc

2. Зарегистрировать скрипт в системе:

sudo update-rc.d green-signal-opc defaults

Управление сервисом

Запустить сервис:

sudo service green-signal-opc start

Остановить сервис:

sudo service green-signal-opc stop

Перезапустить сервис:

sudo service green-signal-opc restart

Проверить статус:

sudo service green-signal-opc status

Просмотр логов:

tail -f /var/log/green-signal-opc.log

🐛 Решение проблем

Проверка системного времени

Корректное время в системе критично для работы приложения. Проверьте текущее время:

date

Для синхронизации времени используйте NTP (Network Time Protocol):

sudo ntpdate -s ntp.ubuntu.com

Или используйте timedatectl (для systemd систем):

sudo timedatectl set-ntp true

Проверить статус синхронизации:

timedatectl
Важно: Неверное время может привести к проблемам с подключением к серверу и работой приложения.

SSL сертификаты проходят валидацию (нет корневых сертификатов)

При возникновении проблем с верификацией SSL сертификатов может потребоваться ручное обновление корневых сертификатов. Это особенно актуально для устаревших систем или при отсутствии регулярного обновления пакетов из репозитория.

Решение для Debian/Ubuntu систем:

1. Найдите последнюю версию пакета сертификатов в репозитории:

http://ftp.ru.debian.org/debian/pool/main/c/ca-certificates/

2. Загрузите пакет с сертификатами:

wget http://ftp.ru.debian.org/debian/pool/main/c/ca-certificates/ca-certificates_20211016_all.deb

3. Установите пакет в вашей системе:

sudo dpkg -i ca-certificates_*_all.deb

4. Обновите кэш сертификатов:

sudo update-ca-certificates
Успех: Корневые сертификаты обновлены и будут использоваться при установке и работе приложения.

Скрипт требует sudo

Если при выполнении скрипта вы получите ошибку о недостаточных правах, используйте sudo:

sudo ./install.sh "MyDevice" 5000

Нет прав на выполнение

Если скрипт не запускается, убедитесь, что вы дали ему права:

chmod +x install.sh

Ошибка: "curl/wget не найден"

Установите необходимый инструмент:

Для Debian/Ubuntu:

sudo apt-get update && sudo apt-get install curl wget

Для CentOS/RHEL:

sudo yum install curl wget

Файл opcServer не работает

Проверьте архитектуру вашей системы:

uname -m

Скрипт должен автоматически выбрать правильный бинарник для вашей архитектуры (amd64, arm64, armv7, 386).