21

私はシンサーバーを学んでいます。今ではthin startサーバーを起動するために使用できますが、ポートは 3000 です。Web ページを取得するには、ブラウザーに 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>'
4

9 に答える 9

25

これは、ポートがすでに使用されている可能性があることを示しています。

また、管理者権限で実行してみてください

sudo thin start -p 80

(Tom Crinson のブログ記事に感謝します。)

于 2011-02-24T03:55:10.733 に答える
24

古い Ruby プロセスがどこかでハングしているようです。

アクティビティ モニターを起動し、すべての Ruby プロセスを強制終了します。

またはターミナルを使用します。

ps -e | grep "ruby"

それから:

kill {process id}
于 2012-04-15T17:06:02.290 に答える
20
rvmsudo rails server thin -p 80
于 2012-04-01T08:20:25.370 に答える
12

If you don't want to run sudo to start up the webserver (maybe the user isn't a sudoer), you can always go in as a superuser, and set up redirection for port 80 traffic to port 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

To lookup the iptables

sudo iptables --list -n -t nat
sudo iptables --list -n

This way you can run the webserver as another user who isn't as privileged.

Credit goes to this post

于 2012-04-28T21:12:38.010 に答える
5

伝統的に、ポート 80 は特権ポート (実際には 1024 未満のポートはすべて) であるため、それにバインドするにはスーパーユーザー特権が必要です。

ドキュメントに目を通すと、彼らはそれを背後で実行することを提案しnginxています。これは一般的に良い考えです。パッケージ マネージャーを使用して をインストールしたと仮定すると、起動時に起動nginxする方法についての説明が表示され、デフォルトでポート 80 にバインドされます。nginx

于 2011-02-24T03:55:34.370 に答える
1

RVM を使用して Ruby をインストールしたため、Thin をポート 80 で実行できませんでしsudoた。root ユーザーはそれにアクセスできませんでした。また、Thin を実行して mongodb アクセス URL を設定する前に、環境変数を設定する必要がありました。次の行は私のためにそれをしました:

rvmsudo MONGODB_URI=MY_MONGO_URI thin start -p 80 -d
于 2012-09-16T01:40:04.833 に答える
-1

8080 ポートを使用してみることができます。GWT アプリケーションでそれを行いますが、とにかく 3000 よりも便利です。

于 2012-09-15T15:43:01.927 に答える