2012-05-04 59 views
16

我已經啓動並測試了端口8080下的Tomcat(默認)。現在我將連接器端口改爲80,然後重新啓動Tomcat,在我最小的Debian 6.0安裝中沒有任何顯示。現在這裏的訣竅在哪裏?爲什麼Tomcat使用端口8080而不是80?

<Connector port="80" protocol="HTTP/1.1" 
      connectionTimeout="20000" 
      URIEncoding="UTF-8" 
      redirectPort="8443" /> 
+3

你得到的BindException,也許,在catalina.out的?有一個公平的機會,其他服務器已經綁定到端口80. –

+0

也許另一個服務正在該端口上運行 –

+1

首先要做的事情:查看日誌(在tomcat/logs目錄中) –

回答

31

去到/ etc /默認/ tomcat6中,改變#AUTHBIND=noAUTHBIND=yes

# If you run Tomcat on port numbers that are all higher than 1023, then you 
# do not need authbind. It is used for binding Tomcat to lower port numbers. 
# NOTE: authbind works only with IPv4. Do not enable it when using IPv6. 
# (yes/no, default: no) 
#AUTHBIND=no 
+0

也可以參考http://thelowedown.wordpress.com/2010/08/17/tomcat-6-binding-to-a-privileged-port-on-debianubuntu/ –

9

您是否以root用戶身份啓動了端口80上的Tomcat?您必須是root才能綁定到Linux中的端口< = 1024。

+6

值得注意的是:將Tomcat作爲'root'啓動通常是一個壞主意,安全性 - 除非它能夠(並已配置)在綁定後將其用戶切換爲非特權用戶(這是上次檢查時不可能的)。 – Romain

+0

我開始使用/etc/init.d/tomcat6開始使用root賬戶登錄Tomcat。我可以修改它,以便可以在端口80下啓動它嗎? –

+1

tomcat配置文件決定了使用哪個端口,啓動過程的方式並不重要。你有機會在80端口上聽別的東西。嘗試運行:netstat -an | grep 80 這將讓你知道是否有東西已經在端口80上聽。 – rooftop

0

停止apache服務,然後運行Tomcat的你應該是不錯的,默認情況下,Apache是​​運行在端口80個

+0

端口<= 1024是否具有特權呢? – Romain

+0

我相信他已經有根 – Satya

+2

在OP中沒有提到這一點。你不應該假設。 – Romain

11

兩個典型的原因:

  • 你很可能沒有權限來聽端口低於1024的(通常需要管理權限,如爲root
  • 別的東西可能已經在端口80(例如Apache)的監聽
+1

@Romain:好的,根或類似的特權帳戶。已編輯澄清。我*相信* 1024會沒事的(即它只有0-1023這需要特權,但我可能是錯的) –

+0

沒有其他人正在偵聽端口80.我是root,但我正在執行它/etc/init.d/ tomcat6 start –

8

如果沒有註釋的作品之前(如發生在我身上),可以從該端口808080指揮交通。

要做到這一點:

http://forum.slicehost.com/index.php?p=/discussion/2497/iptables-redirect-port-80-to-port-8080/p1

簡而言之,在終端中輸入這三個命令:

$ sudo iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT 
$ sudo iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT 
$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080 
+0

它只是一個極端的例子,就像你已經提到「如果以前沒有評論過的話」。 – emecas

+0

其他讀者正在看到我丟失的東西: *這很簡單,無需安裝&管理'authbind'即可完成目標。 * Tomcat監聽低端口號。 * Tomcat作爲非特權用戶運行。 這是一個極端案例解決方案嗎? –

+0

該解決方案並不好,因爲最終用戶會在其URL中看到端口號並查看URL更改。 – alexk

2

改變結合後運行你的啓動腳本爲根。

sudo ./<path to tomcat bin director>/startup.sh 
+0

完美的解決方案,挽救了我的一天 –

+0

* nix的正確答案,但Windows如何? –

0

您可以使用authbind/privbind或功能綁定到端口80

相關問題