Loading

Maven构建编译打包、Tomcat安全优化、性能优化(四)

18. Maven代码编译

18.1 基本流程

大致流程:开发人员 ---> 代码仓库 ---> 拉取代码 ---> 代码通过maven进行编译 ---> maven根据代码配置pom.xml下载代码的依赖jar包 ---> 生成war包或jar包


18.2 配置maven环境

下载maven

[root@web01 ~]# cd /server/soft/
[root@web01 soft]# wget https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

解压、建立软链接并检查可用

#解压
[root@web01 soft]# tar xf apache-maven-3.6.3-bin.tar.gz

#复制到其他目录
[root@web01 soft]# cp -r apache-maven-3.6.3 /app/tools/

#建立软链接
[root@web01 soft]# ln -s /app/tools/apache-maven-3.6.3/ /app/tools/maven

#通过输出版本信息检查可用
[root@web01 soft]# /app/tools/maven/bin/mvn --version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /app/tools/maven
Java version: 1.8.0_60, vendor: Oracle Corporation, runtime: /app/tools/jdk1.8.0_60/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"

Tips:Maven前提也是需要依赖JDK!


配置maven环境,修改PATH环境变量。

#配置环境变量
[root@web01 ~]# echo 'export PATH=/app/tools/maven/bin/:$PATH' >> /etc/profile
[root@web01 ~]# source /etc/profile

#检查环境变量生效
[root@web01 ~]# mvn --version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /app/tools/maven
Java version: 1.8.0_60, vendor: Oracle Corporation, runtime: /app/tools/jdk1.8.0_60/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"

18.3 配置maven依赖下载源

在配置文件中找到下列内容,将不同的地方进行替换即可。

[root@web01 ~]# vim /app/tools/maven/conf/settings.xml
  <mirrors>
    <mirror>
      <id>aliyun maven</id>
      <mirrorOf>*</mirrorOf>
      <name>aliyun的maven公共仓库</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
  </mirrors>

18.4 使用maven编译代码

18.4.1 编译jar包

下载nginxwebui项目代码

[root@web01 ~]# mkdir -p /app/tools/code
[root@web01 ~]# cd /app/tools/code/
[root@web01 code]# git clone https://gitee.com/cym1102/nginxWebUI.git
[root@web01 code]# ll
total 0
drwxr-xr-x 4 root root 217 Apr  1 03:20 nginxWebUI

修改项目代码的运行端口

[root@web01 code]# head -n 2 nginxWebUI/src/main/resources/app.yml
server:
  port: 9898

进行编译代码

#mvn clean package依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。
[root@web01 code]# cd nginxWebUI
[root@web01 nginxWebUI]# mvn clean package

image-20230401153907489


运行jar包并进行访问测试

[root@web01 nginxWebUI]# java -jar target/nginxWebUI-3.4.8.jar > /dev/null &
[1] 18843
[root@web01 nginxWebUI]# ss -lntup | grep 9898
tcp    LISTEN     0      128    [::]:9898               [::]:*                   users:(("java",pid=18843,fd=24))

image-20230401154056058


18.4.2 编译war包

先安装npm,编译过程中需要用到

[root@web01 ~]# yum install npm -y

下载zrlog项目代码

[root@web01 ~]# cd /app/tools/code/
[root@web01 code]# git clone https://gitee.com/94fzb/zrlog.git

进行编译代码

[root@web01 code]# cd zrlog/
[root@web01 zrlog]# mvn clean package

image-20230401163301853

Tips:maven命令作用解释,点这!


19. Tomcat优化

19.1 安全优化

19.1.1 telnet管理端口保护
  • 修改tomcat shutdown端口
  • 修改shutdown关闭语句
#修改前
<Server port="8080" shutdown="SHUTDOWN">

#修改后
<Server port="8555" shutdown="yinjayshutdown">

Tips:在Tomcat的conf目录的server.xml配置文件!


19.1.2 ajp连接端口保护

ajp是用于tomcat与apache连接的时候接口,端口号是8009。

#从8.5版本开始就已经被注释了
 <!-- Define an AJP 1.3 Connector on port 8009 -->
    <!--
    <Connector protocol="AJP/1.3"
               address="::1"
               port="8009"
               redirectPort="8443" />
    -->

Tips:在Tomcat的conf目录的server.xml配置文件!


19.1.3 降权启动

让服务通过普通用户运行,降低维护服务的权限。正常是需要root权限的,现在仅需普通用户即可。

#添加普通用户
useradd tomcat

#修改systemd配置文件
/usr/lib/systemd/system/tomcat.service  里面的[Service]区块添加 User=tomcat

#重新加载配置文件
systemctl daemon-reload

#修改tomcat目录的所有者
chown -R tomcat.tomcat /app/tools/tomcat/

#修改sudo权限,让普通用户能够运行systemctl命令(默认已经拥有查看服务状态的权限)
visudo命令
tomcat  ALL=(ALL)       NOPASSWD: /bin/systemctl start tomcat,/bin/systemctl restart tomcat,/bin/systemctl stop tomcat

[root@web02 tomcat]# visudo -c #检查配置是否正确
/etc/sudoers: parsed OK

#切换到tomcat用户下,以下命令就可以使用了
sudo systemctl start tomcat
sudo systemctl restart tomcat
sudo systemctl stop tomcat

Tips:tomcat的降权启动容易,因为是直接都在一个目录,且使用端口非特权端口(普通用户可使用的)。nginx降权启动繁琐,因为使用到80和443端口,属于特权端口。目录和文件也都分散在个目录中,不好做降权!


19.1.4 文件列表访问控制

默认已经是关闭

        <init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value>
        </init-param>

Tips:在Tomcat的conf目录的web.xml配置文件!


19.1.5 Server header重写

将经过tomcat处理的数据包,修改响应头的内容。tomcat版本信息伪装成nginx、tengine等等。


19.2 性能优化

19.2.1 禁用DNS逆向解析功能
    <Connector port="8080" protocol="HTTP/1.1"
               enableLookups="false"  #加上这一条
               Server="Tengine"
               connectionTimeout="20000"
               redirectPort="8443" />

Tips:在Tomcat的conf目录的server.xml配置文件!


19.2.2 开启压缩功能

对应静态资源进行压缩,节省带宽。

<Connector port="8080" protocol="HTTP/1.1"
               enableLookups="false"
               Server="Tengine"
               compression="on"
               compressionMinSize="1024"
compressableMimeType="text/html,text/plain,text/css,application/javascript,application/json,application/x-font-ttf,application/x-font-otf"
               connectionTimeout="20000"
               redirectPort="8443" />

image-20230402112942650

Tips:在Tomcat的conf目录的server.xml配置文件!

posted @ 2023-09-17 10:34  YinJayChen  阅读(56)  评论(0编辑  收藏  举报