前些时候困惑于一个tomcat服务的性能问题,查明原因后想试着改改tomcat源码,然后再编译、发布。现将自己编译的过程整理成文。
1 安装ant
官网下载最新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,生产环境使用tomcat7。
官网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 #官网获取的下载地址
~$ 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编译,这个过程一定要保证网络畅通,下载的文件保存在base.path=${user.home}/tomcat-build-libs目录下,该配置在./build.properties.default文件中
~/apache-tomcat-7.0.73-src$ cd output/build/ #结果保存在output目录下
~/apache-tomcat-7.0.73-src/output/build$ bin/startup.sh #启动tomcat
tomcat自身日志为当前目录的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的监听端口。
3 访问
部署在ip为172.17.2.201的机器上,浏览器中访问http://172.17.2.201:8080/可以看到tomcat主页
关闭tomcat服务:
~/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。
官网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这个目录很可能没有权限,改为自己的目录下
base.path=${user.home}/tomcat-build-libs) 然后继续
~/apache-tomcat-7.0.52-src$ ../apache-ant-1.9.7/bin/ant #网络要畅通