由于項目發布需要,最近做了一個JRE+Tomcat+Application的一體包。期間遇到了一些問題,暫且做下記錄,以備以后查詢。
?
首先是Tomcat配置80端口,與windows中配置一樣,修改$CATALINA_HOME/conf/目錄下server.xml中的
1 < Connector port ="8080" protocol ="HTTP/1.1"
2 connectionTimeout ="20000"
3 redirectPort ="8443" />
改為:
?
< Connector port ="80" protocol ="HTTP/1.1"
connectionTimeout ="20000"
redirectPort ="8443" />
?
值得一說的是,Linux下認為1024以下的端口都是不安全的,所以打開1024以下端口必須具有root權限,所以配置完成之后僅僅使用./startup.sh的話,tomcat是無法監聽80端口的,Tomcat 6以前的版本還會報錯說Permission denied。而到了Tomcat 6之后的版本就什么錯也不報,而你連80端口卻打死也連不上,這一點讓我郁悶了好久。
?
其次是Tomcat配置manager的user,這個沒什么好說的,直接上代碼:
?
< role rolename ="manager" />
< user username ="root" password ="XXXXXXXXX" roles ="manager" />
注意:如果想要登陸Tomcat manager?就必須定義manager這個role,并且相應的用戶的role必須包含manager。
?
?
最后就是Tomcat的開機自啟動了,網上查了很多資料,都說的不怎么全,有些更是扯出了jsvc的完全是在扯淡,將一件簡單的事情弄得這么復雜。眾所周知,在Linux中設置開機自啟動的服務,需要在/etc/rcX.d下掛載。除此之外還需要在/etc/init.d下些啟動腳本。其實很簡單,先export出所需要的環境變量,例如JRE_HOME, CATALINA_HOME, CATALINA_BASE什么的,然后再直接調用$CATALINA_HOME/bin/startup.sh就能成功啟動,廢話不多,直接上代碼,歡迎拍磚:
?

# !/bin/sh
# chkconfig: 345 99 10
# description: Auto-starts tomcat
# /etc/init.d/tomcatd
# Tomcat auto-start
# Source function library.
# . /etc/init.d/functions
# source networking configuration.
# . /etc/sysconfig/network
RETVAL = 0
export JRE_HOME =/ usr / jre1. 6 .0_22
export CATALINA_HOME =/ usr / tomcat6
export CATALINA_BASE =/ usr / tomcat6
start()
{
if [ -f $CATALINA_HOME / bin / startup.sh ];
then
echo $ " Starting Tomcat "
$CATALINA_HOME / bin / startup.sh
RETVAL =$?
echo " OK "
return $RETVAL
fi
}
stop()
{
if [ -f $CATALINA_HOME / bin / shutdown.sh ];
then
echo $ " Stopping Tomcat "
$CATALINA_HOME / bin / shutdown.sh
RETVAL =$?
sleep 1
ps - fwwu tomcat | grep apache - tomcat | grep - v grep | grep - v PID | awk '{print $2 }' | xargs kill - 9
echo " OK "
# [ $RETVAL -eq 0 ] && rm -f /var/lock/...
return $RETVAL
fi
}
case " $1 " in
start)
start
;;
stop)
stop
;;
restart)
echo $ " Restaring Tomcat "
$0 stop
sleep 1
$0 start
;;
* )
echo $ " Usage: $0 {start|stop|restart} "
exit 1
;;
esac
exit $RETVAL
將這段代碼保存到/etc/init.d/目錄下,名稱為tomcat,之后給它加上運行權限:sudo chmod +x /etc/init.d/tomcat。
?
之后就是將這個shell文件的link連到/etc/rc2.d/目錄下。linux的/etc/rcX.d/目錄中的數字代表開機啟動時不同的run?level,也就是啟動的順序,Ubuntu9.10下有0-5六個level,不能隨便連到其他目錄下,可能在那個目錄中的程序啟動時Tomcat所需要的一些庫尚未被加載,用ln命令將tomcat的鏈接鏈過去:sudo ln -s /etc/init.d/tomcat /etc/rc2.d/S16Tomcat。rcX.d目錄下的命名規則是很有講究的,更具不同需要可能是S開頭,也可能是K開頭,之后的數字代表他們的啟動順序,詳細看各自目錄下的Readme文件。
?
而通過掛在rcX.d的程序都是以root權限啟動的,所以不用擔心權限不夠80端口無法打開的問題。
?
接下來就是把這個腳本設置成系統啟動時自動執行,系統關閉時自動停止,使用如下命令:chkconfig ——add tomcat。如果chkconfig沒有安裝,則使用apt-get?或者yum之類的程序進行安裝,一般服務器版本的Linux都已經自帶了。
?
好了,之后就是 sudo reboot。重啟之后就會發現,你的Tomcat已經成功運行了。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
