返回列表 发帖

CentOS8_Tomcat9+JDK1.9+MySQL/MariaDB

主机信息:
[root@redhat8 ~]# cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)
[root@redhat8 ~]# uname -r
4.18.0-193.el8.x86_64

[root@redhat8 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:15:ba:0c brd ff:ff:ff:ff:ff:ff
    inet 192.168.168.155/24 brd 192.168.168.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::92ab:5fb4:5373:ad53/64 scope link noprefixroute
       valid_lft forever preferred_lft forever



关闭SELinux:
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config



先卸载系统自带的JDK:
dnf -y remove java*

安装JDK:
tar -zxvf jdk-9.0.4.tar.gz
mv -f jdk-9.0.4/ /usr/local/jdk


配置JDK的环境变量:
[root@redhat8 ~]# vi /etc/profile
追加:
JAVA_HOME=/usr/local/jdk
JAVA_BIN=/usr/local/jdk/bin
JRE_HOME=/usr/local/jdk/jre
PATH=$PATH:/usr/local/jdk/bin:/usr/local/jdk/jre/bin
CLASSPATH=/usr/local/jdk/jre/lib:/usr/local/jdk/lib:/usr/local/jdk/jre/lib/charsets.jar


使环境变量生效:
[root@redhat8 ~]# source /etc/profile


测试JDK:
[root@redhat8 ~]# java -version
java version "9.0.4"
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)





## 安装Tomcat
tar -zxvf apache-tomcat-9.0.7.tar.gz -C /usr/local/
mv /usr/local/apache-tomcat-9.0.7/ /usr/local/tomcat


运行Tomcat:
[root@redhat8 ~]# /usr/local/tomcat/bin/startup.sh

关闭Tomcat:
[root@redhat8 ~]# /usr/local/tomcat/bin/shutdown.sh



在系统启动的时候,自动启动Tomcat:
echo 'export JAVA_HOME=/usr/local/jdk' >> /etc/rc.local
echo '/usr/local/tomcat/bin/startup.sh' >> /etc/rc.local

[root@redhat8 ~]# chmod a+x /etc/rc.d/rc.local



插入防火墙规则:( 打开TCP 8080 )
firewall-cmd --zone=public --add-port=8080/tcp --permanent

使规则生效:
firewall-cmd --reload

查看firewalld所有打开的端口:
[root@redhat8 ~]# firewall-cmd --zone=public --list-ports
8080/tcp



######

修改默认首页:
[root@redhat8 ~]# vi /usr/local/tomcat/conf/web.xml
图片1.png
备注:Tomcat默认就支持HTM、HTML网页。



######

默认站点的默认首页文件:
[root@redhat8 ~]# find / -name "index.jsp"
/usr/local/tomcat/webapps/ROOT/index.jsp
/usr/local/tomcat/webapps/examples/jsp/async/index.jsp
/usr/local/tomcat/webapps/examples/jsp/security/protected/index.jsp
/usr/local/tomcat/webapps/host-manager/index.jsp
/usr/local/tomcat/webapps/manager/index.jsp


运行Tomcat后,Windows客户端远程测试:
http://192.168.168.155:8080
图片2.png



######

Tomcat设置UTF8编码:
[root@redhat8 ~]# vi /usr/local/tomcat/conf/server.xml
图片3.png
修改为:( URIEncoding="utf-8"
图片4.png


重启Tomcat:
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh



在默认站点的根目录下创建测试页:
[root@redhat8 ~]# vi /usr/local/tomcat/webapps/ROOT/888.jsp
写入:
<%@ page import="java.util.*"%>
<%@ page import="java.sql.*"%>
<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
<title>中文测试页</title>
</head>
<body>
    <center>Welcome,你好</center>
    <img alt="" src="img/1.png">  #加载默认站点子目录里的图片
</body>
</html>

被加载的图片要存在:
图片5.png


Window客户端远程访问的效果:
http://192.168.168.155:8080/888.jsp
图片6.png





############
############

默认情况下,JSP网页是不能连接MySQL/MariaDB数据库的,要做以下配置:
[root@redhat8 ~]# dnf -y install unzip

unzip mysql-connector-java-8.0.15.zip
cd mysql-connector-java-8.0.15
cp mysql-connector-java-8.0.15.jar /usr/local/tomcat/lib/

[root@redhat8 ~]# ll /usr/local/tomcat/lib/mysql-connector-java-*
-rw-r--r--. 1 root root 2134905 4月  30 09:31 /usr/local/tomcat/lib/mysql-connector-java-8.0.15.jar

笺注:mysql-connector-java-8.0.15.jar可以连接MySQL5.5、MySQL5.6、MySQL8.0、MariaDB10.3


重启Tomcat:
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh





############
############

连接远程MariaDB的测试代码:

[root@redhat8 ~]# vi /usr/local/tomcat/webapps/ROOT/mm.jsp
写入:
<pre class="html" name="code"><%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>   
<%@ page import="java.sql.*"%>   
<%@ page contentType="text/html; charset=UTF-8" %>   
<html>   
<head>   
<title>远程MariaDB连接测试</title>   
</head>   
<body>   
<%   
Connection con = null;   
Statement stmt = null;   
ResultSet rs = null;   
try{   
Class.forName("com.mysql.jdbc.Driver");   
String dbUrl = "jdbc:mysql://192.168.168.154:3306/data1_db?useUnicode=true&characterEncoding=UTF-8";   
String dbUser = "zhuohua";   
String dbPwd = "123";   
con = DriverManager.getConnection(dbUrl,dbUser,dbPwd);   
out.print("远程数据库MariaDB连接正常");  
}catch(Exception ex)   
{   
out.print("远程数据库MariaDB连接失败<br>"+ex.toString());
}
%>   
</body>   
</html>      
</pre>  



############
MariaDB的安装可参考:CentOS8安装LAMP+phpMyAdmin

远程数据库服务器(192.168.168.154)创建测试库、用户:(MariaDB 10.3.17)
MariaDB [(none)]> create database data1_db default charset utf8 collate utf8_general_ci;
Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]> grant all on data1_db.* to zhuohua@'%' identified by '123';
Query OK, 0 rows affected (0.002 sec)


远程数据库服务器,插入防火墙规则:
firewall-cmd --zone=public --add-port=3306/tcp --permanent

使规则生效:
firewall-cmd --reload


Windows客户端远程测试:
http://192.168.168.155:8080/mm.jsp
图片7.png





############
############

连接远程MySQL5.6的测试代码:
[root@redhat8 ~]# vi /usr/local/tomcat/webapps/ROOT/my.jsp
写入:
<pre class="html" name="code"><%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>   
<%@ page import="java.sql.*"%>   
<%@ page contentType="text/html; charset=UTF-8" %>   
<html>   
<head>   
<title>远程MySQL5.6连接测试</title>   
</head>   
<body>   
<%   
Connection con = null;   
Statement stmt = null;   
ResultSet rs = null;   
try{   
Class.forName("com.mysql.jdbc.Driver");   
String dbUrl = "jdbc:mysql://192.168.168.130:3306/data2_db?useUnicode=true&characterEncoding=UTF-8";   
String dbUser = "happy";   
String dbPwd = "666";   
con = DriverManager.getConnection(dbUrl,dbUser,dbPwd);   
out.print("远程MySQL5.6连接正常");  
}catch(Exception ex)   
{   
out.print("远程MySQL5.6连接失败<br>"+ex.toString());
}
%>   
</body>   
</html>      
</pre>  



############
MySQL5.6的安装可参考:LNMP一键安装包(lamp_CentOS6.9)

远程数据库服务器(192.168.168.130)创建测试库、用户:(MySQL5.6)
mysql> create database data2_db default charset utf8 collate utf8_unicode_ci;
Query OK, 1 row affected (0.51 sec)

mysql> grant all on data2_db.* to happy@'%' identified by '666';
Query OK, 0 rows affected, 1 warning (0.40 sec)


远程数据库服务器,插入防火墙规则:
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

保存防火墙规则:
iptables-save > /etc/sysconfig/iptables


Windows客户端远程测试:
http://192.168.168.155:8080/my.jsp
图片8.png













############
############

Linux下,Tomcat9.0.x的内存优化:
[root@redhat8 ~]# vi /usr/local/tomcat/bin/catalina.sh
插入:
JAVA_OPTS='-Xms1024m -Xmx1024m'
图片9.png
注释:
-Xms  JVM初始分配的堆内存(单位MB);
-Xmx  JVM最大允许分配的堆内存(单位MB),假如服务器的内存使用率比较小,这里的值可以调大一些;
建议Xms和Xmx的值设置为一样,可以加快内存回收速度;


重启Tomcat:
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh


查看Xms和Xmx的值是否修改成功:
[root@redhat8 ~]# ps -ef | grep java |grep -v grep
root       10465       1 42 09:57 pts/0    00:00:12 /usr/local/jdk/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms1024m -Xmx1024m -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start





############

Linux下,Tomcat9.0.x的连接数优化:
[root@redhat8 ~]# vi /usr/local/tomcat/conf/server.xml
图片1.png
修改为:
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="1920" minSpareThreads="150"/>

如下图:(要去掉注释符)
图片2.png

注释:
maxThreads  Tomcat最大线程数,即可以同时处理的最大任务数;
minSpareThreads  Tomcat初始化时创建的线程数;

假如服务器的CPU使用率、内存使用率比较小,要加大并发连接数时,可以适当调大maxThreads、minSpareThreads的值。


重启Tomcat:
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh














######################

以防关闭系统时卡死,最好先杀死java进程,再关闭、重启服务器

[root@redhat8 ~]# ps -ef | grep java |grep -v grep
root       10556       1 28 10:00 pts/0    00:00:09 /usr/local/jdk/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms1024m -Xmx1024m -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
[root@redhat8 ~]#
[root@redhat8 ~]# echo $?
0

[root@redhat8 ~]# dnf -y install psmisc
[root@redhat8 ~]
[root@redhat8 ~]# killall -9 java

[root@redhat8 ~]# ps -ef | grep java |grep -v grep
[root@redhat8 ~]#
[root@redhat8 ~]# echo $?
1
注释:返回值为0时,才代表在运行。


重启服务器:
[root@redhat8 ~]# which reboot
/usr/sbin/reboot
[root@redhat8 ~]# reboot





相关文章:
CentOS8_Tomcat8+JDK1.8+MySQL
Windows2012R2_Tomcat+JDK+MySQL

返回列表