[TOC]
聲明
本文只是出于該系列文章知識點完整的目的,沒啥技術含量。
或許只適合初學者,大神請繞路……
1 自帶腳本介紹
在tomcat安裝目錄中的bin目錄下有幾個自帶的腳本文件。
windows上是.bat批處理文件,linux下是.sh文件。
*.sh or *.bat | desc |
---|---|
catalina.sh | tomcat主要腳本,可用于tomcat啟動、停止等 |
digest.sh | 用于生成加密過的tomcat用戶密碼 |
tool-wrapper.sh | 一般和digest腳本結合使用 |
service.bat.sh | 在windows上以windows服務的方式安裝或卸載tomcat |
setclasspath.sh | 設定tomcat的classpath等環境變量 |
shutdown.sh | 相當于 catalina.sh stop |
startup.sh | 相當于 catalina.sh start |
configtest.sh | 配置文件測試腳本 |
version.sh | 查看版本信息 |
1.1 catalina.sh | catalina.bat
catalina.sh <cmd>
cmd可用選項如下:
debug
以debug模式啟動
debug -security
啟用catalina.policy文件
jpda start
以jpda(Java Platform Debugger Architecture)調試器的模式啟動
run
即使是在linux上,也不會將輸出重定向到日志文件,就像和windows上(那個一直開著的黑窗口)一樣的效果
run -security
start
啟動tomcat
start -security
stop n
停止tomcat,最多有n秒的延遲來處理釋放資源等的操作
stop
相當于 stop 5
stop n -force
停止tomcat,最多n秒延遲,n秒之后會強制kill掉tomcat
stop -force
相當于 stop 5 --force
configtest
檢測配置文件${catalina.home}/conf/server.xml語法
version
tomcat版本信息
1.2 digest.sh
CATALINA_HOME/bin/digest.[bat|sh] -a {algorithm} {cleartext-password}
algorithm:sha,md2,md5
# 生成123的md5特征碼
./digest.sh -a md5 123
2 tomcat環境變量
name | default | desc |
---|---|---|
CATALINA_HOME | 安裝目錄 | tomcat基本目錄 |
CATALINA_BASE | 安裝目錄 | logging、work、conf等目錄所在目錄 |
CATALINA_OPTS | 一般是傳遞JVM參數使用的,比如-Xmx256M | |
CATALINA_TMPDIR | ${CATALINA_HOME}/temp | tomcat臨時文件目錄 |
JAVA_HOME | …… | |
JRE_HOME | …… | |
JAVA_OPTS | 傳遞JVM參數使用的,比如-Xmx256M | |
JPDA_TRANSPORT | dt_socket | JPDA調試器使用的傳輸協議 |
JPDA_ADDRESS | 8000 | 制定和catalina.sh jpda start 一起使用的jpda地址 |
JSSE_HOME | 指定用于https使用的Java Secure SocketsExtension的位置 | |
CATALINA_PID | 進程描述符位置 |
3 常見問題
3.1 查看tomcat是否正在運行
方法一:jps
Java Process Snapshot
[root@VM_15_242_centos bin]# jps
# 這個Bootstrap就是tomcat實例了
11905 Bootstrap
13630 Jps
[root@VM_15_242_centos bin]#
方法二:netstat
[root@VM_15_242_centos bin]# netstat -tlnp | grep java
tcp 0 0 127.0.0.1:8005 0.0.0.0:* LISTEN 11905/java
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 11905/java
方法三:ps(progress snapshot)
[root@VM_15_242_centos bin]# ps aux | grep catalina.startup
#………………
[root@VM_15_242_centos bin]# ps -ef | grep java
………………
3.2 強行殺死tomcat進程
通過以上的幾種方法都能獲得tomcat進程的進程號。
直接kill即可。
3.3 配置tomcat遠程登錄
這個問題要是細說就麻煩了,想shiro、spring-security這種權限框架都有個類似于叫Realm的東西。
- JDBCRealm
- DataSourceRealm
- JNDIRealm
- UserDatabaseRealm
- MemoryRealm
- JAASRealm
具體的就不說了,這里指記錄最簡單最快速上手的配置:tomcat-user.xml
你的server.xml文件中應該有這么個配置:
<GlobalNamingResources>
<Resource auth="Container" description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase"
pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>
</GlobalNamingResources>
在server.xml的某個Engine下,應該有類似以下的配置:
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
以上兩處的配置由一個關鍵值為 UserDatabase
的關鍵屬性關聯。
所以只要修改了,tomcat-user.xml的配置,在用到它的Engine下都會生效。
所以,將tomcat-user.xml改成類似以下配置就行了:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<!-- 加上role和user就可以了
具體的roles可取哪些值,看文檔吧
另外,這種明文的也不怎么安全,
只是為了快速配置,實際項目中不建議使用 -->
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="123=" roles="manager-gui,manager-script"/>
</tomcat-users>
另外,記得重啟tomcat才能重讀配置文件生效。