我正在学习瘦服务器,现在我可以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)
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服务器作为另一个不具有特权的用户运行.