xinetd 是處理請求重新導向的一種好方法,但它執行了一個處理序以在連接端口之間實際轉信數據,這確實增加了一些開銷。最新的 Linux 內核版本透過使用 iptables 來支持一種更好的設定重新導向的方法。iptables 與 xinetd 的區別之處在于它是一個真正的內核組件。因此,它可以避免 xinetd 方法增加的開銷。使用 iptables 的唯一缺點是它可能比 xinetd 更難以組態,而且它只可用于相當新的內核版本。
您需要執行支持 iptables 的 2.4.x 或更新的內核,以便使用我在這里描述的技術。組態和設定 iptables 是一個確信由幾篇文章來單獨描述的主題,所以我不打算在這里嘗試討論該主題。如果對 iptables 的入門需要幫助,請閱讀 Linux 分發版的手冊。要快速檢查 iptables 是否在您的系統上執行,嘗試以 root 使用者身份執行︰
/sbin/service iptables status
如果它正在執行,您將會在控制臺上看到表和鏈的清單。
iptables 使用幾個不同的表和封包鏈來處理規則的。為了將進入 HTTP 請求從連接端口 80 重新導向到系統中的另一個連接埠,您將要使用 nat 表(表示網絡地址轉換,Network Address Translation)和 PREROUTING 鏈。清單 2 提供了要執行的實際指令(以 root 使用者身份),以便于加入一條處理這一請求的規則。這條規則的作用是將進入包的目標連接端口 80 修改成目標連接端口 8080,因此祇有在您沒有阻止從外部使用連接埠 8080 時,這條規則才會正確工作。一旦執行了該指令,您就應該能夠立即處理進入請求。
清單 2. iptables 重新導向規則
/sbin/iptables -t nat \
-A PREROUTING -j REDIRECT -p tcp \
——destination-port 80:80 ——to-ports 8080
/sbin/service iptables save
以便于儲存目前 iptables 組態。
自動啟動 Tomcat
當執行諸如 Tomcat 之類別的 Java 服務時的另一個問題是當系統啟動時,如何自動啟動該應用程序,以及當系統關機時如何自動停止它(換句話說,將它當作守護程序執行)。經驗豐富的 Linux 使用者已經知道怎樣做,但如果您還是個 Linux 新手,以下就是一些基礎知識。
如果您就在您的個人系統上執行它并且想要使用與直接執行 Tomcat 一樣的對 Tomcat 的文件和目錄的存取權,那么您可以用您自己的使用者名稱來設定它。但是,通常,一個比較好的想法是︰為將要作為守護程序執行的任何程序設定一個單獨的使用者。要針對 Tomcat 執行這一作業,以 root 使用者身份執行︰
/usr/sbin/useradd tomcat
這將建立一個名為 tomcat 的使用者賬戶并建立一個用于 Tomcat 安裝的主目錄 /home/tomcat.所建立的主目錄的所有者是 tomcat 使用者,而且通常只容許這個使用者存取(當然還有 root 使用者)。如果想要從其它賬戶存取 Tomcat 安裝,可以將許可權變更成包括組存取權,并將 tomcat 組新增到這些其它賬戶。
總之,要將 Tomcat 當作守護程序執行,需要將服務組態文件新增到 /etc/init.d 目錄中,而您可能要將該文件命名為「tomcat」。清單 3 提供了該文件的樣本。這假設了 Tomcat 安裝在 /home/tomcat 下,并且該位置中有兩個 shell 指令碼文件,用于處理啟動和停止服務器(tcstart.sh 和 tcstop.sh)。在執行實際的 Tomcat 啟動或停止指令碼之前,需要使用這些文件來設定 Tomcat 所需的環境變量(包括 JAVA_HOME 和 JDK_HOME)。
清單 3. Tomcat 服務定義
|