# Запуск

На текущий момент есть три способа запуска:

- с помощью Wrapper Tanuki (рекоммендуемый способ, для всех систем, кроме Windows с Java x64)
- с помощью Wrapper YAJSW (альтернативный, для всех систем)
- как java-приложение, без помощи сторонних программ
- из docker-контейнера

## Запуск demo

Выполнить:

    jroboplc/start.bat

## Запуск через wrapper tanuki

### Скачивание

Перейти в каталог `jroboplc/wrapper/` и выполнить соответствующий скрипт:

- download_wrapper_linux.sh (для linux)
- download_wrapper_windows.bat (для windows)

### Скрипты запуска в Linux

Скрипты запуска находятся в каталоге jroboplc/ctl.lin:

    _console - запустить как приложение
    _install - установить сервис
    _remove  - удалить сервис
    _restart - перезапустить сервиса
    _start   - запустить сервис
    _status  - показать статус сервиса
    _stop    - остановить сервис

Для изменения имени сервиса (если на одной машине планируется несколько инсталляций) использовать параметры `APP_NAME` и `APP_LONG_NAME` в файле `jroboplc/ctl.lin/jroboplc`.

### Скрипты запуска в Windows

Скрипты запуска находятся в каталоге jroboplc/ctl.win:

    _console.bat - запустить как приложение
    _install.bat - установить сервис
    _remove.bat  - удалить сервис
    _restart.bat - перезапустить сервиса
    _start.bat   - запустить сервис
    _status.bat  - показать статус сервиса
    _stop.bat    - остановить сервис

Для изменения имени сервиса (если на одной машине планируется несколько инсталляций) использовать параметры в файле jroboplc/wrapper/wrapper-conf/wrapper.win.conf:

    wrapper.name=jroboplc
    wrapper.displayname=jroboplc
    wrapper.description=jroboplc

### Конфигурационные файлы

В каталоге `jroboplc/wrapper-conf` находятся настроенные по умолчанию конфигурационные файлы раздельно для linux и windows:

- wrapper.lin.conf
- wrapper.win.conf

Наиболее важные параметры этих файлов:

    # для linux
    set.JAVA_HOME=/usr/lib/jvm/java-8-oracle
    wrapper.java.command=%JAVA_HOME%/bin/java

    # для windows
    wrapper.java.command=java  # при этом java и javac должны быть в PATH системы

    # для linux и windows
    wrapper.java.classpath.1=../lib/wrapper.jar
    wrapper.java.classpath.2=../../../jar/core/jroboplc.jar
    wrapper.java.library.path.1=../lib
    wrapper.app.parameter.1=promauto.jroboplc.core.JRoboPLC
    wrapper.app.parameter.2=-plg
    wrapper.app.parameter.3=../../../jar/plugin
    wrapper.app.parameter.4=-cfg
    wrapper.app.parameter.5=../../../conf
    wrapper.app.parameter.6=-cmd
    wrapper.app.parameter.7="ansi off|start"
    wrapper.logfile=../../../log/wrapper
    wrapper.console.title=JRoboPLC

    # для windows
    wrapper.name=jroboplc
    wrapper.displayname=jroboplc
    wrapper.description=jroboplc
    wrapper.ntservice.starttype=DEMAND_START   # либо AUTO_START, DELAY_START

    # опционально
    wrapper.disable_forced_shutdown=TRUE

Внимание! От версии к версии производитель wrapper'а меняет названия параметров, поэтому могут быть несовпадения.

### Установка сертификатов в windows

Иногда при запуске под windows происходит примерно следующее:

    wrapper  | A signature was found in "C:\wrapper-windows-x86-32-3.5.7-pro\bin\wra
    pper.exe", but checksum failed: (Errorcode: 0x800b010a)
    A certificate chain could not be built to a trusted root authority. (0x800b010a)
    wrapper  |   Signer Certificate:
    wrapper  |     Serial Number:
    wrapper  |       00 97 06 fe b5 6e 56 cc cb 66 3a bb 55 a7 a0 e4 76
    wrapper  |     Issuer Name: UTN-USERFirst-Object
    wrapper  |     Subject Name: Tanuki Software Ltd.
    wrapper  |   TimeStamp Certificate:
    wrapper  |     Serial Number:
    wrapper  |       47 8a 8e fb 59 e1 d8 3f 0c e1 42 d2 a2 87 07 be
    wrapper  |     Issuer Name: UTN-USERFirst-Object
    wrapper  |     Subject Name: COMODO Time Stamping Signer
    wrapper  |     Date of TimeStamp : 2010/12/19 22:32
    wrapper  | The Wrapper will shutdown!

Решение проблемы заключается в установке недостающих/просроченных сертификатов, и описано здесь: https://wrapper.tanukisoftware.com/doc/english/troubleshooting.html#9

Если доступ на сайт отсутствует, то использовать online proxy. Копия страницы troubleshooting здесь: http://prom-auto.ru/doc/wrapper/troubleshooting.html

Сертификаты можно скачать здесь: http://prom-auto.ru/download/?dir=dist/wrapper/cert

## Запуск через wrapper YAJSW

YAJSW (Yet Another Java Service Wrapper)

Скачивание и установка:

- Скачать дистрибутив последней версии https://sourceforge.net/projects/yajsw/files/yajsw/
- Распаковать в jroboplc/wrapper и переименовать распакованную папку в jroboplc/wrapper/yajsw
- Обновить скрипт запуска (см. далее)

Обновление скриптов запуска:

- Скопировать файл jroboplc/wrapper/yajsw-conf/wrapper.conf в jroboplc/wrapper/yajsw/conf. Дальнейшие изменения в конфигурации производить в jroboplc/wrapper/yajsw/conf/wrapper.conf
- Для изменения имени сервиса (если на одной машине планируется несколько инсталляций) использовать параметр appname
- Для изменения способа запуска сервиса использовать параметр starttype

Внимание! В Windows автоматический старт не работает. Для автоматического запуска использовать режим DEMAND_START и создать ярлык в папке Автозагрузка на файл bat/startService.bat

Для работы yajsw требуется, чтобы команда java выполнялась из любого каталога на любом уровне для всех пользователей. Вариант осуществления:

- в windows: добавить javaBin в path системы
- в linux: добавить ссылки на java и javac в /usr/bin

Управление:

- В каталогах jroboplc/wrapper/yajsw/bat находятся необходимые скрипты для управления сервисом в windows
- Для linux - jroboplc/wrapper/yajsw/bin

## Запуск как java-приложение

Пример строки запуска, если текущий каталог `jroboplc`:

      java -jar jar/core/jroboplc.jar -cfg conf -cmd "ansi on|start"

## Запуск из docker-контейнера

https://hub.docker.com/r/promauto/jrobo