2014-10-15 2 views
2
  1. У меня есть файл войны ,. myapp.war (это случается, Grails приложение, но это не материал)
  2. Я загрузить это на s3 ведро, скажем, MyApp в нас-запад 2
  3. Я настроить OpsWorks используя хранилище S3 Тип:Неисправность развертывания военной службы OpsWorks от S3

    Тип Repository: S3 Repository URL: https://myapp.s3-us-west-2.amazonaws.com/myapp.war Access ключ ID: ключ с разрешением на чтение на выше ведро секретный ключ доступа: секрет для этого ключа

  4. Deploy к экземпляру в Java слой (Tomcat 7)

  5. Все огни зеленые, развертываний удалось
  6. Но приложение на самом деле не развернуты
  7. Артобстрел на экземпляре и смотреть в/USR/доли/tomcat7/WebApps я найти директорию с именем 'MyApp. Внутри этого каталога находится файл под названием «архив». «архив» представляется военным файлом, но он не называется «archive.war», и он находится в подкаталоге webapps, поэтому tomcat не собирается его развертывать.

Теперь документы OpsWorks говорят, что архив должен быть «zip-файлом». Но:

  1. сжать до myapp.war в архив почтового индекса «myapp.war.zip» и изменить путь к этому файлу приводит к «MyApp» содержащий «myapp.war». Нет развертывания, поскольку tomcat не ищет военные файлы в 'webapps/myapp'

  2. Изменение имени 'myapp.war' на 'myapp.zip' и изменение пути репозитория приводит к 'myapp', содержащему один файл 'архив' снова.

So. Может ли кто-нибудь описать, как правильно предоставить военный файл OpsWorks с S3?

ответ

2

Похоже, что проблема связана с тем, как создается zip-архив.

Банки, война и т. Д., Созданные с помощью инструмента java 'jar', не работают. Zip-архивы, созданные с помощью zip-инструмента, а затем переименованы в расширение «.war».

Это объясняется здесь: https://forums.aws.amazon.com/thread.jspa?messageID=559582&#559582

Цитирование ответ, что пост в:

Наш текущий сценарий экстракт не правильно идентифицировать WAR файлы. Если вы распаковываете файл WAR и используете zip для его упаковки, он должен работать до , мы обновляем наш скрипт.

Так процедура, которая работает, чтобы:

  1. Explode войны, сделанную в вашей среде разработки (в случае Грааль, война сборка очищает промежуточный каталог для войны, поэтому вы надеваете у вас есть взорванный военный каталог, чтобы застегнуть вверх, вам нужно его распаковать сначала.)
  2. Закрепить содержимое каталога, созданного путем взрыва войны, используя инструмент zip (или, если ваш инструмент сборки покидает взорванную каталог войны там, затем просто застегните его непосредственно)
  3. Возможно, ren ame новый zip-архив, чтобы иметь расширение .war.
  4. Опишите процедуру с исходного вопроса, шаг 3, то есть загрузите войну в ведро s3 и
  5. Укажите путь S3 к файлу войны в качестве хранилища в настройке OpsWorks.

EDIT:

После ответа на это, я обнаружил, что Grails может произвести разобранном каталог войны после того, как все.

// BuildConfig.groovy 
... 
grails.project.war.exploded.dir = "path/to/exploded/war-directory" 
grails.war.exploded=true 
... 

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

0

С this wiki page вы видите, что WAR-файл - это просто специальный JAR-файл. И если вы посмотрите, что такое JAR here, то вы видите, что это просто zipped до скомпилированного кода Java.

Этот SuperUser question также касается бизнеса .WAR против бизнеса .zip. В принципе, WAR - это просто специальный ZIP. Поэтому, когда вы загружаете WAR, вы загружаете ZIP.

Убедитесь, что это файл WAR в ведре S3.

Предоставить всю ссылку на файл S3 WAR. Чтобы получить это, щелкните правой кнопкой мыши файл WAR на S3 и выберите Properties, а затем скопируйте ссылку.

+0

Инструмент java jar делает банки, войны и т. Д. И да, они просто zip-файлы с некоторым обычным содержимым, как манифест. Но эти zip-файлы (названные war, or jar или что-то еще) не работают в этом контексте. Оказывается, если вы взорвите файл войны, созданный с помощью инструмента jar, затем заархивируйте полученное содержимое с помощью инструмента zip (а не инструмента jar), а затем переименуйте его с расширением .war, затем poof будет работать. – npskirk

+0

сделал последнюю часть моего ответа, не ответив на ваш вопрос «Может ли кто-нибудь описать, как правильно предоставить военный файл OpsWorks из S3?» У меня не было проблем, когда мне нужно было переименовать или повторно заархивировать мои .WAR-файлы при развертывании OpsWorks. Но я действительно думаю, что OpsWorks может быть тонким ... – mmcrae

+0

Ваш ответ - сделать то, что я сделал на третьем шаге моего вопроса. Итак, нет, извините, это не помогло. – npskirk

 Смежные вопросы

  • Нет связанных вопросов^_^