Это правильно (убивать java-процессы между попытками устранения неполадок), и это один из лучших ответов, которые я читал для тех, кто занимается подобным поиском ошибок. Процессы java не завершаются корректно, если вы устанавливали программу, когда порт уже был занят, по-видимому. Также есть процесс «mongod.exe», который может оставаться запущенным даже после удаления, что случилось у меня. Папки %userprofile%\Ubiquiti UniFi\logs и Lib были заблокированы mongod.exe и не могли быть очищены во время удаления. Логи в %userprofile%\Ubiquiti UniFi\logs вероятно расскажут всё, что нужно знать, если контроллер не запускается. Ещё один момент, который UBNT стоит улучшить — установщик не даёт выбрать папку установки. Почему он обязан ставиться именно в профиль пользователя — для меня загадка. На диске C:\, где был установлен контроллер, у меня было всего 3 ГБ свободного места. Журнал требует 3379 МБ, поэтому в логе mongod.exe я увидел такую ошибку:
Mon Sep 22 13:43:26 [initandlisten] Please make at least 3379MB available in C:/Users/dBo/Ubiquiti UniFi/data/db/journal or use --smallfiles
У меня был выбор: использовать smallfiles, перенаправить папки профиля или очистить место. Я просто подчистил диск и переустановил.
Если вы пытаетесь понять, какие процессы слушают стандартные порты, можно использовать эти команды, чтобы получить PID, а потом найти процесс через диспетчер задач или командную строку:
C:\>netstat -ano | find "0.0.0.0:8080"
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 14368
Жирным выделен PID процесса, который слушает этот порт. Обратите внимание, что 0.0.0.0 означает, что служба слушает порт на всех интерфейсах. Можно не указывать 0.0.0.0:, или использовать конкретный адрес интерфейса, но тогда может быть слишком много событий.
Проверьте это для всех портов из файла %userprofile%\Ubiquiti UniFi\data\system.properties, чтобы убедиться, что никаких служб не слушают их. Вот список стандартных портов из моего файла:
# unifi.http.port=8080 # device inform
# unifi.https.port=8443 # controller UI / API
# portal.http.port=8880 # portal redirect port for HTTP
# portal.https.port=8843 # portal redirect port for HTTPs
# unifi.db.port=27117 # local-bound port for DB server
С этими данными можно добавить колонку PID в диспетчер задач Windows и найти процесс, или, если хотите командную строку, проверить, какой процесс использует порт командой:
C:\>tasklist /svc | find "14368"
mcservice.exe 14368 N/A
В моём случае mcservice.exe (сервис Mirth connector) слушал 8080 на всех интерфейсах. Я поменял порты на что-то из эфемерного диапазона, и теперь всё работает гладко. Для простоты я просто префиксировал их цифрой, если порт был меньше или равен 65535; если знаком со стандартными портами, легко распознать 18080 как http, а 18443 — как https.
Надеюсь, это кому-то поможет, если возникнут проблемы с запуском контроллера.
-d