【问题标题】:Rails server - Port problemsRails 服务器 - 端口问题
【发布时间】:2016-03-26 09:49:31
【问题描述】:

我正在尝试在我刚购买的共享主机上启动一个 Rails 服务器,但我遇到了一些小问题。

1- 我无法在端口 90 上启动 rails server。我收到错误消息。

/opt/alt/ruby21/lib64/ruby/2.1.0/socket.rb:206:in bind': Permission denied - bind(2) for 67.205.125.31:90 (Errno::EACCES) from /opt/alt/ruby21/lib64/ruby/2.1.0/socket.rb:206:inlisten' 来自 /opt/alt/ruby21/lib64/ruby/2.1.0/socket.rb:461:in block in tcp_server_sockets' from /opt/alt/ruby21/lib64/ruby/2.1.0/socket.rb:232:ineach' 来自 /opt/alt/ruby21/lib64/ruby/2.1.0/socket.rb:232:in foreach' from /opt/alt/ruby21/lib64/ruby/2.1.0/socket.rb:459:intcp_server_sockets' 来自 /opt/alt/ruby21/lib64/ruby/2.1.0/webrick/utils.rb:75:in create_listeners' from /opt/alt/ruby21/lib64/ruby/2.1.0/webrick/server.rb:132:inlisten' 来自 /opt/alt/ruby21/lib64/ruby/2.1.0/webrick/server.rb:113:in initialize' from /opt/alt/ruby21/lib64/ruby/2.1.0/webrick/httpserver.rb:45:ininitialize' 来自/home/tmtcmon/rubyvenv/App/2.1/gems/rack-1.6.4/lib/rack/handler/webrick.rb:31:in new' from /home/tmtcmon/rubyvenv/App/2.1/gems/rack-1.6.4/lib/rack/handler/webrick.rb:31:inrun' 来自 /home/tmtcmon/rubyvenv/App/2.1/gems/rack-1.6.4/lib/rack/server.rb:286:in start' from /home/tmtcmon/rubyvenv/App/2.1/gems/railties-4.2.6/lib/rails/commands/server.rb:80:instart' 来自/home/tmtcmon/rubyvenv/App/2.1/gems/railties-4.2.6/lib/rails/commands/commands_tasks.rb:80:in block in server' from /home/tmtcmon/rubyvenv/App/2.1/gems/railties-4.2.6/lib/rails/commands/commands_tasks.rb:75:intap' 来自/home/tmtcmon/rubyvenv/App/2.1/gems/railties-4.2.6/lib/rails/commands/commands_tasks.rb:75:in server' from /home/tmtcmon/rubyvenv/App/2.1/gems/railties-4.2.6/lib/rails/commands/commands_tasks.rb:39:inrun_command! 来自/home/tmtcmon/rubyvenv/App/2.1/gems/railties-4.2.6/lib/rails/commands.rb:17:in <top (required)>' from bin/rails:4:inrequire' 从 bin/rails:4:in `'

这个错误可能是因为我在共享主机上,因此我无法在端口 90 上启动某些东西,因为它已被使用?

2- 我无法在端口 3000(默认端口)上启动 rails server。这次我可以启动我的服务器,但无法使用http//:domain-name.com:3000 访问它

3- 如果我在一个随机端口上启动rails server,(我尝试了 30,000)服务器可以完美运行。问题是http://domain-name.com:30000 看起来不太好,我只喜欢 http//:domain-name.com

那么,对于这三个问题,三个问题:

1- 即使我有共享主机,是否可以在端口 90 上启动我的服务器?如果是这样,你知道我做错了什么吗?

2- 为什么我不能在端口 3000 上有效启动? (这不是一个真正的问题,因为我希望服务器在端口 90 上启动,但我很好奇。

3- 是否可以在地址栏中不显示 http//:domain-name:30000 的情况下将我的所有流量重定向到端口 30,000 ?我已经设法使用 .htacces 做到这一点,用户可以通过键入 http//:domain-name 进行连接,但它在地址栏中显示 http://domain-name:30000...

提前致谢!

编辑:对不起,如果问题已经得到解答,但如果是这样,经过数小时的研究我找不到它......

【问题讨论】:

    标签: ruby-on-rails ruby hosting


    【解决方案1】:

    如果您不是 root,则无法绑定到端口 90 或小于 1024 的任何端口,并且可能其他人已经在端口 3000 上运行服务,您可以执行netstat -nat | grep 3000 以查看是否有任何进程正在侦听。

    【讨论】:

    • 我在尝试运行 netstat 时收到“找不到命令”。我猜我的主机不允许我运行一些命令,(?)但完全有可能其他人正在端口 3000 上运行某些东西。我不知道非 root 无法在端口
    • 你可以试试curl http://localhost:3000 or telnet localhost 3000 or wget -O - http://localhost:3000,应该有一个命令可以用来测试连接。
    • curl localhost:3000 有点确认我在端口 3000 上没有进程。(它让我的主机页面说我试图访问一个不存在的页面。)跨度>
    • 如果curl 返回除错误以外的任何内容(甚至是 404),则表示有东西在运行,您可以通过 curl -v 查看响应头。可惜很难分辨谁在共享主机环境中运行它。
    • * About to connect() to localhost port 80 (#0) * Trying 127.0.0.1... connected * Connected to localhost (127.0.0.1) port 80 (#0) &gt; GET /:300000 HTTP/1.1 &gt; User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2 &gt; Host: localhost &gt; Accept: */* &gt; &lt; HTTP/1.1 404 Not Found &lt; Date: Sat, 26 Mar 2016 02:15:23 GMT &lt; Server: Apache &lt; Accept-Ranges: bytes &lt; Transfer-Encoding: chunked &lt; Content-Type: text/html &lt; 是您要找的吗? ^^
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    • 2013-03-31
    相关资源
    最近更新 更多