Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1
RSS
Не удаётся установить контроллер на Windows с AdoptOpenJDK, UniFi Network
 
Я опубликовал это в теме выпуска 5.10.21, но понял, что, наверное, стоит создать отдельную тему. Oracle Java больше не бесплатна для коммерческого использования, поэтому я перешёл с Oracle Java на AdoptOpenJDK на Windows 2008R2. Для запуска контроллера как сервиса приходится делать «хакинг» реестра, но это работает.  
Java установлена:  
Java в переменной PATH:  
После установки сервиса контроллер определил, где находится java.home:  
Но когда я попытался обновить контроллер до версии 5.10.21, установщик, запуская команду javaw.exe, выдал всплывающее окно с сообщением: «Это приложение требует Java. Нажмите OK, чтобы скачать с java.com»:  
Если нажимаю Отмена, установка прерывается. Если нажимаю OK, открывается браузер на java.com и установка останавливается.  
То есть, я никак не могу обновить контроллер, если не использую Oracle Java. Как установить контроллер без Oracle Java? Как запустить его как сервис без правок в реестре?
 
Для меня предложенная настройка RuntimeLib выше не позволила запустить сервис. Установка прошла нормально, но, вероятно, это потому что установщик не использует jvm.dll. После долгих поисков информации я наконец-то нашел другое решение! Сервис работает нормально, если запускать его в режиме Java, а не в режиме Jvm.

P.S. Единственный минус — возможно, придется применять этот простой фикс после обновления Unifi Controller.

Вот код реестра, чтобы изменить атрибут mode в двух местах. Просто сохраните его как unifi-service-mode.reg и запустите.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Apache Software Foundation\Procrun 2.0\UniFi\Parameters]

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Apache Software Foundation\Procrun 2.0\UniFi\Parameters\Start]

"Mode"="Java"

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Apache Software Foundation\Procrun 2.0\UniFi\Parameters\Stop]

"Mode"="Java"
 
Регистрационный файл выше работает с adoptopenjdk 1.8.0_265 (win10 .msi), путь в файле был изменён для соответствия расположению JDK. Установлена версия контроллера 5.13.29. Версия установщика контроллера для Linux некорректно работает с openSUSE 15.1 Leap.
 
Мне удалось обойти эту ошибку, повторно запустив установку AdoptOpenJDK в режиме "изменения" и выбрав дополнительный чекбокс, который как-то связан с ключами реестра Oracle. Думаю, таким образом я достиг того же результата, что и предыдущий автор, но использовал только официальную программу установки AdoptOpenJDK и не лез в реестр вручную.
 
Благодаря этому посту я смог создать «Fake Oracle Jave entries.reg» файл для AdoptOpenJDK:  
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]
"CurrentVersion"="1.8"

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.8]
"JavaHome"="C:\\Program Files\\AdoptOpenJDK\\jdk8u202-b08-jre"  
"RuntimeLib"="C:\\Program Files\\AdoptOpenJDK\\jdk8u202-b08-jre\\bin\\server\\jvm.dll"

С этим настроенным файлом мне удалось обновить контроллер до версии 5.10.23.
 
Я писал в блоге о том, как запустить сервис с AdoptOpenJDK. Для этого нужно сделать не самый приятный хак с реестром. Возможно, с Coretto тоже сработает: https://www.mcbsys.com/blog/2019/04/run-unifi-controller-on-adoptopenjdk/

Ага, это помогло! На самом деле я читал твою инфу, но у меня были сложности с запуском сервиса на OpenJDK, и я забыл про следующее: с Corretto и твоим лайфхаком всё работает. Нужно было просто сделать вот так:  
"C:\Users\<UserName>\Ubiquiti UniFi\bin\UniFi" //RS//UniFi --JavaHome "C:\Program Files\Amazon Corretto\jre8" --Jvm "C:\Program Files\Amazon Corretto\jre8\bin\server\jvm.dll"

Кстати: установил JDK (Amazon Corretto) x64 [8.0.212.4] через Ninite. Не думаю, что Ninite что-то особенное делает, просто упомянул.
 
Я написал в блоге, как заставить сервис работать с AdoptOpenJDK. Для этого нужен уродливый хак в реестре. Может, с Coretto тоже сработает: https://www.mcbsys.com/blog/2019/04/run-unifi-controller-on-adoptopenjdk/
 
Amazon Coretto мне тоже кажется получше. На самом деле, установщик принимает Coretto. Работает технически так же, как adoptopenjdk (по крайней мере, так кажется — глубоко не копался). Установщик также позволяет запустить программу сразу после установки. Но сервис не запускается, если ставить вот так (хотя команды работают):

cmd  
cd /d "%UserProfile%\Ubiquiti UniFi\"  
java -jar lib\ace.jar installsvc  
java -jar lib\ace.jar startsvc
 
pinback с https://community.ui.com/questions/a0be18b9-d996-411c-83a6-c2154ffffa73#comment/f2e61498-6b40-4e86-a13b-f61925922d8b  
Я тоже не могу установить эту версию. И JAVA 8 теперь вообще не скачать.  
Очень нужно сделать установщик для Windows, который не проверял бы Java от ORACLE на каждом шагу (установщик, Unifi.exe, сервисный менеджер). Учтите, что на самом деле всё бы работало и с другими JDK / JRE.  
Тяжело поверить, что такая компания, как Ubiquity, просто не знает об этом или ей всё равно, и они просто игнорируют проблему.
Страницы: 1
Читают тему (гостей: 1)