如何在默认端口上启动瘦身?

mko*_*mko 19 ruby thin

我正在学习瘦服务器,现在我可以thin start用来启动服务器,但端口是3000,我应该在浏览器中输入localhost:3000来获取网页.

我想像其他网站一样取消3000端口.所以我设置使用命令thin -p 80 start来使用默认的http端口.但我得到了这个错误:

root@makserver:~/apps/videosite# thin --port 80 start
>> Using rack adapter
>> Thin web server (v1.2.7 codename No Hup)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:80, CTRL+C to stop
/usr/local/lib/ruby/gems/1.9.1/gems/eventmachine-0.12.10/lib/eventmachine.rb:572:in `start_tcp_server': no acceptor (RuntimeError)
    from /usr/local/lib/ruby/gems/1.9.1/gems/eventmachine-0.12.10/lib/eventmachine.rb:572:in `start_server'
    from /usr/local/lib/ruby/gems/1.9.1/gems/thin-1.2.7/lib/thin/backends/tcp_server.rb:16:in `connect'
    from /usr/local/lib/ruby/gems/1.9.1/gems/thin-1.2.7/lib/thin/backends/base.rb:49:in `block in start'
    from /usr/local/lib/ruby/gems/1.9.1/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `call'
    from /usr/local/lib/ruby/gems/1.9.1/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine'
    from /usr/local/lib/ruby/gems/1.9.1/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run'
    from /usr/local/lib/ruby/gems/1.9.1/gems/thin-1.2.7/lib/thin/backends/base.rb:57:in `start'
    from /usr/local/lib/ruby/gems/1.9.1/gems/thin-1.2.7/lib/thin/server.rb:156:in `start'
    from /usr/local/lib/ruby/gems/1.9.1/gems/thin-1.2.7/lib/thin/controllers/controller.rb:80:in `start'
    from /usr/local/lib/ruby/gems/1.9.1/gems/thin-1.2.7/lib/thin/runner.rb:177:in `run_command'
    from /usr/local/lib/ruby/gems/1.9.1/gems/thin-1.2.7/lib/thin/runner.rb:143:in `run!'
    from /usr/local/lib/ruby/gems/1.9.1/gems/thin-1.2.7/bin/thin:6:in `<top (required)>'
    from /usr/local/bin/thin:19:in `load'
    from /usr/local/bin/thin:19:in `<main>'
Run Code Online (Sandbox Code Playgroud)

Sim*_*tsa 25

这表示端口可能已在使用中.

另外,尝试使用管理员权限运行它

sudo thin start -p 80
Run Code Online (Sandbox Code Playgroud)

(感谢Tom Crinson的博客文章.)


小智 24

看起来旧的Ruby进程已挂在某处.

启动活动监视器并终止所有Ruby进程.

或者使用终端:

ps -e | grep "ruby"
Run Code Online (Sandbox Code Playgroud)

然后:

kill {process id}
Run Code Online (Sandbox Code Playgroud)


zis*_*she 20

rvmsudo rails server thin -p 80
Run Code Online (Sandbox Code Playgroud)


Lou*_*ers 12

如果您不想运行sudo来启动Web服务器(可能用户不是sudoer),您可以始终以超级用户身份进入,并将端口80流量的重定向设置为端口x:

sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000
sudo iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 3000
Run Code Online (Sandbox Code Playgroud)

查找iptables

sudo iptables --list -n -t nat
sudo iptables --list -n
Run Code Online (Sandbox Code Playgroud)

这样,您可以将Web服务器作为另一个不具有特权的用户运行.

信用转到这篇文章

  • 在这里提供的所有解决方案中(感谢大家),这是对我有用的解决方案.谢谢路易斯! (2认同)

Han*_*Gay 5

传统上,端口80是一个特权端口(实际上它们都低于1024),因此您需要拥有超级用户权限才能绑定它.

查看文档,他们建议将其运行nginx,这通常是一个好主意.假设您使用了包管理器进行安装nginx,您可能会收到有关如何在nginx启动时启动的说明,默认情况下它将绑定到端口80.