2015-11-14 114 views
8

ポート80でアプリケーションを起動できません。 私はIDEとサーバー上のローカルコンピュータで試してみました。私は他の同様の投稿をチェックして、rootでサーバー上でjarを実行していることを確認します。ポート80で実行中のSpringブートアプリケーション

、これは誤りです:

till here all ok 
... 
java.net.SocketException: Permission denied 
at sun.nio.ch.Net.bind0(Native Method) 
at sun.nio.ch.Net.bind(Net.java:433) 
at sun.nio.ch.Net.bind(Net.java:425) 
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) 
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) 
at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:338) 
at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:760) 
at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:472) 
at org.apache.catalina.connector.Connector.startInternal(Connector.java:986) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.StandardService.addConnector(StandardService.java:237) 
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.addPreviouslyRemovedConnectors(TomcatEmbeddedServletContainer.java:186) 
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:149) 
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.startEmbeddedServletContainer(EmbeddedWebApplicationContext.java:288) 
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:141) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:483) 
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) 
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:320) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:957) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:946) 
at com.andirod.StartApplication.main(StartApplication.java:20) 
... 
... 
... 
Exception in thread "main" java.lang.IllegalStateException: Tomcat connector in failed state 
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:157) 
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.startEmbeddedServletContainer(EmbeddedWebApplicationContext.java:288) 
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:141) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:483) 
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) 
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:320) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:957) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:946) 
at com.andirod.StartApplication.main(StartApplication.java:20) 
+0

? [この回答](http://stackoverflow.com/a/414258/2970947)も参照してください。 –

答えて

18

VMオプションに-Djava.net.preferIPv4Stack=trueの追加はrootだけで開くことができますので、ポート80をによって制限されています

80ポートにアプリケーションを公開する場合は、ポート80から要求をリダイレクトする必要があります。 pringapp(例えば8080)ポート

あなたはapache2のサーバーウィッヒを使用することができ、ポート80上で動作するようにデフォルトで許可されるとTomcatのdebian

apt-get install apache2 

a2enmod proxy 
a2enmod proxy_http 


cd /etc/apache2/sites-enabled 
<VIRTUALHOST.*> 

ProxyPreserveHost On 

... 

ProxyPass/http://localhost:8080/ 
</VIRTUALHOST> 

サービスapache2のため

構成例をにあなたのための要求を転送することができます

を再起動するか、リダイレクト

のiptables -tのnat -A PREROUTING -p tcpのためのiptablesを使用--to-POR 80 -j REDIRECTを--dportトン8080

あなたが使用する必要がある場合はlocalhostにもこの

を追加

のiptables -t NAT -I OUTPUT -p TCP -d 127.0.0.1 --dport 80 -j --to-ポート8080

+1

iptablesソリューションをありがとう。 – heroin

3
REDIRECT

この問題が発生しました。私はUbuntu AWSインスタンスでSpring起動アプリケーションを実行しています。

java -jar app.jar --server.port=80あなたが説明したようにエラーが発生します。ソリューションは、1024以下のポートはrootだけが開くことができるので、 "sudo"を追加してください。 sudo java -jar app.jar --server.port=80。私を鼓舞ため

ありがとう:どのようなプラットフォームでD

関連する問題