이제 Ubuntu Server 11.04의 Torquebox 2.0.3에 Rails 애플리케이션을 배포하려고 합니다. 이제 올바르게 배포되었으므로 포트 8080에서 애플리케이션을 방문할 수 있지만 포트 80을 수신하도록 서버를 구성할 수는 없습니다.
수신할 포트를 설정하려고 했습니다 $TORQUEBOX_HOME/jboss/standalone/configuration/standalone.xml
.
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
....
<socket-binding name="http" port="80"/>
....
</socket-binding-group>
그 후 를 호출하여 Torquebox를 시작하면 torquebox run
다음 오류가 발생합니다.
15:47:07,804 ERROR [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-1) Error initializing endpoint: java.net.BindException: Permission denied /127.0.0.1:80
at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:983) [jbossweb-7.0.13.Final.jar:]
at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:190) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.connector.Connector.init(Connector.java:983) [jbossweb-7.0.13.Final.jar:]
at org.jboss.as.web.WebConnectorService.start(WebConnectorService.java:267) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControlle
rImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [rt.jar:1.6.0_23]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Thread
PoolExecutor.java:603) [rt.jar:1.6.0_23]
at java.lang.Thread.run(Thread.java:679) [rt.jar:1.6.0_23]
하지만 포트 80을 보유하고 있는 프로세스는 없습니다.
$ sudo lsof -i :80
$ sudo netstat -tulpn | grep :80
$
이 문제를 어떻게 해결하고 jboss 서버가 포트 80을 수신하도록 구성할 수 있습니까?
답변1
1024보다 낮은 번호의 포트는 루트 사용자로 제한되는 경향이 있습니다. 이 문제를 해결하는 가장 좋고 간단한 방법은 애플리케이션 수준이 아닌 iptables 또는 네트워크 방화벽에서 내부적으로 포트 80을 8080으로 전달하는 것입니다.