2015-11-14 4 views
8

पर स्प्रिंग बूट रनिंग ऐप मैं पोर्ट 80 पर आवेदन शुरू नहीं कर सकता। मैंने आईडीई और सर्वर पर स्थानीय कंप्यूटर पर कोई भाग्य नहीं लिया है। मैंने अन्य समान पदों की जांच की है और यह सुनिश्चित कर लें कि मैं जड़ को रूट पर सर्वर पर चलाता हूं।पोर्ट 80

इस

त्रुटि है:

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

1024 नीचे linux बंदरगाहों पर केवल रूट द्वारा खोला जा सकता करने के लिए -Djava.net.preferIPv4Stack=true जोड़ें, ताकि पोर्ट 80 के द्वारा प्रतिबंधित है डिफ़ॉल्ट

यदि आप 80 एप पर अपना ऐप प्रकाशित करना चाहते हैं तो आपको पोर्ट 80 से उस पोर्ट को अनुरोध को पुनर्निर्देशित करने की आवश्यकता है जिसे आप अपने रन pringapp (जैसे 8080) बंदरगाह

आप apache2 सर्वर जो उपयोग कर सकते हैं पोर्ट 80 पर काम करने के लिए डिफ़ॉल्ट रूप से अनुमति दी है और आप के लिए डेबियन

apt-get install apache2 

a2enmod proxy 
a2enmod proxy_http 


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

ProxyPreserveHost On 

... 

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

सेवा apache2 के लिए बिल्ला

उदाहरण विन्यास करने के लिए अनुरोध अग्रेषित कर सकते हैं

पुनरारंभ करें या रीडायरेक्ट

के लिए iptables का उपयोग

iptables -t नेट -एक PREROUTING -p टीसीपी --dport 80 -j --to-पोर पुनर्निर्देशन टी 8080

आप स्थानीय होस्ट उपयोग करने की आवश्यकता है, तो भी आयकर नेट मैं आउटपुट -p टीसीपी इस

iptables जोड़ने -d 127.0.0.1 --dport 80 पुनर्निर्देशन -j --to-बंदरगाहों 8080

+1

iptables समाधान के लिए धन्यवाद। – heroin

3

बस इस समस्या का सामना किया। मैं उबंटू एडब्ल्यूएस उदाहरण पर स्प्रिंग बूट एप्लिकेशन चला रहा हूं।

java -jar app.jar --server.port=80 मुझे आपके जैसा वर्णन जैसा त्रुटि देगा। समाधान, ठीक है, क्योंकि 1024 से नीचे के बंदरगाह केवल रूट द्वारा खोले जा सकते हैं, "सुडो" जोड़ें। sudo java -jar app.jar --server.port=80

मुझे प्रेरणा देने के लिए धन्यवाद: डी

संबंधित मुद्दे