0

我最近用 Apache + php 启动了一个 linux EC2 实例。我的 php 代码最终淡化为仅从 shell 调用 python,仅此而已。这是一个非常丑陋的解决方案,但它有效。所以,基本上我的问题是:

  1. 有一个反复调用 exec(python my_script.py) 的 php 代码而不是一个更原生于 python 的解决方案是多么糟糕/低效/愚蠢?我假设它是浪费的,但我试图了解我是否应该为此烦恼或继续咕咕咕咕。
  2. 我设法让bottle.py 启动并运行,并且即将用一个持续运行的bottle 脚本替换我的“愚蠢”解决方案,这似乎更自然。但我未能通过 mod_wsgi 将此解决方案与 Apache 集成,我认为这与我不愿处理的 python 版本不兼容问题有关。
  3. 考虑到(2),完全绕过 Apache 并简单地调用带有“运行”命令的瓶子脚本来监听所有传入通信的后果是什么?它看起来很丑陋,但它是否效率低下或不好?如果不是,我将继续称其为我的解决方案......但我担心人们可能有理由与 Apache 集成。

任何输入将不胜感激。一个已经运行 python 2.7 并默认通过 python 处理传入请求的像样的亚马逊 AMI 会很好。有人权威地说我不应该搞乱整个 apache/mod_wsgi 业务,最好将“瓶子”称为脚本 :-)

编辑:我有 python 2.7 运行瓶和粘贴作为我的网络服务器。我有什么真正的理由更喜欢 apache 而不是这个解决方案吗?当我在做的时候,有没有人有在这个环境中启用 ssl 的经验?

干杯,乌里

4

3 回答 3

1

为什么不直接用 Python 启动一个 Beanstalk 实例,让 Amazon 处理这些细节呢?Beanstalk 在 EC2 上运行。当亚马逊已经为您制作通心粉伏特加时,制作自己的意大利面很愚蠢!撇开蹩脚的比喻不谈,我认为你会为自己省去额外的压力,并且不需要混合 PHP/Python。

于 2013-03-08T16:18:55.323 回答
0

免责声明:我为 OpDemand 工作。

最轻松的方法是使用预卷的 AMI,但这些变得无法管理。

如果您正在寻找更灵活的东西,OpDemand为您可以一键部署的 Python 应用程序提供 EC2 模板。它们是普通的 Ubuntu 12.04 LTS 盒子,在Procfile定义的网络工作者面前带有 Nginx。它很像 Heroku,但都用完了你自己的 EC2 帐户。示例 Python 应用程序使用Flask,但切换到 Bottle 很简单。

祝你好运!

于 2013-03-08T20:02:08.083 回答
0

如果您需要更新 beanstalk 上的 python 版本,我会推荐两个选项:

  1. 基于 beanstalk 的标准 ami 创建自定义 ami。好文章在这里: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 。

于 2013-03-08T19:46:49.763 回答