由于項目發布需要,最近做了一個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就能成功啟動,廢話不多,直接上代碼,歡迎拍磚:
?
tomcat自啟動腳本
#
!/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元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

