所以,除了几个大问题之外,我在EC2实例上有一个非常基本的部署,它在很大程度上有效。现在我只是在进入框中并运行
python -m SimpleHTTPServer 80
我在安全组上有一个框,允许在端口80上输入http请求。
这似乎有效,但如果我暂时离开一段时间(通常1-2小时),我的弹性ip将开始返回404s。我真的需要这台服务器来挽留第三方的演示。关于如何确保它保持运转的任何想法?
此外,当我关闭ssh进入我的盒子的终端时,它会关闭,这是非常不理想的,因为我希望这个演示即使我的电脑关闭也能保持正常状态。这是一个不太紧急的问题,但对此的任何建议也将受到赞赏。
答案 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),我建议您阅读Apache
或nginx
。基本上你需要一个在Linux上运行的Web服务器。
如果您认为您的网站仍然是静态文件(HTML,CSS,JS),我建议您在Amazon S3上托管它们。 S3更便宜,更可靠。请查看此答案以获取相关说明:Static hosting on Amazon S3 - DNS Configuration
享受!