如何在80端口上运行rails s -p80?

时间:2010-12-04 03:58:11

标签: ruby-on-rails ruby-on-rails-3

默认情况下,

 rails s #running on 3000 port

现在我想在端口80上运行它。所以我尝试了:

 sudo rails -s -p80

但它引发了一个错误:

mlzboy@mlzboy-MacBook ~/my/b2c2 $ sudo rails s -p80
sudo: rails: command not found

我使用rvm来安装ruby&轨道。似乎rvm是用户指定的。是否无法在root中找到rails?

我也试过下面的代码:

mlzboy@mlzboy-MacBook ~/my/b2c2 $ which rails
/home/mlzboy/.rvm/gems/ruby-1.9.2-p0/bin/rails
mlzboy@mlzboy-MacBook ~/my/b2c2 $ sudo /home/mlzboy/.rvm/gems/ruby-1.9.2-p0/bin/rails s -p80

5 个答案:

答案 0 :(得分:205)

rvmsudo rails server -p 80

答案 1 :(得分:21)

使用以下命令将请求从端口80转发到3000:

sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000

另一种选择是:

rvmsudo rails server -p 80

但请记住从Apache或其他正常使用此端口的服务中释放此端口。另外,我不确定是否给予RVM sudo权限可能有任何安全问题?

答案 2 :(得分:7)

打算建议

rails=`which rails` ; sudo $rails server -p 80

但仍然尝试使用全局gemset而不是RVM中的项目gemset。所以......

  1. 确保您的Mac上运行sshd。 (System Prefs => Sharing =>远程登录已选中)
  2. 确保rails s作为非root用户
  3. 在端口3000上运行
  4. 打开一个新终端并......

    me=``whoami``; sudo ssh -L 80:127.0.0.1:3000 -l $me -N localhost

  5. (顺便说一句,在上面的行中,将复制的'减少为单数',我无法弄清楚它是如何正确地逃避它的。)

    第一个Password:是您的root用户,第二个是whoami返回任何人的密码。

    虽然您可能希望安装Phusion Passenger并在本地Apache下进行设置。除非你只是试图快速演示一些东西,当然这不是一个永久的解决方案。

答案 3 :(得分:1)

如果您使用的是RVM,并且进行了默认设置,则不应使用sudo

只需:

mlzboy@mlzboy-MacBook ~/my/b2c2 $ rails server -p 80

但是,80是特权端口,因此您需要以root身份运行,并且您将按照R Multi-User installation的说明进行操作。

答案 4 :(得分:-1)

您可以在端口80上启动服务器

rails s -p 80

如果端口80未绑定(其他进程未使用端口80)。