h1. Инструкция по запуску сервиса Android на LINUX с использованием SUPERVISOR

h2. Настройки JAVA

Первое, что необходимо проверитm, путь до java

<pre> which java </pre>

Создаем и устанавливаем новую в папку ( версия jdk-11.0.14)

<pre> mkdir /usr/lib/jvm/jdk-11.0.14 </pre>

Разархивируем java в папку где: 

_/home/oracle/Downloads/jdk-11.0.14_linux-x64_bin.tar.gz_ - путь до архива(любой ваш) 
_/usr/lib/jvm/ - путь куда разархивируем_

<pre> tar -xf /home/oracle/Downloads/jdk-11.0.14_linux-x64_bin.tar.gz -C /usr/lib/jvm </pre>

Проверяем что там она есть

<pre> ls -la /usr/lib/jvm/jdk-11.0.14 </pre>

Устанавливаем алтернативную версию JAVA, выполняя скрипты по очереди

<pre>sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk-11.0.14/bin/java" 0 </pre>
<pre>sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk-11.0.14/bin/javac" 0 </pre>
<pre>sudo update-alternatives --set java /usr/lib/jvm/jdk-11.0.14/bin/java </pre>
<pre>sudo update-alternatives --set javac /usr/lib/jvm/jdk-11.0.14/bin/javac </pre>

Прописываем пути в environment соблюдаем правильность путей до версии java (jdk-11.0.14)

Открываем его

<pre>nano /etc/environment </pre>

Прописываем туда

<pre>:/usr/lib/jvm/jdk-11.0.14/bin:/usr/lib/jvm/jdk-11.0.14/db/bin:/usr/lib/jvm/jdk-11.0.14/jre/bin
J2SDKDIR="/usr/lib/jvm/jdk-11.0.14"
J2REDIR="/usr/lib/jvm/jdk-11.0.14/jre"
JAVA_HOME="/usr/lib/jvm/jdk-11.0.14"
DERBY_HOME="/usr/lib/jvm/jdk-11.0.14/db"</pre>

После необходимо сделать перезапуск окружения

<pre>exec $SHELL</pre>

Проверяем какая верся java теперь является по умолчанию 

<pre>
java -version
</pre>

В нашем случае будет следующий ответ

<pre>
java version "11.0.14" 2022-01-18 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.14+8-LTS-263)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.14+8-LTS-263, mixed mode)
</pre>

*h3. Подготовка сервера-андройд*

Создаем папку под файлы сервиса 

<pre>
mkdir -p /opt/mcis/data
</pre>

В папку */opt/mcis* положить _mcis-mobile-service_0.0.10-WOL.jar_ (джарник сервера-андройд)
В папку */opt/mcis/data* полоджить _client_keystore.p12_ (лицензии)
 

Переходим в папку с JAR'ником

<pre>
cd /opt/mcis
</pre>

И проверяем  на запуск наш сервис
(Заполнив параметры без "")


<pre>
java \
        -jar mcis-mobile-service_0.0.10-WOL.jar \
        --spring.datasource.url=jdbc:oracle:thin:@"IPбазы данных":"порт базы данных":"имя инстанса" \
        --spring.datasource.username="название схемы" \
        --spring.datasource.password="пароль схемы" \
        --server.port="порт на котором будет работать андройд-сервер" \
        --app.session.timeout=900000 \
        --app.session.max-sessions="Кол-во мобильных лицензий клиента" \
        --app.session.exit=3000000
</pre>


Должно ответить  что запустилось на порту указанном в конфиге 

<pre>
o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): Указанный порт андройд-сервера       
</pre> 


*h4. SUPERVISORD*

Создаем папку конфигов 

<pre>
mkdir -p /etc/supervisor/conf.d
</pre>

Редактируем файл конфига 

<pre>
nano /etc/supervisord.conf
</pre>

В самом конце раздел с ссылкой на файлы конфига 

<pre>
[include]
files = /etc/supervisor/conf.d/*.conf
</pre>

Создаем свой конфиг

<pre>
nano /etc/supervisor/conf.d/wms.conf
</pre>

Туда пишем следующее 

<pre>
[program:android]
# Рабочая папка
directory=/opt/mcis

#Пути до java если их несколько, и java не ниже 11

environment=PATH="/opt/mcis/:/usr/lib/jvm/jdk-11.0.14/bin/",JAVA_HOME="/usr/lib/jvm/jdk-11.0.14"

#Команда запуска 
#Если многострочная, то вторая и далее строка начинается с TAB
#Заполнить параметры без ""
command=java
        -jar mcis-mobile-service_0.0.10-WOL.jar
        --spring.datasource.url=jdbc:oracle:thin:@"IPбазы данных":"порт базы данных":"имя инстанса"
        --spring.datasource.username="название схемы"
        --spring.datasource.password="пароль схемы"
        --server.port="порт на котором будет работать андройд-сервер"
        --app.session.timeout=900000
        --app.session.max-sessions=5
        --app.session.exit=3000000
#Файлы логов        
stdout_logfile=/opt/mcis/andr.out.log
stderr_logfile=/opt/mcis/andr.err.log
stdout_logfile_maxbytes=5MB
autostart=true
autorestart=true
stopsignal=KILL

</pre>

Перечитать конфигурацию для применения изменений

<pre>
supervisorctl reread
</pre>

Перезапустить конфигурацию

<pre>
supervisorctl update
</pre>

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

<pre>
supervisorctl status
</pre> 

Проверить что в логе нет ошибок 

<pre>
tail -f -n 190 /opt/mcis/andr.out.log
</pre>


[Ссылка на файлы](https://rm.cwms3000.ru/projects/cwms3000/wiki/Oracle)