Java Play 2 — Развертывание

Обновлено 18.08.2012

Я использую Play 2.0.2 и хочу развернуть свое приложение в Amazon Webservices. Я думаю, что проще всего это сделать через Elasticbeanstalk.

Я использовал Play2war для упаковки своего приложения https://github.com/dlecan/play2-war-plugin/

Я смог упаковать его с

play war

Согласно руководству по использованию play2war, я переименовал свой файл в ROOT.war, потому что я использовал 32-битный Linux Tomcat7.

Я также использовал сервлет 3.0, как описано в руководстве по play2war. (кот 7 -> сервлет 3.0).

Размер файла 31мб.

Каждый раз, когда я использую Elasticbeanstalk, я получаю один и тот же журнал.

2012-08-18 00:25 GMT+0200
WARN
Environment health has been set to RED
2012-08-18 00:25 GMT+0200
INFO
Launched environment: elosource. However, there were issues during launch. See event log for details.
2012-08-18 00:25 GMT+0200
INFO
Your health check URL may be misconfigured. If your application does not respond to requests at http://elosource.elasticbeanstalk.com:80/, modify the health check URL to a valid path.

Я протестировал его с Linux 32/64 бит, Tomcat7 (сервлет 3) и Tomcat6 (сервлет 2.5). Я всегда получаю один и тот же результат.

Я также попытался добавить дополнительный html-файл для проверки работоспособности.

  • Что бы вы мне порекомендовали сделать?

  • Какие у меня есть альтернативы для запуска моего приложения на ec2?

  • Есть ли руководство, в котором объясняется, как вручную развернуть приложение на ec2 со всеми необходимыми зависимостями, такими как mongodb, play и т. д.?

  • Кроме того, файлы WAR относительно велики, ~ 30 МБ, с моим dsl 1k загружать такой файл большого размера - настоящая проблема. Есть ли способ загрузить изменения только с помощью Elasticbeanstalk?


person Maik Klein    schedule 12.08.2012    source источник
comment
Я не понимаю, что в вашем журнале нет ошибок, почему вы делаете это в журнале ошибок?   -  person biesior    schedule 12.08.2012
comment
Извини, я очень устал вчера. В журнале должна была быть всегда одна и та же ошибка   -  person Maik Klein    schedule 12.08.2012


Ответы (4)


Хорошо, я знаю, что это не прямой ответ на ваш вопрос, поскольку я не использую beanstalk, но как вы просили об этом в одном из комментариев:

Вот как я запускаю свое приложение play2 на экземпляре Linux EC2 с установленным jvm:

  1. на вашем локальном компьютере в каталоге вашего проекта запустите play dist
  2. отправьте файл dist/yourapp-1.0-SNAPSHOT.zip (или любое другое имя дистрибутива, которое вы настроили) в экземпляр EC2.
  3. ssh к вашему экземпляру
  4. разархивируйте файл dist в нужную директорию и cd туда
  5. беги chmod +x start
  6. беги nohup ./start &

теперь у вас есть приложение play2, изначально работающее на EC2, с веб-сокетом и всеми крутыми вещами. Мне не нужно было ничего специально настраивать в игре, чтобы это работало. Я использую базу данных RDS, настроенную как любая другая БД в игре.

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

Надеюсь, это поможет.

person Mortimer    schedule 21.08.2012
comment
Спасибо, это то, что я ищу. Один вопрос: я использую MongoDB, нужно ли вручную устанавливать зависимости на моем экземпляре Linux или play делает все за меня? - person Maik Klein; 22.08.2012
comment
Должен сказать, что я не использовал MongoDB, поэтому не могу быть уверен. Play должен позаботиться о компиляции и запуске правильных библиотек, но вам нужно будет где-то запустить сервер mongoDB. Если вы планируете запустить это и на EC2, вам также придется запускать сервер вручную (насколько я понимаю, вы все равно не можете запустить сервер mongoDB на beanstalk). Однако вы можете получить размещенный сервер mongoDB (например, mongolab) или вместо этого просто использовать собственный RDS, SimpleDB или Dynamo от Amazon. - person Mortimer; 22.08.2012
comment
Кроме того, я только что нашел это: eugenedvorkin. com/ Это явно касается play1, и развертывание play2 может отличаться от развертывания play1, но это может вам помочь. - person Mortimer; 22.08.2012
comment
и у MongoDB есть страница, посвященная установке на EC2: mongodb.org/display/DOCS/ Амазон+EC2 - person Mortimer; 22.08.2012
comment
активатор универсальный:packageZipTarball удаляет шаг 5 - person digitebs; 08.01.2017

Вы не должны упаковывать свое приложение как войну, если вы не обязаны это делать или у вас нет очень веской причины, как вы потеряете отличные возможности фреймворка (даже с сервлетом 3.0 вам будет не хватать поддержки websocket).

Можно развернуть приложение через службу dotCloud. Сервис работает поверх Amazon EC2 и позволяет вам легко выбирать стек и масштабировать его по вертикали. Конечно, вы должны решить, стоит ли цена, но вы можете попробовать бесплатно.

Есть и другие поставщики PaaS, которые позволяют развертывать приложения play 2:

person mchv    schedule 18.08.2012
comment
Да, спасибо, я использую heroku, но у меня есть один вопрос, исправит ли сервлет 3.1 ВСЕ проблемы? Или родной клиент play2 всегда будет лучше? Я хотел бы узнать, как развернуть собственное приложение play2 в ec2. Не могли бы вы порекомендовать мне некоторые ресурсы? - person Maik Klein; 18.08.2012

INFO: The APR based Apache Tomcat Native... не является важной частью. Tomcat запустится без него, и его компиляция не сделает ваш экземпляр работоспособным. На самом деле ваш журнал catalina.out выглядит совершенно нормально.

Я предполагаю, что сообщения об ошибках Beanstalk точны: у вас неправильно настроен URL-адрес проверки работоспособности. По какой-то причине ваше приложение просто не возвращает корневой документ через порт 80, и эта проблема может возникнуть по нескольким причинам. Попробуйте добавить статическую HTML-страницу или простую jsp-страницу в корневой каталог вашего приложения (верхний уровень в WAR), и пусть Beanstalk проверит это. Конфигурация порта Beanstalk по умолчанию должна работать (если я правильно помню, она передает трафик через apache на tomcat и обратно, но я давно не смотрел), но в любом случае не помешает проверить $CATALINA_HOME/conf/server.xml, просто чтобы посмотреть, что случилось.

person Christopher    schedule 12.08.2012
comment
Спасибо, я посмотрю на это. Но я все еще очень новичок в веб-сервере, поэтому потребуется некоторое время, пока я снова не отвечу. - person Maik Klein; 12.08.2012
comment
Просто попробуйте HTML-страницу, которая не говорит ничего, кроме «хорошо». Это, по крайней мере, изолирует его от проверки работоспособности или Tomcat. - person Christopher; 12.08.2012

Если вы хотите перейти на Play 2.3.x или новее, Boxfuse имеет встроенную поддержку Play 2 для решения этой проблемы.

Теперь вы можете просто выполнить boxfuse run my-play-app-1.0.zip -env=prod, и это автоматически:

  • создать минимальный образ AMI специально для вашего приложения Play 2
  • создать эластичный IP
  • создайте группу безопасности с правильными разрешениями
  • запустить экземпляр вашего приложения

Все будущие обновления выполняются как сине-зеленые развертывания без простоев.

Это также работает с Elastic Load Balancer и Auto-Scaling Groups, а уровень бесплатного пользования Boxfuse предназначен для соответствия уровню бесплатного пользования AWS.

Подробнее об этом можно прочитать здесь: https://boxfuse.com/blog/playframework-aws

Отказ от ответственности: я являюсь основателем и генеральным директором Boxfuse

person Axel Fontaine    schedule 10.12.2015