Amazon ec2 在Ubuntu 12.04上安装Yaws server(使用云服务)
我正在尝试让Yaws web服务器在云服务(Amazon AWS)上工作。我已经在服务器上编译并安装了一个本地副本。我的问题是,在8000端口或80端口上运行时,我无法让Yaws运行 我在yaws.conf中有以下配置: 这将产生以下成功启动/结果: Eshell V5.8.5(使用^G中止) =信息报告===2012年9月16日::17:21:06=== Yaws:使用配置文件/home/ubuntu/Yaws.conf =信息报告===2012年9月16日::17:21:06=== Ctlfile:/home/ubuntu/.yaws/yaws/default/CTL =信息报告===2012年9月16日::17:21:06=== Yaws:侦听虚拟服务器的0.0.0.0:8000: - http://domU-12-31-39-0B-1A-F6:8000 在/home/ubuntu/yaws/www/trial下 - =信息报告===2012年9月16日::17:21:06=== Yaws:正在侦听虚拟服务器的0.0.0.0:4443: - 当我尝试访问url时(http://ec2-72-44-47-235.compute-1.amazonaws.com),它从不连接。我尝试使用paping检查端口80或8000是否打开(http://code.google.com/p/paping/)我得到了一个“主机无法解决”的错误,所以很明显有些东西不起作用 我还尝试设置yaws.conf,使其位于端口80,如下所示: 我得到以下错误: =错误报告===2012年9月16日::17:24:47=== Yaws:未能侦听0.0.0.0:80:{error,eacces} =错误报告===2012年9月16日::17:24:47=== 无法侦听套接字:{error,eacces} =错误报告===2012年9月16日::17:24:47=== 顶级进程已死亡,终止gserv =错误报告===2012年9月16日::17:24:47=== 顶级进程已死亡,终止gserv =信息报告===2012年9月16日::17:24:47=== 应用:雅司达 退出:{关闭,{yaws_应用程序,启动,[normal,[]]} 类型:永久性 {“内核pid终止”,应用程序\控制器 {应用程序启动\失败,yaws,>>>>{shutdown,>{yaws\u应用程序,启动,[normal,[]}} 我还使用iptables打开了端口80。运行sudo iptables-L将提供以下输出: 链输入(策略接受) 目标保护选项源目标Amazon ec2 在Ubuntu 12.04上安装Yaws server(使用云服务),amazon-ec2,erlang,yaws,Amazon Ec2,Erlang,Yaws,我正在尝试让Yaws web服务器在云服务(Amazon AWS)上工作。我已经在服务器上编译并安装了一个本地副本。我的问题是,在8000端口或80端口上运行时,我无法让Yaws运行 我在yaws.conf中有以下配置: 这将产生以下成功启动/结果: Eshell V5.8.5(使用^G中止) =信息报告===2012年9月16日::17:21:06=== Yaws:使用配置文件/home/ubuntu/Yaws.conf =信息报告===2012年9月16日::17:21:06=== Ctlf
接受tcp--ip-192-168-2-0.ec2.internal ip-192-168-2-16.ec2.internal tcp dpt:http 接受tcp--0.0.0.0 anywhere tcp dpt:http 接受所有——与国家相关、已建立的任何地方 接受tcp——随时随地tcp dpt:http 接受tcp——随时随地tcp dpt:http 前向链(保单接受) 目标保护选项源目标 链输出(策略接受) 目标保护选项源目标
感谢您的耐心@Bernard说得对,EC2实例有防火墙保护它。您需要修改实例的(您可以在管理控制台web界面的左侧找到),以允许入站TCP流量到达您要使用的端口。对于端口80,您可以从组合框中选择
HTTP
。对于端口8080,选择自定义TCP规则并键入端口号。@Bernard正确,EC2实例有防火墙保护它。您需要修改实例的(您可以在管理控制台web界面的左侧找到),以允许入站TCP流量到达您要使用的端口。对于端口80,您可以从组合框中选择HTTP
。对于端口8080,选择自定义TCP规则并键入端口号。粘贴的一个错误报告显示了无法在端口80上启动服务器的原因:权限({error,eaccess})
关于在端口8000上启动,您是否尝试通过SSH连接到机器并在本地连接到服务器(例如通过telnet)?如果这样做有效,你的问题一定是,正如其他人所建议的,要么是Ubuntu防火墙没有打开端口8000,要么是EC2实例的安全组没有包含允许该端口上的入站流量的路由
也就是说,这个问题可能应该移到或。您粘贴的一个错误报告显示了无法在端口80上启动服务器的原因:权限({error,eaccess}) 关于在端口8000上启动,您是否尝试通过SSH连接到机器并在本地连接到服务器(例如通过telnet)?如果这样做有效,你的问题一定是,正如其他人所建议的,要么是Ubuntu防火墙没有打开端口8000,要么是EC2实例的安全组没有包含允许该端口上的入站流量的路由
说,这个问题可能应该移到或。有两件事要找:
- 检查实例的安全组设置,确保端口80或8000已打开(可从
访问)0.0.0.0/32
- 尝试将服务器绑定到计算机的内部IP地址。有些服务器需要监听此接口,而不是
您可以在控制台中或使用0.0.0.0。
ifconfig
- 检查实例的安全组设置,确保端口80或8000已打开(可从
访问)0.0.0.0/32
- 尝试将服务器绑定到计算机的内部IP地址。有些服务器需要监听此接口,而不是
您可以在控制台中或使用0.0.0.0。
ifconfig
2a. I run yaws on 8080 and have nginx reverse proxying
from http://mydomain:80 to 8080. Yaws won't run as a
low-privilege user if you want it to listen on port
80.
2b. nginx.conf needs the following directives:
server {
listen 80;
server_name yourdomain.com;
access_log /path/to/access/log.log
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect default;
}
}
基本上,我安装了nginx,并将其配置为作为代理服务器运行
我有
port = 8000
listen = 0.0.0.0
docroot = /home/ubuntu/yaws/www/test
dir_listings = true
=ERROR REPORT==== 16-Sep-2012::17:24:47
=== Yaws: Failed to listen 0.0.0.0:80 : {error,eacces}
2a. I run yaws on 8080 and have nginx reverse proxying
from http://mydomain:80 to 8080. Yaws won't run as a
low-privilege user if you want it to listen on port
80.
2b. nginx.conf needs the following directives:
server {
listen 80;
server_name yourdomain.com;
access_log /path/to/access/log.log
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect default;
}
}
sudo su
yaws -i --id whatever
$ setcap 'cap_net_bind_service=+ep' /usr/lib/erlang/erts-5.7.4/bin/beam