Jenkins+GitLab+Nexus构建Spring-Boot项目到远程Linux服务器
安装Tomcat
-
上传apache-tomcat-8.5.53.tar.gz到安装tomcat的服务器上解压
tar -zxvf apache-tomcat-8.5.53.tar.gz
解压到 /usr/local/tomcat/apache-tomcat-8.5.53目录下
-
修改/usr/local/tomcat/apache-tomcat-8.5.53/tomcat-users.xml文件,添加用户和密码
这里我写的是root,这个用户是可以随便写的
<tomcat-users xmlns="http://tomcat.apache.org/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd" version="1.0"> <role rolename="tomcat"/> <role rolename="role1"/> <role rolename="manager-script"/> <role rolename="manager-gui"/> <role rolename="manager-status"/> <role rolename="admin-gui"/> <role rolename="admin-script"/> <user username="root" password="123456" roles="manager-gui,manager-script,tomcat,admin-gui,admin-script"/> </tomcat-users>
-
修改/usr/local/tomcat/apache-tomcat-8.5.53/server.xml文件,添加项目
这里是可以添加多个的
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> <Context docBase="admin-service" path="/admin-service" reloadable="true"/> <Context docBase="user-login" path="/user-login" reloadable="true"/> </Host>
-
在Tomcat conf/Catalina/localhost目录下创建一个manager.xml文件,允许远程访问manager站点:(踩坑提示:此步骤是Tomcat 8.5中特有的,如果不配置的话总是遇到异常:Server returned HTTP response code: 403 for URL: http://test.mest.my:8080//manager/text/list)
vim manager.xml
<Context privileged="true" antiResourceLocking="false"> <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" /> </Context>
配置Jenkins服务器的环境变量
- 配置jdk,上传linux版本的jdk压缩包解压到该目录
- 配置git
如果执行该命令不显示git执行文件路径,那么就在线安装git
apt install git
-
配置mavan,上传linux版本的mavan解压到该目录
maven的settings.xml配置文件使用nexus的私服配置
-
配置JDK和MAVEN环境变量
vim /etc/profile # 在文件末尾添加如下内容,保存 export JAVA_HOME=/usr/local/java/jdk1.8.0_231 export MAVEN_HOME=/usr/local/maven export JRE_HOME=/usr/local/java/jdk1.8.0_231/jre export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$MAVEN_HOME/bin:$PATH:$HOME/bin
-
刷新环境变量,让修改后的文件生效
source /etc/profile
Jenkins中下载需要的插件
- 安装maven插件
-
安装
Deploy to container Plugin
该插件主要运用在Java项目中,功能是“将成功编译的War/Jar包部署到远程的应用服务器上
Jenkins全局工具配置
Jenkins中配置JDK
Jenkins中配置Git
Jenkins中配置Maven
Jenkins中构建Maven工程
创建一个maven项目
连接git仓库
用户和密码是gitlab中的用户名和密码
Maven构建命令
clean install -Dmaven.test.skip=true
构建后操作发送到远端tomcat服务器中
此处的用户名和密码和远程tomcat中的tomcat-users.xml的用户和密码对应
查看构建日志和访问tomcat
Jenkins构建Spring-Boot项目的jar包部署到远程服务器上
安装Publish Over SSH插件
系统配置
具体项目构建设置
-
在远端服务器tomcat上创建文件目录
mkdir -p /usr/local/spring-boot/admin-service/admin-service-jar
cd /usr/local/spring-boot/admin-service vim start.sh #!/bin/bash #必须要定义一下JAVA_HOME不然下面的java找不到,导致不执行 export JAVA_HOME=/usr/local/java/jdk1.8.0_231 echo ${JAVA_HOME} chmod 777 /usr/local/spring-boot/admin-service/admin-service-jar/admin-service-1.0.0-SNAPSHOT.jar echo "执行...." cd /usr/local/spring-boot/admin-service/admin-service-jar nohup ${JAVA_HOME}/bin/java -jar admin-service-1.0.0-SNAPSHOT.jar > /dev/null & echo "启动成功" vim stop.sh #!/bin/bash echo "stop SpringBoot admin-service" pid=`ps -ef | grep admin-service-1.0.0-SNAPSHOT.jar | grep -v grep | awk '{print $2}'` echo "旧应用进程id:$pid" if [ -n "$pid" ] then kill -9 $pid fi
构建访问部署的项目
Jenkins构建Spring-Boot项目的war包部署到远程服务器上无法访问的解决问题
-
在启动类中添加启动配置类
@SpringBootApplication public class ProviderAdminApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(ProviderAdminApplication.class, args); } /** *新增此方法 */ @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { // 注意这里要指向原先用main方法执行的Application启动类 return builder.sources(ProviderAdminApplication .class); } }