前些時候困惑于一個tomcat服務(wù)的性能問題毙玻,查明原因后想試著改改tomcat源碼呕童,然后再編譯、發(fā)布∠海現(xiàn)將自己編譯的過程整理成文夺饲。
1 安裝ant
官網(wǎng)下載最新ant:apache-ant-1.9.7-bin.tar.gz,解壓施符。ant為綠色軟件往声,解壓即安裝。
~$ tar -zxvf apache-ant-1.9.7-bin.tar.gz
2 編譯啟動tomcat7
說明: 我的Linux上安裝的是jdk1.6戳吝,生產(chǎn)環(huán)境使用tomcat7浩销。
官網(wǎng)http://tomcat.apache.org/download-70.cgi上下載tomcat 7源碼:
apache-tomcat-7.0.73-src.tar.gz,解壓
~$ wget http://apache.communilink.net/tomcat/tomcat-7/v7.0.73/src/apache-tomcat-7.0.73-src.tar.gz #官網(wǎng)獲取的下載地址
~$ tar -zxvf apache-tomcat-7.0.73-src.tar.gz
~$ cd apache-tomcat-7.0.73-src/
~/apache-tomcat-7.0.73-src$ ../apache-ant-1.9.7/bin/ant #用ant編譯听哭,這個過程一定要保證網(wǎng)絡(luò)暢通慢洋,下載的文件保存在base.path=${user.home}/tomcat-build-libs目錄下,該配置在./build.properties.default文件中
~/apache-tomcat-7.0.73-src$ cd output/build/ #結(jié)果保存在output目錄下
~/apache-tomcat-7.0.73-src/output/build$ bin/startup.sh #啟動tomcat
tomcat自身日志為當(dāng)前目錄的logs/catalina.2016-10-20.log陆盘,access log為logs/localhost_access_log.2016-10-20.txt
簡化后的配置文件conf/server.xml
<Server port="8005" shutdown="SHUTDOWN">
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
</Service>
</Server>
上面為默認配置普筹,可以看到有三個端口號,其中8080為 http的監(jiān)聽端口隘马。
3 訪問
部署在ip為172.17.2.201的機器上恃泪,瀏覽器中訪問http://172.17.2.201:8080/可以看到tomcat主頁
關(guān)閉tomcat服務(wù):
~/apache-tomcat-7.0.73-src/output/build$ bin/shutdown.sh
4 如何查看線上tomat使用的是哪個源碼版本外莲?
啟動后氓皱,catalina日志中有類似 “INFO: Starting Servlet Engine: Apache Tomcat/7.0.52”的日志河胎,可知使用的是tomcat 7.0.52。
官網(wǎng)http://tomcat.apache.org/download-70.cgi上點擊Archives幔嗦,可以看到tomcat7的各個版本酿愧。apache-tomcat-7.0.52-src.tar.gz的地址為:
http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.52/src/apache-tomcat-7.0.52-src.tar.gz
5 編譯apache-tomcat-7.0.52
~$ wget http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.52/src/apache-tomcat-7.0.52-src.tar.gz #下載apache-tomcat-7.0.52-src.tar.gz
~$ tar -zxvf apache-tomcat-7.0.52-src.tar.gz
~$ cd apache-tomcat-7.0.52-src
修改build.properties.default里的
base.path=/usr/share/java為base.path=${user.home}/tomcat-build-libs (由于/usr/share/java這個目錄很可能沒有權(quán)限,改為自己的目錄下
base.path=${user.home}/tomcat-build-libs) 然后繼續(xù)
~/apache-tomcat-7.0.52-src$ ../apache-ant-1.9.7/bin/ant #網(wǎng)絡(luò)要暢通