tomcat专题

tomcat是属于apache基金会下的一个免费开源的web应用服务器,属于轻量级应用
服务器。

注意:         
java项目包      .war  需要tomcat+jdk   .jar   需要jdk
tomcat运行需要借助jdk,.war包运行需要tomcat
JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和
JAVA工具。

tomcat的三个端口:
    tomcat自身服务的端口:8005 
    tomcat和其他应用通信的端口:8009  
    tomcat给客户端浏览器访问页面使用的端口:8080**
知识点汇总:
1,tomcat安装 

2,tomcat+jdk来运行项目  toncat配置文件 

3,tomcat多实例  实现tomcat负载均衡 

4,tomcat实现https 借助nginx 访问日志 gc日志如何使用
一,tomcat部署
bin     #存放tomcat的管理脚本(二进制文件)

conf    #tomcat的配置文件(主配置文件server.xml)

logs     #tomcat日志存放目录

webapps  #默认网站发布目录   ROOT    #默认站点根目录

tomcat/bin/startup.sh  #启动程序

tomcat/bin/shutdown.sh  #关闭程序

解决Tomcat启动慢的方法:

yum install rng-tools # 安装rngd服务(熵服务,增大熵池)
systemctl start rngd  # 启动服务
拓展学习ftp文件上传:
1,yum -y install vsftpd && systemctl start vsftpd && mkdir  /var/ftp/share  && chmod 777 /var/ftp/share/ -R
2,vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES            打开文件上传
anon_mkdir_write_enable=YES   打开下载的功能
3,systemcctl restart vsftpd
4,ftp://192.168.222.131 在windows上的share文件中就可以进行上传下载文件
1,安装JDK和tomcat
[root@192 ~]# tar xf jdk-8u91-linux-x64.tar.gz -C /usr/local/

[root@192 ~]# tar xf apache-tomcat-7.0.34.tar.gz -C /usr/local/ 

用软连接和mv改名都可以的:

[root@192 ~]# ln -s /usr/local/jdk1.8.0_91 /usr/local/java      

[root@192 ~]# ln -s /usr/local/apache-tomcat-7.0.34 /usr/local/tomcat
2,设置环境变量
[root@192 ~]# vim /etc/profile
JAVA_HOME=/usr/local/java
TOMCAT_HOME=/usr/local/tomcat
PATH=$JAVA_HOME/bin:$PATH
PATH=$TOMCAT_HOME/bin:PAHT
export JAVA_HOME  TOMCAT_HOME PATH 

[root@192 ~]# source /etc/profile   让环境变量生效
[root@192 ~]# java -version    查看安装好的jdk版本
3,启动或者关闭tomcat
[root@192 ~]# /usr/local/tomcat/bin/startup.sh

或者/usr/local/tomcat/bin/catalina.sh start

[root@192 ~]# /usr/local/tomcat/bin/shutdown.sh

或者/usr/local/tomcat/bin/catalina.sh stop
4,8009通信的端口没启动解决方案
[root@192 ~]# vim /usr/local/tomcat/conf/server.xml

去掉8009端口配置的注释,然后又关闭服务,再启动服务,查看端口
5,测试tomcat的web界面
http:192.168.222.131:8080
6,安装mysql数据库
[root@192 ~]# yum -y install mariadb mariadb-server 
#直接下载mariadb服务

[root@192 ~]#systemctl start mariadb    #启动数据库

[root@192 ~]#mysqladmin -uroot  password  'Qianfeng@123'  
#mariadb数据库没有初始化密码,可以直接设置新的密码

[root@192 ~]#mysql -uroot -pQianfeng@123   
#使用设置好的密码登录数据库

[root@192 ~]#creat database jspgou default=utf8;   
#创建一个jspgou的库名并指定默认的字符集utf8
7,jspgou产品上线
[root@192 ~]#yum -y install unzip    下载解压软件

[root@192 ~]#unzip jspgouV6-ROOT.zip    解压软件

[root@192 ~]#cp -r  ROOT  /usr/local/tomcat/webapps/   
#替换网站的目录为商城目录

更改数据库相关配置:
[root@192 ~]#
vim /usr/local/tomcat/webapps/ROOT/WEB-INF/config/jdbc.properties   

jdbc.url=jdbc:mysql://127.0.0.1:3306/创建好的数据库名
?characterEncoding=UTF-8
jdbc.username=root
jdbc.password=Qianfeng@123

[root@192 ~]#mysql -uroot -pQianfeng@123  jspgou < ./DB/jspgou.sql   
#导入数据,注意.sql结尾的文件,导数据用的
注意jspgou商城系统管理后台登录:
http://localhost:8080/jeeadmin/jspgou/index.do
用户名:admin
密  码:123456
拓展:编辑一个tomcat启动的脚本,方便服务启动和关闭

[root@192 ~]#vim tomcat

#!/bin/bash

/usr/local/tomcat/bin/catalina.sh  $1

[root@192 ~]#chmod a+x tomcat

[root@192 ~]#mv tomcat /usr/bin

[root@192 ~]#tomcat start 启动

[root@192 ~]#tomcat stop 关闭
mysql数据库导入数据报错后的解决方案:两行内容
[root@jspgou DB]# vim /etc/my.cnf
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUB  
explicit_defaults_for_timestamp=1
修改完配置文件后重新启动服务后在导入数据库

二,tomcat多实例部署

多实例:一台机器多个实例(类似虚拟主机),共用一个网站目录,需要改变的是8080端口和8005端口,8009通信端口直接注释或者删除。

1,在一个工作目录下创建多个实例目录
[root@192 ~]#mkdir -p /usr/local/tomcat/tomcat1/{conf,logs,temp,woek} 
  #(客户端访问的端口改为8081,服务器自身的端口改为8091) 

[root@192 ~]#mkdir -p /usr/local/tomcat/tomcat2/{conf,logs,temp,woek}
  #(客户端访问的端口改为8082,服务器自身的端口改为8092) 

[root@192 ~]#mkdir -p /usr/local/tomcat/tomcat3/{conf,logs,temp,woek}  
#(客户端访问的端口改为8083,服务器自身的端口改为8093) 
2,拷贝网站的发布目录/usr/local/tomcat/webapps到根下
[root@192 ~]#cp  -r  /usr/local/tomcat/webapps   /
3,修改tomcat的配置文件
[root@192 ~]#vim /usr/local/tomcat/instance1/conf/server.xml
<Server port="8091" shutdown="SHUTDOWN">  //修改8005
<Connector port=**"8081"** protocol="HTTP/1.1"   //修改8080
               connectionTimeout="20000"
               redirectPort="8443" />
                注释或者删除8009的配置
<Host name="localhost"  appBase="/webapps"   //修改网站基准目录
            unpackWARs="true" autoDeploy="true">
......

三个实例每个都要做...
4,三个实例目录下依次创建tomcat多实例启动的脚本
[root@192 ~]#vim  /usr/local/tomcat/tomcat1/1.sh
#!/bin/bash
. /etc/init.d/functions
export CATALINA_BASE="/usr/local/tomcat/tomcat1"
export CATALINA_HOME="/usr/local/tomcat"
case $1 in
start)
        $CATALINA_HOME/bin/startup.sh
        ;;
stop)
        $CATALINA_HOME/bin/shutdown.sh
        ;;
restart)
        $CATALINA_HOME/bin/shutdown.sh
        sleep 5
        $CATALINA_HOME/bin/startup.sh
        ;;
esac

三个工作目录都要写入这个脚本!!!
5,三个实例依次启动
[root@192 ~]#/usr/local/tomcat/instance1/1.sh start  

[root@192 ~]#ss  -lntp |grep 80   下面是三个实例启动后的端口
LISTEN  0  100  :::8081                :::*  users:(("java",pid=7288,fd=48))
LISTEN  0  100  :::8082                :::*  users:(("java",pid=7468,fd=48))
LISTEN  0  100  :::8083                :::*  users:(("java",pid=7496,fd=48))
LISTEN  0  1    ::ffff:127.0.0.1:8091  :::*  users:(("java",pid=7288,fd=61))
LISTEN  0  1    ::ffff:127.0.0.1:8092  :::*  users:(("java",pid=7468,fd=61))
LISTEN  0  1    ::ffff:127.0.0.1:8093  :::*  users:(("java",pid=7496,fd=61))
6,界面网址测试
192.168.222.131:8081

192.168.222.131:8082

192.168.222.131:8083
三,nginx为tomcat做负载均衡(新机子)
[root@192 ~]#yum -y install nginx 
[root@192 ~]#systemctl start nginx

[root@192 ~]#vim /etc/nginx/conf/nginx.conf  (主配值文件修改)
http {
    upstream tomcat_pool {
        #ip_hash;  这个是将某一个客户端的请求固定到某一个服务器来响应                  
        server 192.168.122.105:8080 weight=1 max_fails=2 fail_timeout=2;
        server 192.168.122.105:8081 weight=1 max_fails=2 fail_timeout=2;
        server 192.168.122.105:8082 weight=1 max_fails=2 fail_timeout=2;
        server 192.168.122.105:8083 weight=1 max_fails=2 fail_timeout=2;
    }
这个负载均衡池要写在http{}模块里面!!!
[root@192 ~]#vim  /etc/nginx/conf.d/proxy.conf (子配置文件添加)
server {
		listen 80;
		server_name  localhost;
		location / {
			proxy_pass http://tomcat_pool;
	}
}

网页测试:192.168.222.132

四,tomcat的https安全访问部署
部署tomcat服务,项目做到用https访问,使用nginx去做,访问任意一个子网站,都是https。
先有自己申请的域名,然后才能申请ssl证书:阿里云/华为云的证书,CA机构自己颁发

在公司中动态资源和静态资源都是分开:
nginx  运行静态界面   rewrite .* https://www.xingdiancloud.com
tomcat+jdk 运行动态界面
jspgou 的项目是 静态和动态在一起  8080
该项目部署架构:tomcat多实例+jdk mariadb(数据库单独部署) nginx负载均衡代
理单独部署
自己总结
 tomcat多实例http跳转https
 1,上传ssl的证书(nginx)
 例如:scs1650456753622_chenshuangyin.top_server.crt
          scs1650456753622_chenshuangyin.top_server.key
          
 2,主配置文件负载均衡配置:        
 vim /nginx.conf
 http {
 #access_log  logs/access.log  main;
 upstream tomcat {
        server 124.71.72.167:8081;
        server 124.71.72.167:8182;
        server 124.71.72.167:8183;
        }
 }
 3,子配置文件代理配置:
 vim /conf.d/tomcat.conf
 server {
        listen 80;
        server_name www.chenshuangyin.top;
        location / {
          return 301 https://www.chenshuangyin.top$request_uri;
        }
}
server {
        listen       443 ssl;
        server_name  www.chenshuangyin.top;

       ssl_certificate      /etc/nginx/scs1650456753622_chenshuangyin.top_server.crt;
       ssl_certificate_key  /etc/nginx/scs1650456753622_chenshuangyin.top_server.key;
       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;

       ssl_ciphers  HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers  on;

       location / {
           proxy_pass http://tomcat;
       }
}

《ssl证书的配置nginx.conf.default里面有,负载均衡和ssl证书都可以在
nginx.conf.default这里面进行修改配置》

更多推荐