如何使light2d的EC2微型实例提供CGI脚本?例如Python CGI?
嗯,花了半天时间,但是我已经使用lighttpd服务器在免费的Amazon AWS EC2微实例上运行了Python cgi。我认为这将帮助我的新手将所有步骤都放在一个位置。通过以下简单的步骤,只需15分钟即可完成设置!
对于阅读本文的经验丰富的用户,我的问题是:我所做的工作是否存在任何安全缺陷?(请参阅文件和目录权限。)
步骤1:启动您的EC2实例并ssh进入它。
[显然,您需要注册Amazon EC2并将密钥对保存到* .pem文件。正如亚马逊告诉您的操作方法,我不会赘述。]
登录您的AWS账户并启动您的EC2实例。网络上有关于此操作的教程。请注意,Amazon提供给您的默认实例大小很小。这不是“微型”的,所以会花钱。请务必手动选择“微型”。(微型实例仅在第一年是免费的...)
查找正在运行的实例的公共DNS代码。为此,请在信息中心顶部窗格中单击实例,最终您将在底部窗格中看到“ Public DNS”字段。(您可能需要摆弄一些。)公共DNS看起来像:
ec2-174-129-110-23.compute-1.amazonaws.com
启动Unix控制台程序。(在Max OS X上,它称为Terminal,位于“应用程序”->“实用程序”文件夹中。)
cd到桌面系统上的目录,该目录具有* .pem文件,其中包含AWS密钥对。
使用以下命令将ssh转到您的EC2实例:
ssh -i <<your *.pem filename>> ec2-user@<< Public DNS address >>
因此,对我来说,这是:
ssh -i amzn_ec2_keypair.pem ec2-user@ec2-174-129-110-23.compute-1.amazonaws.com
您的EC2实例应允许您进入。
步骤2:将lighttpd下载到您的EC2实例。
要安装lighttpd,您将需要对EC2实例具有root访问权限。问题是:Amazon不允许您以root用户身份登录。(至少不是直接的。)但是有一种解决方法。输入以下命令:
sudo /bin/bash
系统提示字符将从$更改为#。在整个过程的最后一步之前,我们不会从“ sudo”退出。
安装lighttpd应用程序(对我来说是1.4.28-1.3.amzn1版本):
yum install lighttpd
为lighttpd安装FastCGI库(不需要,但为什么不这样做?):
yum install lighttpd-fastcgi
测试您的服务器是否正常工作:
/etc/init.d/lighttpd start
步骤3:让外界看到您的服务器。
如果现在尝试从台式机上的浏览器访问服务器,则它将失败。原因:默认情况下,Amazon AWS不会打开您的EC2实例的任何端口。因此,您必须手动打开端口。
在桌面浏览器中转到EC2仪表板。单击左侧窗格中的“安全组”。一个或多个安全组将出现在右上方的窗格中。选择启动实例时分配给您的EC2实例的实例。
名为“允许的连接”的表将出现在右下方的窗格中。弹出菜单将使您选择“ HTTP”作为连接方法。
该表的该行中的其他值应为:tcp,80、80、0.0.0.0 / 0
现在,从浏览器的桌面访问您的EC2实例的服务器。使用之前用于SSH的公共DNS地址。您应该看到lighttpd通用网页。如果您不这样做,我将无能为力,因为我真是个菜鸟。:-(
步骤4:将lighttpd配置为服务CGI。
返回控制台程序,cd到lighttpd的配置目录:
cd /etc/lighttpd
要启用CGI,您要取消注释<modules.conf>文件中的一行。(我本可以启用Fast CGI,但是最好的方法是婴儿!)您可以使用“ ed”编辑器执行以下操作:
ed modules.conf
/include "conf.d\/cgi.conf"/
s/#//
w
q
创建CGI程序所在的目录。(/etc/lighttpd/lighttpd.conf文件确定该位置。)我们将在默认位置创建目录,因此无需对配置文件进行任何编辑:
cd /var/www/lighttpd
mkdir cgi-bin
chmod 755 cgi-bin
差不多好了!当然,您需要将测试的CGI程序放入cgi-bin目录。这是一个:
cd cgi-bin
ed
a
#!/usr/bin/python
print "Content-type: text/html\n\n"
print "<html><body>Hello, pyworld.</body></html>"
.
w hellopyworld.py
q
chmod 655 hellopyworld.py
重新启动lighttpd服务器:
/etc/init.d/lighttpd restart
测试您的CGI程序。在桌面的浏览器中,单击以下URL,以替换EC2实例的公共DNS地址:
http://<<Public DNS>>/cgi-bin/hellopyworld.py
对我来说,这是:
http://ec2-174-129-110-23.compute-1.amazonaws.com/cgi-bin/hellopyworld.py
步骤5:就这样!收拾干净,谢谢!
要退出前面给出的“ sudo / bin / bash”命令,请输入:
exit
致谢:感谢:
wiki.vpslink.com/Install_and_Configure_lighttpd
www.cyberciti.biz/tips/lighttpd-howto-setup-cgi-bin-access-for-perl-programs.html
aws.typepad.com/aws/2010/06/building-three-tier-architectures-with-security-groups.html
祝你好运,朋友!对于这个“问题”的非传统性质,我深表歉意,但是我从Stackoverflow获得了很多帮助,以至于我渴望回馈一些东西。