Установка OPC Server

Инструкция для install.sh

CLI: sudo ./install.sh <PIN>

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

Установка системы на linux терминал

1

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

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

Используйте одну из команд ниже для загрузки. Выберите команду в зависимости от того, какой инструмент установлен в вашей системе.
С помощью wget:
wget https://app.green-signal.ru/install.sh
С помощью curl:
curl -O https://app.green-signal.ru/install.sh
2

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

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

Выполните команду ниже (она добавляет право на выполнение файлу install.sh).
sudo chmod +x install.sh
3

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

Выберите один из вариантов: запуск с параметрами или интерактивно.

Важно: используйте sudo, т.к. скрипт устанавливает файлы в /etc/sdmOpcServer.
Вариант A — указать параметры сразу
  • PIN — ПИН код для получения настроек (формат: XXXX-XXXX-XXXX).
sudo ./install.sh <PIN>
sudo ./install.sh "ABCD-1234-EFGH"
Вариант B — интерактивный режим
Если параметры не переданы, скрипт запросит значения в консоли.
sudo ./install.sh
sudo ./install.sh
4

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

Убедитесь в отсутствии ошибок и проверьте запуск.

После выполнения скрипта убедитесь, что он завершился без ошибок и в выводе есть Cleanup completed.
Запустите opcServer для проверки:
cd /etc/sdmOpcServer
./opcServer
Для остановки процесса нажмите Ctrl+C.
5

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

Примеры для разных систем инициализации.

После успешной установки и проверки работоспособности необходимо настроить автозапуск. Способ зависит от системы инициализации: systemd, init.d, OpenRC, runit. Рекомендуется systemd как стандарт для современных Linux.
Создание 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
Сохранение в nano: Ctrl+X, затем Y, затем Enter.
Активировать сервис:
sudo systemctl daemon-reload
sudo systemctl enable green-signal-opc.service
sudo systemctl start green-signal-opc.service
Проверить статус и логи:
sudo systemctl status green-signal-opc.service
sudo journalctl -u green-signal-opc.service -f
Создание 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/opcServer"
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 $?
Сохранение в nano: Ctrl+X, затем Y, затем Enter.
Установка прав и регистрация:
sudo chmod +x /etc/init.d/green-signal-opc
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
6

⚙️ Шаг 6: Добавление устройства в проект

После установки в консоли появится ссылка для привязки устройства к проекту.

Скрипт выводит ссылку прямо в терминал: сначала строка с текстом “Для подключения устройства к проекту…”, а следующей строкой — URL вида https://welcome.green-signal.ru/?alias=....
Как выглядит вывод (пример):
Для подключения устройства к проекту перейдите по ссылке:
https://welcome.green-signal.ru/?alias=<ALIAS>
Как быстро найти ссылку:
  • Пролистайте вывод вверх до строки “Для подключения устройства…” — ссылка будет сразу под ней.
  • Если в терминале есть поиск по выводу (часто Ctrl+Shift+F), ищите слово welcome или alias.
Откройте эту ссылку в браузере и завершите привязку устройства к вашему проекту.
🐛

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

Типовые ситуации и команды для диагностики.

Проверка системного времени
Проверьте текущее время:
date
Синхронизация через NTP:
sudo ntpdate -s ntp.ubuntu.com
Синхронизация через timedatectl:
sudo timedatectl set-ntp true
timedatectl
  • Неверное время может привести к проблемам с подключением к серверу и работой приложения.
SSL сертификаты не проходят валидацию (нет корневых сертификатов)
Для Debian/Ubuntu можно обновить корневые сертификаты вручную.
  • Пакет/репозиторий: http://ftp.ru.debian.org/debian/pool/main/c/ca-certificates/
wget http://ftp.ru.debian.org/debian/pool/main/c/ca-certificates/ca-certificates_20211016_all.deb
sudo dpkg -i ca-certificates_*_all.deb
sudo update-ca-certificates
Скрипт требует sudo
sudo ./install.sh <PIN> <GLOBAL_ID>
Нет прав на выполнение
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).