1.Java项目部署基本概述:
1.什么是Java项目?
2.为什么Java项目需要使用Maven编译?
3.手动实现Java项目构建?
4.手动实现Java项目架构图?
源码包 jar包 war包
1.JAVA源码包--编译--> war --编译的过程中需要依赖--> jar包
2.JAVA源码包也可以编译生成 jar包 (需要被依赖才会启用 -->不能独立运行)
3.有的jar可以独立运行 java -jar xx.jar
手动部署Java项目至Web集群:
1.搭建Nginx+Tomcat集群架构?
1.负载均衡配置如下:
[root@lb01 ~]# cat /etc/nginx/conf.d/proxy_java.oldxx.com.conf
upstream java { server 172.16.1.7:80; server 172.16.1.9:80; } server { listen 80; server_name java.oldxx.com; location / { proxy_pass http://java; proxy_set_header Host $http_host; } }
2.web节点配置如下:
0.安装JDK
1.安装nginx
2.安装tomcat
3.配置nginx+tomcat环境:
[root@web01 /soft]# yum install java -y
[root@web01 /soft]# mkdir /soft && cd /soft
[root@web01 /soft]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.27/bin/apache-tomcat-9.0.27.tar.gz
[root@web01 /soft]# tar xf apache-tomcat-9.0.27.tar.gz
[root@web01 /soft]# ln -s /soft/apache-tomcat-9.0.27 /soft/tomcat
[root@web01 /soft]# /soft/tomcat/bin/startup.sh
[root@web01 ~]# cat /etc/nginx/conf.d/java.oldxx.com.conf
server { listen 80; server_name java.oldxx.com; location / { proxy_pass http://127.0.0.1:8080; } }
2.开发提交Java源代码至gitlab仓库?
1.本地windows编写java代码
2.准备gitlab一个仓库
3.本地windows推送代码
3.手动获取Java源代码,然后使用maven进行编译?
1.git clone 获取代码
2.使用maven进行编译
yum install java maven -y
mvn clean package -Dmaven.test.skip=true
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
4.将编译后的war包部署至Tomcat集群?
for i in 7 9 ;do scp target/hello-world-war-1.0.0.war root@172.16.1.$i:/soft/tomcat/webapps/ROOT.war;done
for i in 7 9 ;do ssh root@172.16.1.$i "pkill java && /soft/tomcat/bin/startup.sh";done
5.最后通过浏览器访问测试,检测项目是否部署OK?
.自动部署Java项目至Web集群?
-------------------------------------------------------
1.Jenkins安装Maven插件,使其支持Maven项目创建?
2.Jenkins配置JDK路径以及Maven路径。
3.Jenkins创建Maven项目,然后进行构建。
4.编写自动上线脚本推送至web集群,最后通过浏览器访问?
5.优化部署脚本,使其支持上线与回滚功能?
6.项目相同版本可以重复构建,如何处理该问题?
java上线脚本参考:
#!/usr/bin/bash # func: deploy auto html WEB_SERVER="172.16.1.8 172.16.1.9" WEB_DIR="/soft/tomcat/webapps" DATE=$(date +%F-%H-%M) #1.打包代码 tar_code() { cd ${WORKSPACE} } #2.推送代码 scp_push_code() { for host in $WEB_SERVER do scp target/*.war root@$host:/opt/ROOT-${DATE}-${git_version}.war ssh root@$host "cd /opt/ && mkdir ROOT-${DATE}-${git_version} && \ unzip ROOT-${DATE}-${git_version}.war -d ROOT-${DATE}-${git_version} && \ rm -rf $WEB_DIR/ROOT && \ ln -s /opt/ROOT-${DATE}-${git_version} $WEB_DIR/ROOT && \ pkill java && /soft/tomcat/bin/startup.sh" done } #3.调用 deploy () { tar_code scp_push_code } deploy
#!/usr/bin/bash # func: deploy auto html WEB_SERVER="172.16.1.8 172.16.1.9" WEB_DIR="/soft/tomcat/webapps" DATE=$(date +%F-%H-%M) #1.打包代码 tar_code() { cd ${WORKSPACE} } #2.推送代码 scp_push_code() { for host in $WEB_SERVER do scp target/*.war root@$host:/opt/ROOT-${DATE}-${git_version}.war ssh root@$host "cd /opt/ && mkdir ROOT-${DATE}-${git_version} && \ unzip ROOT-${DATE}-${git_version}.war -d ROOT-${DATE}-${git_version} && \ rm -rf $WEB_DIR/ROOT && \ ln -s /opt/ROOT-${DATE}-${git_version} $WEB_DIR/ROOT && \ pkill java && /soft/tomcat/bin/startup.sh" done } #3.调用 deploy () { tar_code scp_push_code } deploy