Amazon ec2 在Ubuntu 12.04上安装Yaws server(使用云服务)

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

我正在尝试让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将提供以下输出:

链输入(策略接受) 目标保护选项源目标
接受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

事实上,我通过这篇论坛帖子找到了为什么我不能让它工作的答案(http://www.trapexit.org/forum/viewtopic.php?p=42923)

它说:

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