AWS部署经常出现故障

时间:2013-07-21 02:46:24

标签: python deployment amazon-web-services amazon-ec2

所以,除了几个大问题之外,我在EC2实例上有一个非常基本的部署,它在很大程度上有效。现在我只是在进入框中并运行

python -m SimpleHTTPServer 80

我在安全组上有一个框,允许在端口80上输入http请求。

这似乎有效,但如果我暂时离开一段时间(通常1-2小时),我的弹性ip将开始返回404s。我真的需要这台服务器来挽留第三方的演示。关于如何确保它保持运转的任何想法?

此外,当我关闭ssh进入我的盒子的终端时,它会关闭,这是非常不理想的,因为我希望这个演示即使我的电脑关闭也能保持正常状态。这是一个不太紧急的问题,但对此的任何建议也将受到赞赏。

3 个答案:

答案 0 :(得分:3)

使用screen! 这是一个快速教程:http://www.nixtutor.com/linux/introduction-to-gnu-screen/

基本上只是ssh in,通过屏幕打开一个新窗口,通过python -m SimpleHTTPServer 80启动服务器,然后从窗口分离。此外,你应该能够关闭你的终端,它应该熬夜。

答案 1 :(得分:1)

我能够通过组合一个cron作业来运行一个运行服务器的bash脚本来解决这个问题,但我不确定这是不是最好的方法。它似乎在短期内解决了我的问题。作为参考,这是我使用的代码:

import SimpleHTTPServer
import SocketServer

PORT = 80

Handler = SimpleHTTPServer.SimpleHTTPRequestHandler

httpd = SocketServer.TCPServer(("", PORT), Handler)

httpd.serve_forever()

我用一个简单的bash脚本包装了它:

#!/bin/bash
cd relevant/directory
sudo -u ubuntu python simple_server.py

我确定有更好的使用许可,但之后我就跑了

chmod -R 777 bash_script.sh

确保我不会在这方面遇到任何问题。

然后放入一个cronjob每分钟运行一次(越多越好吧?)

crontab -e (Just to bring up the relevant file)

在此行中添加:

*/1 * * * * path/to/bash_script.sh

它似乎正在发挥作用。我关闭了我的ssh'd终端,一切仍然运行,没有任何事情发生。如果有的话,我会更新,但我对这个解决方案感到满意(并不是说我会在2周内了解更多关于这个主题的信息),但它似乎非常小而且水平低,这意味着我至少理解了什么我刚刚做了。

答案 2 :(得分:0)

SimpleHTTPServer只在端口80上提供静态页面,主要用于开发期间。

对于生产用途(如果您想使用EC2),我建议您阅读Apachenginx。基本上你需要一个在Linux上运行的Web服务器。

如果您认为您的网站仍然是静态文件(HTML,CSS,JS),我建议您在Amazon S3上托管它们。 S3更便宜,更可靠。请查看此答案以获取相关说明:Static hosting on Amazon S3 - DNS Configuration

享受!