Какой самый безболезненный способ запустить и запустить сервер только для Python на amazon EC2?

Недавно я запустил экземпляр Linux EC2 с Apache + php. Мой php-код в конечном итоге сводился к простому вызову python из оболочки и ничего более. Это довольно уродливое решение, но оно работает. Итак, в основном мои вопросы:

  1. Насколько плохо/неэффективно/глупо иметь php-код, который неоднократно вызывает exec(python my_script.py), а не решение, более родное для python? Я предполагаю, что это расточительно, но я пытаюсь понять, стоит ли мне беспокоиться об этом или просто продолжать пыхтеть.
  2. Мне удалось запустить и запустить Bottle.py, и я был на грани замены моего «глупого» решения постоянно работающим сценарием бутылки, что кажется более естественным. Но мне не удалось интегрировать это решение с Apache через mod_wsgi, я думаю, это связано с проблемой несовместимости версий Python, с которой я не хочу иметь дело.
  3. Принимая во внимание (2), каковы последствия полного обхода Apache и простого вызова сценария бутылки с командой «запустить» для прослушивания всех входящих сообщений? Это кажется некрасивым, но так ли это неэффективно или плохо? Если нет, я просто назову это своим решением... Но я обеспокоен тем, что у людей может быть причина для интеграции с Apache.

Мы будем признательны за любой вклад. Приличный amazon AMI, который уже запускает python 2.7 и обрабатывает входящий запрос python по умолчанию, был бы хорош. Кто-то авторитетно говорит, что мне не следует возиться со всем этим делом с apache/mod_wsgi и лучше просто назвать "бутылку" в качестве скрипта :-)

EDIT: у меня есть работающая бутылка Python 2.7 с пастой в качестве моего веб-сервера. Есть ли у меня РЕАЛЬНАЯ причина предпочесть apache этому решению? и пока я этим занимаюсь, есть ли у кого-нибудь опыт включения ssl в этой среде?

Привет, Ури


person Uri Merhav    schedule 08.03.2013    source источник
comment
Не могли бы вы просто настроить какой-нибудь скрипт CGI и позволить apache разобраться с как его разобрать?   -  person Lix    schedule 08.03.2013
comment
CGI насколько я понимаю означает, что каждый входящий запрос к серверу запускает новый интерпретатор python. Это мое текущее решение, и я пытаюсь его избежать...   -  person Uri Merhav    schedule 08.03.2013


Ответы (3)


Почему бы вам просто не запустить экземпляр Beanstalk с помощью Python и позволить Amazon разобраться с этими деталями? Beanstalk работает на EC2. Глупо делать свои собственные спагетти, когда Амазон уже сделал тебе пенне-водку! Если оставить в стороне неубедительные метафоры, я думаю, вы избавите себя от дополнительного стресса и избавите себя от необходимости смешивать PHP/Python.

person kevin    schedule 08.03.2013
comment
Спасибо, Кевин. Я только что запустил фиктивное решение beanstalk, и по умолчанию используется python 2.6.8. Похоже, его обновление довольно хлопотно (бог знает, было нелегко получить мой текущий экземпляр EC2 с python 2.7!)... Если вы знаете хорошее руководство о том, как запустить beanstalk python 2.7, я бы с радостью об этом узнаю :-) - person Uri Merhav; 08.03.2013
comment
Эх, извини, Ури, надо было это видеть. Что ж, если вы все еще хотите избегать mod_wsgi и не являетесь неравнодушным к Amazon, вы можете проверить Google App Engine — они по умолчанию используют Python, и там тоже очень легко начать работу (я думаю, проще, чем Beanstalk). - person kevin; 08.03.2013
comment
Для Python 2.7 вы можете настроить Elastic Beanstalk, см.: docs.aws.amazon. com/elasticbeanstalk/latest/dg/ - person Guy; 09.03.2013

Если вам нужно обновить версию Python на beanstalk, я бы порекомендовал два варианта:

  1. Создайте собственный ами на основе стандартного ами бобового стебля. Хорошая статья здесь: http://blog.jetztgrad.net/2011/02/how-to-customize-an-amazon-elastic-beanstalk-instance/

  2. Настройте экземпляр с помощью файлов конфигурации эластичного beanstalk. Посмотрите здесь: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers.html.

person Vadym Fedorov    schedule 08.03.2013

Отказ от ответственности: я работаю в OpDemand.

Наиболее безболезненным было бы использовать предварительно свернутый AMI, но им становится невозможно управлять.

Если вы ищете что-то более гибкое, OpDemand предлагает шаблоны EC2 для приложений Python, которые можно развернуть одним щелчком мыши. . Это ванильные коробки Ubuntu 12.04 LTS с Nginx перед веб-воркерами, определенными Procfile. Это очень похоже на Heroku, но все это работает из вашей собственной учетной записи EC2. В примере приложения Python используется Flask, но переключиться на Bottle очень просто.

Удачи!

person gabrtv    schedule 08.03.2013