![无法在 ec2 上启动 play! 服务器(play! 框架)](https://linux22.com/image/605876/%E6%97%A0%E6%B3%95%E5%9C%A8%20ec2%20%E4%B8%8A%E5%90%AF%E5%8A%A8%20play!%20%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%88play!%20%E6%A1%86%E6%9E%B6%EF%BC%89.png)
最近我创建了一个新的 ec2 实例(快速启动),并尝试部署我的 Play!应用程序安全组允许访问端口 80 和端口 22(SSH),但是当我运行时:
play start 80
它给了我这个
[error] org.jboss.netty.channel.ChannelException: Failed to bind to: /0.0.0.0:80
[error] Use 'last' for the full log.
这意味着当我运行
netstat -tlnp
我明白
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 3692/sendmail
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3653/sshd
tcp 0 0 :::22 :::* LISTEN 3653/sshd
我搜索了整个网络但我没有弄明白,请帮帮我!
笔记 :我刚刚解决了这个问题,我要做的就是用 sudo 启动它。
答案1
由于您绑定到 1024 以下的端口,因此必须以 root 权限启动。
尝试以下方法:
sudo play start 80
答案2
要在 EC2 上部署,您应该使用以下命令在本地计算机中创建应用程序的独立版本:
play dist
然后使用 scp 将生成的 .zip 复制到您的 EC2 实例,使用 unzip 解压缩。
然后你可能想像这样运行你的应用程序:
sudo nohup yourAppName-version/bin/yourAppName -Dhttp.port=80
须藤以便能够绑定到 1024 以下的端口。
禁止为了能够退出 ssh 会话而不向您的 play 应用程序发送 HUP 信号。
您的应用程序名称-版本/bin/您的应用程序名称用您的应用程序的名称和版本替换您的脚本所在的位置。
-Dhttp.端口是绑定到给定端口的选项。
附加信息:您应该考虑添加 -J-Xms128M -J-Xmx512m 以避免 RAM 分配问题(我使用微型实例,请根据您的需要进行调整)。