4

因此,我在 EC2 实例上进行了非常基本的部署,除了几个大问题外,它基本上可以正常工作。现在我只是进入盒子并运行

python -m SimpleHTTPServer 80

我在一个安全组上有一个盒子,它允许端口 80 上的 http 请求。

这似乎可行,但如果我不理会它一段时间(通常是 1-2 小时),我的弹性 ip 将开始返回 404。我真的需要这台服务器来为第三方提供演示。关于如何确保它保持正常的任何想法?

此外,当我关闭通过 ssh 连接到我的盒子的终端时,它会关闭,这是非常不理想的,因为即使我的计算机关闭,我也希望这个演示能够继续运行。这是一个不太紧急的问题,但任何关于此的建议也将不胜感激。

4

3 回答 3

3

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

基本上只是 ssh in,通过 screen 打开一个新窗口,通过 启动服务器python -m SimpleHTTPServer 80,然后从窗口中分离。此外,您应该能够关闭终端并且它应该保持正常运行。

于 2013-07-21T03:50:47.853 回答
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 终端,一切仍在运行,还没有发生任何故障。如果有什么东西我会更新,但我通常对这个解决方案很满意(不是说我会在两周内了解更多关于这个主题的信息),但它似乎非常小而且水平很低,这意味着我至少了解什么我已经做了。

于 2013-07-21T03:53:34.227 回答
0

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

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

如果您认为您的网站将保留静态文件(HTML、CSS、JS),我建议您将它们托管在 Amazon S3 上。S3 更便宜,更可靠。查看此答案以获取说明:Amazon S3 上的静态托管 - DNS 配置

享受!

于 2013-07-22T11:41:54.090 回答