0

私は何日もの間、aws ec2で完全なプレイとbash-rookieとして、文書化されていないプレイアプリケーション(友達を助ける)を開始しようとしてきましたが、ついにそれを開始することができました。ただし、宣言されたplayShop.shファイルのようにポート8080でリッスンしていませんが、ランダムポート(8081)で8080が「すでに使用中」の例外をスローしました。

playShop.sh(ポートが変更されています):

sudo nohup ./start -Dconfig.file = / home / ec2-user / prod.conf -Dhttp.port = 8081 -Dhttp.address = 127.0.0.1&

始める

!/ usr / bin / env sh

exec java $ * -cp " dirname $0/ lib / *" play.core.server.NettyServerdirname $0

ここまでは順調ですね!しかし、どうすればWebブラウザからこれにアクセスできますか?パブリックDNSを呼び出すと、標準のウェルカムページが表示されます。そのポートでセキュリティグループ設定(quicklaunch1-> inbound)を設定し、ロードバランサー->リスナーで遊んでみましたが、実際には何も役に立ちませんでした。

これは長い旅の最後のステップのようで、どんな助けでも大歓迎です!ありがとう。

編集:これはnohup.outがこれらの2つのポートに記録したものです:

    Play server process ID is 1593
[[37minfo[0m] play - Application started (Prod)
Oops, cannot start the server.
org.jboss.netty.channel.ChannelException: Failed to bind to: /127.0.0.1:8080
    at org.jboss.netty.bootstrap.ServerBootstrap.bind(ServerBootstrap.java:298)
    at play.core.server.NettyServer.<init>(NettyServer.scala:63)
    at play.core.server.NettyServer$.createServer(NettyServer.scala:132)
    at play.core.server.NettyServer$$anonfun$main$5.apply(NettyServer.scala:162)
    at play.core.server.NettyServer$$anonfun$main$5.apply(NettyServer.scala:161)
    at scala.Option.map(Option.scala:133)
    at play.core.server.NettyServer$.main(NettyServer.scala:161)
    at play.core.server.NettyServer.main(NettyServer.scala)
Caused by: java.net.BindException: Address already in use
    at sun.nio.ch.Net.bind(Native Method)
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:137)
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:77)
    at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.bind(NioServerSocketPipelineSink.java:138)
    at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.handleServerSocket(NioServerSocketPipelineSink.java:90)
    at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:64)
    at org.jboss.netty.channel.Channels.bind(Channels.java:569)
    at org.jboss.netty.channel.AbstractChannel.bind(AbstractChannel.java:187)
    at org.jboss.netty.bootstrap.ServerBootstrap$Binder.channelOpen(ServerBootstrap.java:343)
    at org.jboss.netty.channel.Channels.fireChannelOpen(Channels.java:170)
    at org.jboss.netty.channel.socket.nio.NioServerSocketChannel.<init>(NioServerSocketChannel.java:80)
    at org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory.newChannel(NioServerSocketChannelFactory.java:158)
    at org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory.newChannel(NioServerSocketChannelFactory.java:86)
    at org.jboss.netty.bootstrap.ServerBootstrap.bind(ServerBootstrap.java:277)
    ... 7 more
Play server process ID is 1650
[[37minfo[0m] play - Application started (Prod)
[[37minfo[0m] play - Listening for HTTP on port 8081..

4

1 に答える 1

0

ここまでは順調ですね!しかし、どうすれば Web ブラウザからこれにアクセスできますか? パブリック DNS を呼び出すと、標準のウェルカム ページが表示されます。そのポートでセキュリティグループ設定(quicklaunch1--> inbound)を設定しようとし、ロードバランサー-->リスナーも試しましたが、実際には何も役に立ちませんでした。

Web ブラウザでドメイン名をヒットすると、デフォルトでポート 80 に接続しようとします。これを回避するには、次のようにアクセスする必要があります。

http://myserver.com:8081/ 

これはユーザーにとって難しいことです。これを回避するために推奨される方法は、ポート 80 でリッスンし、必要に応じてアプリケーション サーバー (再生サーバー) に要求を転送するクライアントからの標準要求を処理するプロキシ サーバーを用意することです。通常、これには nginx をお勧めします。プレイ フレームワークのホームページには、セットアップの基本的なガイドがあります。あなたの場合、それは次のようになります:

http {

  proxy_buffering    off;
  proxy_set_header   X-Real-IP $remote_addr;
  proxy_set_header   X-Scheme $scheme;
  proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header   Host $http_host;

  upstream my-backend {
    server 127.0.0.1:8081;
  }

  server {
    server_name www.mysite.com mysite.com;
    rewrite ^(.*) https://www.mysite.com$1 permanent;
  }

  server {
    listen               443;
    ssl                  on;
    ssl_certificate      /etc/ssl/certs/my_ssl.crt;
    ssl_certificate_key  /etc/ssl/private/my_ssl.key;
    keepalive_timeout    70;
    server_name www.mysite.com;
    location / {
      proxy_pass  http://my-backend;
    }
  }
}
于 2013-03-08T23:25:15.533 に答える