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


