Java приложение на бесплатный хостинг

Сегодня мы поговорим о том, как выложить Java приложение на бесплатный хостинг и этим самим показать свое творение другим людям.

Я долго искал бесплатных хост-провайдеров с поддержкой Java, но не находил ничего, что могло бы подойти для моих требований: выложить приложение на Java как обычный сайт.

Сейчас в мире есть множество клауд платформ, которые можно использовать в качестве площадки для сайта на Java, но удовольствие это зачастую не из дешевых. Но, все же мне удалось найти клауд провайдера у которого есть бесплатный, естественно ограниченный тарифный план для приложений на джава.

Heroku — облачная платформа, которая поддерживает очень много языков программирования в том числе и Java. Данная платформа имеет бесплатный тарифный план, который позволяет загружать не более 5 приложений на один аккаунт и после 30 минут не активности приложения — оно «засыпает». Для учебных целей этого плана более чем достаточно. Для коммерческих целей можно воспользоваться другими тарифными планами.

Именно на Heroku мы и попробуем выложить приложение на java. Для этих целей можно использовать приложение, которое мы писали в цикле статей: Простое приложение на java.

Первое, что нам нужно для того, чтобы задеплоить java приложение на бесплатный хостинг — это зарегистрироваться на heroku. Создать аккаунт очень просто: следуем инструкциям на сайте провайдера.

Далее нужно в личном кабинете создать новое приложение: New -> Create new app

create new app heroku

После этого у Вас должно появиться окно для выбора названия приложения и региональности:

имя приложения и регион

Имя можете задать любое. По поводу региона: лучше выбрать Европу — пинг будет меньший.

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

Если у Вас приложение на другой базе данных например MySql — ничего страшного. Скрипты вставки, выборки, удаления и обновления данных идентичны. Нужно всего лишь немного изменить скрипт создания таблиц. А именно: если в MySql AUTOINCREMENT для автоматического увеличения целочисленный переменной, то в Postgres — SERIAL. Это все что Вам нужно переделать в скрипте создания таблиц.

Прежде всего, создадим базу на хероку. Для этого нужно нажать на вкладку Resources созданного приложения и нажать на кнопку Find more add ons:

postgres creation

Далее откроется окно где будет множество приложений. Вам нужно будет найти Postgres. При нажатии на Heroku postgres откроется окно где будет кнопка install heroku postgres. Нажимаем ее, выбираем приложение, к которому мы хотим добавить базу данных и жмем ОК. База данных создана. Для того чтобы посмотреть пользователя, пароль и имя базы данных нужно нажать на созданную базу данных, выбрать вкладку Settings и нажать кнопку show database credentials.

database credentials

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

Для этого переходим в наше приложение и ищем где мы подключаемся к базе.

соединение с базой в джава

Просто замените пользователя, пароль и урл к базе на те, который Вам создал клауд.

новые подключения к клауд

Для того, чтобы подключиться к удаленной базе с локальной машины добавьте еще один параметр к урл: sslmode=require как показано на рисунке выше.

Далее нужно сделать изменения в нашем pom.xml. Так как мы используем постгрес — не забудьте добавить драйвер подключения именно для этой базы данных.

Код    
  1. <dependency>
  2.             <groupId>org.postgresql</groupId>
  3.             <artifactId>postgresql</artifactId>
  4.             <version>9.4.1208</version>
  5.             </dependency>

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

Код    
  1. <plugin>
  2.                 <groupId>org.apache.maven.plugins</groupId>
  3.                 <artifactId>maven-dependency-plugin</artifactId>
  4.                 <version>2.3</version>
  5.                 <executions>
  6.                     <execution>
  7.                         <phase>package</phase>
  8.                         <goals>
  9.                             <goal>copy</goal>
  10.                         </goals>
  11.                         <configuration>
  12.                             <artifactItems>
  13.                                 <artifactItem>
  14.                                     <groupId>com.github.jsimone</groupId>
  15.                                     <artifactId>webapp-runner</artifactId>
  16.                                     <version>8.0.30.2</version>
  17.                                     <destFileName>webapp-runner.jar</destFileName>
  18.                                 </artifactItem>
  19.                             </artifactItems>
  20.                         </configuration>
  21.                     </execution>
  22.                 </executions>
  23.             </plugin>

С pom.xml готово. Осталось добавить еще один файл настроек к нашему приложению: Procfile. Для этого в корне приложения добавьте файл с именем Procfile. В него положите следующее содержимое: 

Код    
  1. web:    java $JAVA_OPTS -jar target/dependency/webapp-runner.jar --port $PORT target/*.war

Теперь наше приложение готово к отправке в cloud. Одним из преимуществ Heroku является поддержка деплоя приложений через github. Это очень удобно. Вам нужно всего лишь выложить приложение на github, «приконектить» гитхаб с хероку и нажать кнопку деплоя.

Сейчас я не буду расписывать, как выложить приложение на гитхаб. Вот видео с подробными инструкциями:

Когда Вы выложили приложение на гитхаб — нужно зайти в кабинет heroku, выбрать приложение и перейти на вкладку deploy. Выберите Github из списка deploy method. Далее нужно приконектить свой аккаунт, выбрать репозиторий с приложением и нажать кнопку deploy branch. Теперь Вам осталось подождать пока приложение задеплоиться и можно на него переходить.  Оно будет иметь имя http://имя_приложения.herokuapp.com/

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

Это не единственный способ отправки java приложения на бесплатный хостинг. Тем более есть и другие клауд-провайдеры. Amazon например предоставляет пользование своими сервисами бесплатно один год. Можно попробовать использовать Amazon. Я в свое время открыл для себя Heroku и пользуюсь им до сих пор.

Как всегда, перед статьей я записал видео с подробными инструкциями по отправке Java приложения на бесплатный хостинг Heroku.

Если у Вас что-то не работает или не получается, у Heroku есть очень обширная документация. Она поможет при возникновении ошибок.

Добавить комментарий