2014-01-11 5 views
2

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

На данный момент у меня есть одно приложение, написанное в Flask, с использованием MySQL в качестве бэкэнд-сервера Apache с mod_wsgi, которое доступно в одном экземпляре EC2. Теперь все будет немного сложнее, так как у меня будет другая «клонированная» версия приложения в другом домене с новыми шаблонами, языком и некоторыми незначительными отличиями, но основной код будет таким же. У меня также есть своего рода «демонстрационный» сайт, который доступен на сайте domain.com/demo, который обрабатывается различными приложениями, поскольку его функциональность ограничена, поэтому отличается от основной.

Моя практика развертывания теперь, так как это относительно просто, всего лишь wget файлы из моего Dropbox в экземпляр EC2 (I ssh in) и перезапустите службу apache. Поскольку у меня есть код приложения в одном файле, а также в каталоге шаблонов и некоторых других небольших сценариях, которые не обновляются часто, это не проблема. Когда я меняю код, я просто обновляю исходный код, и когда я менял шаблоны, zip em, wget, unzip и все.

Так я и делал до сих пор. Недавно я начал использовать GitHub для управления версиями и хотел бы получить некоторые рекомендации по моей следующей проблеме:

  • Какой будет лучший способ автоматизировать этот процесс? Я полагаю, что предпочтительный способ - вытащить вещи из репозитория git при каждом фиксации и развернуть его на экземпляре EC2. Если это так, как я могу автоматизировать это? Крюки Github кажутся немного излишними, я надеюсь, что для этого есть «более простой» инструмент. Может быть, beanstalk, предлагаемый Amazon, может перепрыгнуть?

Спасибо!

ответ

2

По крайней мере, поместите все свои команды в сценарий fabric, это упростит работу в конечном итоге.

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

  1. Нет предпочтительного способа. Вы хотите установить git как зависимость от ваших производственных/промежуточных/веб-машин? Если вы хотите, развертывание с помощью git вполне приемлемо, если не так просто использовать встроенную утилиту rsync и взаимодействовать с ней с использованием ткани. Есть много сценариев онлайн, показывающих, как настроить ткань, используя любой способ. Есть, вероятно, и ряд других способов, но rsync или git pull, по-видимому, являются самыми популярными способами развертывания.

  2. Ткань позволяет вам определять roles и позволяет легко развернуть их на несколько серверов за один раз.

  3. Специальные случаи требуют специальных функций. Вы можете определить их в своем файле fab. Вы можете создать логику для развертывания на общих веб-серверах в функции, а затем создать отдельную функцию для создания и развертывания фрагментированного сервера.

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

+0

Благодарим за внимание!Я попробовал ткань и создал хороший инструмент, который теперь фиксирует изменения, подталкивает его к github и разворачивает его на удаленный сервер. Я понимаю, что мой вопрос слишком широк, я попытаюсь его отредактировать и буду более конкретным в будущем. –

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