1

クラウド サービス (Amazon AWS) で動作する Yaws Web サーバーを取得しようとしています。サーバーにローカルコピーをコンパイルしてインストールしました。私の問題は、ポート 8000 またはポート 80 で実行しているときに Yaws を実行できないことです。

yaws.conf に次の構成があります。

   port = 8000
   listen = 0.0.0.0
   docroot = /home/ubuntu/yaws/www/test
   dir_listings = true

これにより、次の成功した起動/結果が生成されます。

Eshell V5.8.5 (^G で中止)

=INFO REPORT==== 16-Sep-2012::17:21:06 === Yaws: 構成ファイル /home/ubuntu/yaws.conf の使用

=INFO REPORT==== 16-Sep-2012::17:21:06 === Ctlfile : /home/ubuntu/.yaws/yaws/default/CTL

=INFO REPORT==== 16-Sep-2012::17:21:06 === Yaws: <3> 仮想サーバーの 0.0.0.0:8000 をリッスンしています: - http://domU-12-31-39 - 0B-1A-F6:8000 配下 /home/ubuntu/yaws/www/trial -

=INFO REPORT==== 16-Sep-2012::17:21:06 === Yaws: <1> 仮想サーバーの 0.0.0.0:4443 をリッスンしています: -

URL (http://ec2-72-44-47-235.compute-1.amazonaws.com) にアクセスしようとすると、接続されません。ポート 80 または 8000 が開いているかどうかを確認するために paping を使用しようとしました (http://code.google.com/p/paping/)。働く。

また、yaws.conf をポート 80 に設定してみました。次のように表示されます。

   port = 8000
   listen = 0.0.0.0
   docroot = /home/ubuntu/yaws/www/test
   dir_listings = true

次のエラーが表示されます。

=エラー レポート==== 16-Sep-2012::17:24:47 === Yaws: リッスンに失敗しました 0.0.0.0:80: {error,eacces}

=エラー レポート==== 16-Sep-2012::17:24:47 === ソケットをリッスンできません: {error,eacces} =エラー レポート==== 16-Sep-2012::17: 24:47 === トップ プロシージャが停止、gserv を終了 =エラー レポート==== 16-Sep-2012::17:24:47 === トップ プロシージャが停止、gserv を終了 ===== 16-Sep -2012::17:24:47 === アプリケーション: yaws が終了しました: {shutdown,{yaws_app,start,[normal,[]]}} タイプ: 永続的 {"カーネル pid が終了しました",application_controller," {application_start_failure,yaws ,>>>>>>{シャットダウン,>{yaws_app,start,[ノーマル,[]]}}}"}

また、iptables を使用してポート 80 を開きました。sudo iptables -L を実行すると、次の出力が得られます。

Chain INPUT (policy ACCEPT) target prot opt source destination
ACCEPT tcp -- ip-192-168-2-0.ec2.internal ip-192-168-2-16.ec2.internal tcp dpt:http ACCEPT tcp -- 0.0 .0.0 どこでも tcp dpt:http ACCEPT all -- どこでも ctstate 関連、確立済み ACCEPT tcp -- どこでも どこでも tcp dpt:http ACCEPT tcp -- どこでも どこでも tcp dpt:http

Chain FORWARD (policy ACCEPT) target prot opt source destination

Chain OUTPUT (policy ACCEPT) target prot opt source destination

お待ちいただきありがとうございます

4

6 に答える 6

3

実際、このフォーラムの投稿 (http://www.trapexit.org/forum/viewtopic.php?p=42923) を通じて、なぜ動作しないのかについての答えを見つけました。

それは述べています:

2a. I run yaws on 8080 and have nginx reverse proxying 
from http://mydomain:80 to 8080. Yaws won't run as a 
low-privilege user if you want it to listen on port 
80.

2b. nginx.conf needs the following directives: 
server { 
listen 80; 
server_name yourdomain.com; 
access_log /path/to/access/log.log 
location / { 
proxy_pass http://127.0.0.1:8080; 
proxy_redirect default; 
} 
} 

基本的に、nginx をインストールし、プロキシ サーバーとして実行するように構成しました。

Chicago Boss フレームワークを実行するために同じソリューションを使用しました。唯一の違いは、nginx proxy_pass を >http://127.0.0:8001 に設定していることです。Chicago Boss はデフォルトで 8001 で実行されるためです。誰かがプロキシサーバーとしてnginxを使用している場合、これがerlangサーバーの同時実行の利点にどのように影響するか、またはまったく効果がないことを知っている人はいますか?

于 2012-09-22T21:14:05.723 に答える
1

インタラクティブなコマンドラインにはroot権限が必要であることに注意してください。

sudo su
yaws -i --id whatever

yawsデーモンが同時に実行されている場合は、IDも指定する必要があります。

于 2012-10-27T16:37:36.130 に答える
1

探すべき2つのことがあります:

  • インスタンスのセキュリティグループ設定を確認し、ポート80または8000が開いている(からアクセス可能0.0.0.0/32)ことを確認します。
  • サーバーをマシンの内部IPアドレスにバインドしてみてください。一部のサーバーは、代わりにこのインターフェイスをリッスンする必要があり0.0.0.0.ます。コンソールまたはで内部IPを確認できます。ifconfig
于 2012-09-17T07:47:53.330 に答える
1

貼り付けたエラー レポートの 1 つに、ポート 80 でサーバーを起動できない理由が示されています:パーミッション({error, eaccess})。

=ERROR REPORT==== 16-Sep-2012::17:24:47
=== Yaws: Failed to listen 0.0.0.0:80 : {error,eacces}

ポート 8000 での起動に関して、マシンに SSH で接続し、ローカルでサーバーに接続しようとしましたか (例: telnet 経由)? それが機能する場合、他の人が示唆したように、Ubuntu ファイアウォールでポート 8000 が開いていないか、EC2 インスタンスのセキュリティ グループにそのポートでのインバウンド トラフィックを許可するルートが含まれていないことに問題があるはずです。

この質問はおそらくServerFaultまたはAskUbuntuに移動する必要があると述べました。

于 2012-09-17T07:37:54.460 に答える
1

http://hyber.org/privbind.yaws

特権ポートへのバインド

UN*X オペレーティング システムで見られる一般的な誤機能は、root のみが 1024 未満のポートにバインドできるという制限です。回避策に多くの費用が費やされており、多くの場合、結果はセキュリティ ホールです。

$ setcap 'cap_net_bind_service=+ep' /usr/lib/erlang/erts-5.7.4/bin/beam
于 2013-06-17T12:56:37.383 に答える
0

@Bernard は、EC2 インスタンスにそれを保護するファイアウォールがあることは正しいです。インスタンスのEC2 セキュリティ グループ(管理コンソール Web インターフェイスの左側にあります) を変更して、使用するポートへのインバウンド TCP トラフィックを許可する必要があります。HTTPポート 80 については、コンボ ボックスから選択できます。ポート 8080 の場合Custom TCP Ruleは、ポート番号を選択して入力します。

于 2012-09-16T20:07:21.833 に答える