May 01, 2018

jdk+tomcat+mysql套餐式部署

本章介绍如何在linux服务器上快速部署jdk,tomct和mysql。

现在对高级java开发的标准都要求对tomcat、mysql、weblogic的部署和调优有一定的经验,于是笔者利用周末时间自己在服务器上进行了部署和相应的调优测试。但在实际工作环境中,很复杂的去调优tomcat基本不会遇到 ,因为大型互联网公司都有专门的部署团队出方案。

配置

CentOS Linux release 7.4.1708 (Core)
jdk-7u80-linux-x64
apache-tomcat-7.0.85

可能用到的linux命令:

                  
uname -a      //显示系统版本信息
top      //显示系统进程
kill pid      //杀死进程
ls -a      //显示所有文件
ls -r      //显示文件(带参数)
ls -l      //显示文件(带详细参数)
mkdir filename      //新建文件夹
cp -a /root/aaa /root/bbb      //复制文件夹
mv /root/aaa/1.txt /root/bbb/1.txt      //移动文件
mv /root/aaa /root/bbb/      //移动文件夹
rm /root/aaa/1.txt      //删除文件
rm -rf /root/aaa      //删除文件夹
                  
                

1.在usr目录下建立java目录

                  
mkdir java
cd /usr/java
                  
                

2.上传jdk到java目录并解压

                  
tar zxvf jdk-7u80-linux-x64.gz
                  
                

3.配置环境变量

                  
vim /etc/profile
                  
                

3-1.打开profile配置文件后按i进入insert状态

3-2.然后添加如下内容:JAVA_HOME根据实际目录来

                  
JAVA_HOME=/usr/java/jdk1.7
JRE_HOME=/usr/java/jdk1.7/jre
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export PATH JAVA_HOME CLASSPATH
export JAVA_HOME JRE_HOME CLASS_PATH PATH
                  
                

3-3.编辑好之后,按esc键退出insert状态,输入":wq",然后按回车键保存并退出(输入":"q!",然后按回车键不保存退出)

4.激活配置

                  
source /etc/profile
                  
                

5.查看安装情况

                  
java -version

//会有以下信息
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) Client VM (build 25.60-b23, mixed mode)
                  
                

6.在usr目录下建立tomcat目录

                  
mkdir tomcat
cd /usr/tomcat
                  
                

7.上传tomcat到服务器并解压

                  
tar zxvf apache-tomcat-7.0.85.tar.gz
                  
                

8.进入tomcat服务器的bin目录,然后执行"./startup.sh"命令启动Tomcat服务器(使用"./shutdown.sh"关闭tomcat),如下图所示:

9.进入tomcat服务器下的logs目录,打开catalina.out文件进行查看启动信息

                  
cat catalina.out
                  
                

10.将必要的jar包放到tomcat/lib目录下,如:mysql-connector-java-5.1.30.jar

在一个tomcat下部署多个webapp的时候,如果每个webapp都使用各自的连接池,那么mysql的连接数资源会紧张,我们可以通过配置jndi解决这个问题。

1.修改tomcat的context.xml,在<context"节点下添加

                  
<Resource name="jndi/qyswfx" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://xx.xx.xx.xxx:3306/qyswfx" username="db_qyswfx" password="666666" initialSize="10" maxActive="20" maxIdle="18" maxWait="60000"/>
                  
                

2.修改webapp的web.xml,在<web-app"节点下添加

                  
<resource-ref>
	<res-ref-name>qyswfx</res-ref-name>
	<res-type>javax.sql.DataSource</res-type>
	<res-auth>Container</res-auth>
</resource-ref>
                  
                

3.如果你的应用使用spring框架,那么在org.springframework.web.context.ContextLoaderListener监听的配置文件中(通常为applicationContext.xml),数据源这样配置

                  
<bean id="dataSource"
	class="org.springframework.jndi.JndiObjectFactoryBean">
	<property name="jndiName" value="java:comp/env/jndi/qyswfx" />
</bean> 
                  
                

11.部署webapp到tomcat/webapps目录,启动后访问webapp效果如下:

12.1. 增加tomcat启动内存,修改catalina.sh,设置 java_OPTS 参数:

                  
JAVA_OPTS='-Xms1024m -Xmx2048m -XX: PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m'
                  
                

JAVA_OPTS参数说明   
-server 启用jdk 的 server 版;   
-Xms java虚拟机初始化时的最小内存;   
-Xmx java虚拟机可使用的最大内存;   
-XX: PermSize 内存永久保留区域   
-XX:MaxPermSize 内存最大永久保留区域

12.2. tomcat并发优化,修改server.xml中的connector配置,调整连接器connector的并发处理能力:

                  
<Connector port="9027"
  protocol="HTTP/1.1"
  maxHttpHeaderSize="8192"
  maxThreads="1000"
  minSpareThreads="100"
  maxSpareThreads="1000"
  minProcessors="100"
  maxProcessors="1000"
  enableLookups="false"
  URIEncoding="utf-8"
  acceptCount="1000"
  redirectPort="8443"
  disableUploadTimeout="true"/>
                  
                

connector参数说明   
maxThreads 客户请求最大线程数   
minSpareThreads Tomcat初始化时创建的 socket 线程数   
maxSpareThreads Tomcat连接器的最大空闲 socket 线程数   
enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名   
redirectPort 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口   
acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads )   
connectionTimeout 连接超时   
minProcessors 服务器创建时的最小处理线程数   
maxProcessors 服务器同时最大处理线程数   
URIEncoding URL统一编码