Запуск сервера Grizzly с помощью nginx

Я использую программу под названием OpenTripPlanner и хочу запустить ее на своем сервере nginx. OpenTripPlanner работает так, что он запускает сервер Grizzly и делает веб-интерфейс доступным через браузер через указанный порт. При локальном запуске это не проблема, я просто запускаю эту команду

java -Xmx1G -jar otp.jar --build graphs/graph --inMemory --port 1010

и я могу получить доступ к веб-интерфейсу через http://localhost:1010, Но когда я попробовал его на своем сервере, я не смог сделать его доступным из внешнего браузера. Я исправил эту проблему с помощью обратного прокси-сервера, и теперь я могу выполнить приведенную выше командную строку и получить доступ к веб-интерфейсу через otp.****.ca/port1010/, Основная проблема в том, что мне сейчас нужно добавить sudo перед командной строкой (вероятно, из-за обратного прокси). Это проблема, потому что я хочу запустить эту командную строку с PHP exec функция и так как он будет выполняться как пользователь www-data (сервер на Ubuntu), он не имеет sudo разрешение.

Когда я пробую скрипт PHP, командная строка считается действительной, но jar файл выводит следующее сообщение об ошибке

OpenTripPlanner 1.3.0 0b4a0906f372d597ee1ee6cf90e63a7117f33cc9
19:39:28.175 ERROR (OTPMain.java:76) Parameter error: : port 1010 is not available. Permission denied (Bind failed).

Я изменил владельца каждой папки внутри public_html в www-data но это все еще не работает.

Я думал о некоторых решениях, но хотя я уверен, что они оба могут работать, они оба выглядят довольно ужасно.

Первое, чтобы дать root разрешение www-data, Это был бы мой самый последний выбор из-за всех проблем безопасности, которые это включает.

Второй — не заставлять PHP выполнять командную строку. Что бы PHP сделал, просто написал бы в текстовом файле порт, на котором должен запускаться сервер, и путь к графику (graphs/graph в приведенной выше командной строке) и будет Cronjob с root разрешение на запуск сервера, проверяющего файл каждые 2 секунды или около того и запускающего командную строку выше с заданными параметрами. Затем cronjob возвращает PID и выходные данные в PHP, чтобы он мог выполнять свои задачи. Мне это не нравится, потому что в этом процессе может произойти столько ошибок (повреждение файлов, перестал работать cronjob и т. Д.), Что я не думаю, что он может быть эффективно реализован.

Итак, если у кого-то есть какие-либо идеи о том, как решить мою проблему или если вы считаете, что мне следует использовать одно из двух решений, которые я придумала, пожалуйста, дайте мне знать.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]