无法在端口 80 上启动 Rails

无法在端口 80 上启动 Rails

我正在努力更好地学习 Linux,但目前经验非常有限 —— 所以请原谅我在这方面的无知。

我正在尝试在端口 80 上启动 rails,并以另一个用户身份使用

sudo -u [user_name] bundle exec rails s --port=80 -e production

但这是失败的

eventmachine.rb:572:in 'start_tcp_server': no acceptor (RuntimeError)

运行sudo netstat -anltp|grep :80显示80端口没有开放\监听。

我尝试了以下方法,但效果有限:

sudo bundle exec rails s --port=80 -e production可以在端口 80 上启动服务器,但不能以我想要的用户身份启动,

sudo -u [user_name] bundle exec rails s -e production可以以正确的用户身份启动服务器,但不在所需的端口上启动。

我已临时将用户设置为管理员组,因为我已读到端口 <1024 需要该组,但这似乎也无济于事。

我还可以尝试什么?

答案1

你可以使用 root 启动端口 <1024 上的服务用户。该组(在您的情况下是管理员)与此无关。

不过,您可以做几件事。例如:

  • 用户使用 iptables 重定向端口(可使用 root 权限配置)。
  • 如果程序允许或者您有权访问代码:以 root 身份启动,bind(),然后放弃权限。
  • 有一个名为 authbind 的实用程序专门用于这种情况,但我个人从未使用过它,所以我无法评论它的效果如何。
  • 使用 setcap 为您的程序添加权限。

相关内容