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
运行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))
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
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" />
Tips:在Tomcat的conf目录的server.xml配置文件!
作者:YinJay
Email:szgetshell@163.com