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