Весенняя загрузка .jar к цифровой океанской капле (Linux Ubuntu): веб-сервер не запустился Порт 80 уже использовался - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть Digitalocean Droplet (виртуальный частный сервер), на котором работает Ubuntu 18.04. Я установил Apache веб-сервер и на нем работает мой веб-сайт. Он открыт для трафика c через порт HTTP 80. Мой виртуальный хост настроен на /var/www/MyDomainNameHere/public_html/, и у меня есть собственное доменное имя, указывающее на IP-адрес.

Я пытаюсь развернуть / запустить исполняемый файл. фляга, которая содержит загрузочный API Spring. Он имеет несколько базовых HTTP-запросов GET / POST / DELETE. Когда я запускаю флягу по

java -jar rest-service.jar

, я получаю это сообщение об ошибке

***************************
APPLICATION FAILED TO START
***************************

Description:

Web server failed to start. Port 80 was already in use.

Означает ли это, что веб-сервер Apache открыт для Traffi c через порт 80 на эта цифровая океаническая капля не позволяет мне запускать jar API на том же сервере (JAR загружает встроенный сервер Apache Tomcat, я установил его на порт 80 на основе исследований)? Нужно ли покупать еще одну капельку? Или я могу изменить номер порта для пружинного загрузочного фляги на другой, отличный от 80-го? Это API, поэтому я должен быть в состоянии достичь конечных точек

Ответы [ 2 ]

2 голосов
/ 11 апреля 2020

Да, Apache Веб-сервер использует порт, и вы меняете приложение Spring 80 на любой другой порт и используете обратный прокси-сервер в Apache Веб-сервере. вот ссылка для настройки обратного прокси

Apache в качестве обратного прокси с mod_proxy

0 голосов
/ 13 апреля 2020

Так что я отвечу на свой вопрос. Я гуглил и искал stackoverflow, но большинство людей использовали обратный прокси-сервер для направления трафика c на их автономный встроенный сервер Tomcat (большую часть времени приложение Spring Boot), что не подходило для моей ситуации.

Тем не менее, у меня уже был веб-сайт stati c html на alpizano.me, размещенный на Digital Ocean, который я хотел использовать в качестве внешнего интерфейса и переадресовывать только определенные HTTP-запросы. в мое приложение Spring Boot, которое по сути являлось REST API.

Так что после установки Java и PostgreSQL на мою каплю DigitalOcean я SCP-файл моего JAR (запустил ./mvnw clean package -Dmaven.test.skip=true для его создания) на мой сервер в каталог, например, /var/myapp.

Затем, проведя несколько дней исследований и попробовав несколько вещей, я смог найти комбинацию, которая позволила бы мне просматривать мой веб-сайт при переходе к alpizano.me, но все же позволяет мне подключаться к моим конечным точкам API, которые также работали на моем сервере, после того, как я запустил свой jar через java -jar myapp.jar

Так что мне пришлось настроить мой .conf файл в каталоге /etc/apache2/sites-available (я использовал только 1 виртуальный хост для этого проекта) как:

<VirtualHost *:80>
    ServerName yourservername.com
    DocumentRoot /var/www/yourservername.com/public_html

    ProxyPreserveHost On
    ProxyPass /api http://127.0.0.1:8080/
    ProxyPassReverse /api http://127.0.0.1:8080/
</VirtualHost>

Обратите внимание на маршрут /api для маршрутизации, которая идет во встроенный Tomcat через порт 8080 (вы можете не используйте порт 80, иначе он будет конфликтовать с Apache сервером, который уже прослушивает порт 80), иначе, если это просто /, то он больше не позволит traffi c основывать веб-сайт (alpizano.me), что не это не то, что я хотел.

В этом не было бы необходимости, если бы у вас было отдельное приложение, которое вы хотели бы направить трафиком c, тогда вы могли бы просто использовать / в качестве своего маршрута, очевидно. Я видел другие посты, в которых говорилось о пересылке заголовков, но это, казалось, не имело для меня никакого значения, и я считаю, что ProxyPreserveHost On все равно об этом позаботится

Удачи.

Рекомендации:

https://www.digitalocean.com/community/tutorials/how-to-use-apache-as-a-reverse-proxy-with-mod_proxy-on-ubuntu-16-04

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...