在Ubuntu 12.04安装雅司服务器(使用云服务)(Installing Yaws server

2019-09-22 12:03发布

我试图让雅司病web服务器上的云服务(AWS亚马逊)工作。 我compilled和安装在服务器上的本地副本。 我的问题是,我不能让雅司病来运行,而在端口8000或端口80上运行。

我在yaws.conf以下配置:

  port = 8000 listen = 0.0.0.0 docroot = /home/ubuntu/yaws/www/test dir_listings = true 

这将产生以下成功发射/结果:

ESHELL V5.8.5(与中止^ G)

= INFO REPORT ==== 16九月2012 :: 17:21:06 ===雅司病:使用配置文件/home/ubuntu/yaws.conf

= INFO REPORT ==== 16九月2012 :: 17:21:06 === Ctlfile:/home/ubuntu/.yaws/yaws/default/CTL

= INFO REPORT ==== 16九月2012 :: 17:21:06 ===雅司病:收听0.0.0.0:8000为<3>的虚拟服务器: - HTTP://的domU-39年12月31日-0B-1A-F6:8000在/ home / Ubuntu的/偏航/ WWW /试验 -

= INFO REPORT ==== 16九月2012 :: 17:21:06 ===雅司病:收听0.0.0.0:4443为<1>的虚拟服务器: -

当我尝试访问的URL(http://ec2-72-44-47-235.compute-1.amazonaws.com),一直连接不上。 我已经使用耙平,以检查端口80或8000是开放的(http://code.google.com/p/paping/)试过,我得到一个“主机不能得到解决”的错误,所以很明显的东西是不工作。

我也试着设置yaws.conf所以它在端口80,出现这样的:

  port = 8000 listen = 0.0.0.0 docroot = /home/ubuntu/yaws/www/test dir_listings = true 

我得到以下错误:

=错误报告==== 16九月2012 :: 17:24:47个===雅司病:无法听0.0.0.0:80:{错误,EACCES}

=错误报告==== 16九月2012 :: 17:24:47 ===无法听套接字:{错误,EACCES} =错误报告==== 16九月2012 :: 17: 24:47 ===最PROC死亡,终止gserv =错误报告==== 16月 - 2012 :: 17:24:47 ===顶部PROC死亡,终止gserv = INFO报告==== 16月-2012 :: 17:24:47 ===应用:雅司病退出:{关机,{yaws_app,启动,[正常,[]]}}输入:永久{ “内核PID终止”,application_controller,” {application_start_failure,雅司病,>>>>>> {关机,> {yaws_app,启动,[正常,[]]}}}“}

我还开了80端口使用iptables。 运行须藤的iptables -L给出了这样的输出:

链INPUT(政策接受)目标PROT选择源目标
接受TCP - IP-192-168-2-0.ec2.internal IP-192-168-2-16.ec2.internal TCP DPT:HTTP接受TCP - 0.0.0.0的规则表:HTTP接受所有 - 任何地方的任何地方ctstate相关,ESTABLISHED接受TCP - 的规则表:HTTP接受TCP - 的规则表:HTTP

链FORWARD(政策接受)目标PROT选择源目标

链OUTPUT(政策接受)目标PROT选择源目标

感谢您的耐心

Answer 1:

其实,我找到了答案,为什么我不能得到它的工作,通过这个论坛帖子(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的安装,并配置它作为代理服务器运行。

我已经使用,以获得芝加哥老板框架,运行相同的解决方案,唯一的区别是,我有nginx的proxy_pass设置> HTTP://127.0.0:8001因为芝加哥老板默认在8001上运行。 任何人都知道这一点,如果有人使用nginx的作为代理服务器,或者它没有任何效果什么那么如何影响一个Erlang服务器的并发优势?



Answer 2:

其中一个您贴上了错误报告显示为什么你不能启动服务器的80端口的原因: 权限 ({错误,EACCESS})。

=ERROR REPORT==== 16-Sep-2012::17:24:47
=== Yaws: Failed to listen 0.0.0.0:80 : {error,eacces}

至于端口8000的推出,你有没有试着SSH到机器并连接到本地服务器(例如,通过telnet)? 如果这样的作品,你的问题一定是,因为其他人则建议,有关不具有端口8000打开或安全组无论是Ubuntu的防火墙,为您的EC2实例不包含允许在该端口上的入站流量的路由。

说,这个问题也许应该被移到ServerFault或AskUbuntu 。



Answer 3:

有两件事情来寻找:

  • 检查您的安全组设置您的实例,并确保端口80或8000是开放的(从访问0.0.0.0/32 )。
  • 试试你的服务器绑定到机器的内部IP地址。 有些服务器需要听这个接口,而不是0.0.0.0. 你可以找到你的内部IP无论是在控制台或ifconfig


Answer 4:

它值得指出的是交互式命令行需要root权限:

sudo su
yaws -i --id whatever

如果雅司病守护进程在运行的同时,还必须指定一个ID。



Answer 5:

http://hyber.org/privbind.yaws

绑定到特权端口

在联合国* X操作系统中常见的不良特性是,只有root可以绑定低于1024的端口许多美元被浪费了的解决方法和-often-结果是安全漏洞的限制。

$ setcap 'cap_net_bind_service=+ep' /usr/lib/erlang/erts-5.7.4/bin/beam


Answer 6:

@Bernard是正确的EC2实例有防火墙保护它。 您需要修改的EC2安全组 (你可以找到它在管理控制台web界面左侧)为实例,以允许入站TCP流量到您要使用的端口。 对于80端口,你可以选择HTTP从组合框中。 对于8080端口,选择Custom TCP Rule的端口数量和类型。



文章来源: Installing Yaws server on Ubuntu 12.04 (Using a cloud service)