基于 Jenkins+Git+Maven 构建 Spring Cloud 微服务实战

目录

文章目录

一、项目准备

二、构建一个 maven 项目

三、部署程序运行环境-安装 Linux 系统

四、项目依赖软件安装

五、注册中心 eureka 构建

六、微服务构建



Jenkins 是一个使用 java 开发、开源、免费、强大的 web 式持续集成应用程序;常用于开发者通过 git 等提交代码后自动化地构建、部署、测试程序。

下面我们直接切入正题,开始 Jenkins 的构建之旅

一、项目准备

1、Jenkins 下载并安装

安装包下载地址:https://www.jenkins.io/zh/download/,本次使用的是 Jenkins 2.319.1 LTS 版本,因为我是在 windows 上安装,所以下载时选择了 windows:

下载后,双击”jenkins.msi“进行安装,点击 Next 下一步:

选择安装目录,点击 Next 下一步

Logon Type 选择 Run service as LocalSystem,点击 Next 下一步

填写一个未被占用端口,点击 Test Port 测试端口是否可用,点击下一步:

选择 JDK 安装目录(JDK 请自行安装):

默认,下一步:

点击安装 Install,等待安装完成即可

2、Jenkins 初始化设置和插件安装

安装完成后在浏览器访问:http://localhost:9081/,解锁 Jenkins

按说明,打开对应文件,把密码复制粘贴过来,点击继续

提示离线,我们先点跳过插件安装,进入管理员用户密码设置界面:

填写用户名、密码,点击保存并完成

直接访问 http://localhost:9081/pluginManager/available 安装插件,安装插件报错:

网上找到一个可用的解决办法,通过安装 skip-certificate-check 插件跳过证书检查,下载地址:

https://github.com/zhanghj07409/simple-jenkins/blob/master/plugins/skip-certificate-check.hpi。

访问 http://localhost:9081/pluginManager/advanced,

在 upload plugin 中选择已下载的 skip-certificate-check.hpi,点击 upload。

重启 Jenkins,点击 window 左下角开始,搜索“服务”,打开本地服务找到 Jenkins,鼠标右键,选择重新启动

访问 http://localhost:9081/pluginManager/available,重新安装插件,大部分插件都能安装成功,但还有部分插件安装失败,我们可以有针对性的解决单个插件安装失败的问题。

3、Jenkins 汉化

汉化,在插件管理里,选择 available 标签页,我们先安装以下两个插件 Locale 和 Localization: Chinese (Simplified)

然后打开 Configure System

找到 Locale 的设置里面。

这里我们设置的 zh_US。大家可能会有疑惑为什么是 zh_US,不是 zh_CN。

这个问题我没有深入,但是我设置 zh_CN 汉化还是没有成功,设置 zh_US 反而成功了。

原因不清楚,可能是 bug 或者什么吧。

设置完成后,我们可以到网页地址输入重启请求。

http://localhost:9081/restart

重启后,汉化就比较理想了

二、构建一个 maven 项目

1、全局工具配置

Git软件可以从文末网盘下载

安装 maven 插件

2、构建一个 maven 项目

Git 报错解决:OpenSSL SSL_read: Connection was reset, errno 10054 错误解决

打开 Git 命令页面,执行 git 命令脚本:修改设置,解除 ssl 验证

git config --global http.sslVerify "false"

下面这个错误可以通过“清理工作空间”解决:

清理工作空间:

构建成功:

备注,项目 git 地址:

github:https://github.com/zhanghj07409/simple-flowable.git

gitee:https://gitee.com/zhanghj07409/simple-flowable.git,本文后续均根据该开源项目,进行打包、编译、部署。

三、部署程序运行环境-安装 Linux 系统

1、软件要求:

1)、vagrant_2.2.19_x86_64.msi

2)、VirtualBox-6.1.30-148432-Win.exe

3)、CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box

2、安装 virtualBox

到官网 Downloads – Oracle VM VirtualBox 下载最新版的 Virtualbox,然后双击安装,一直点击确认完成。

3、安装 vagrant

官网 Downloads | Vagrant by HashiCorp 下载最新版的 Vagrant,然后双击安装,一直点击确认完成。

在 windows 下安装 vagrant,为了写入相应配置到环境变量,系统可能会要求重新启动。

安装完成后,在环境变量中 Path 增加 Vagrant 安装 bin 目录,如:“D:\tools\Vagrant\bin”。

在命令行中,输入 vagrant -v 查看 vagrant 版本信息:

4、下载 box 镜像文件

box 是什么?接下来,我们需要选择使用何种操作系统,这里以 centos7 为例。

以前基于虚拟机的工作流,我们需要下载 ISO 镜像,安装系统,设置系统等操作。

而 Vagrant 开源社区提供了许多已经打包好的操作系统,我们称之为 box。你可以从 box 下载地址(下文列出),找到你想要的 box,当然你也可以自己制作一个。

box 下载地址官方镜像:Discover Vagrant Boxes - Vagrant Cloud

5、创建虚拟机文件夹

为了方便管理,我们把虚拟机统一放在一个文件夹下,这里我创建的目录为:E:\vmos,没有特殊要求,可以随意创建。

6、创建虚拟机

添加 box 镜像

命令:

vagrant box add centos7 D:\mygit\software\CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box

命令中最好不要含有中文。

查看当前 box 列表,命令:vagrant box list

初始化 box,命令:vagrant init

初始化 box 的操作,在 vmos 目录会生成 vagrant 的配置文件 Vagrantfile。

7、编辑 Vagrantfile

打开刚刚生成的 Vagrantfile 文件,将内容修改如下:

#指定 vagrant 版本,默认为 2,不用修改
VAGRANTFILE_API_VERSION="2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
#可循环创建几个相同配置的虚拟机
(1..1).each do |i|
#指定虚拟机的 hostname
   config.vm.define vm_name="hbase#{i}" do |config|
       config.vm.provider "virtualbox" do |v|
       #虚拟机的一些配置,如:内存、CPU 等
          v.customize ["modifyvm", :id, "--name", vm_name, "--memory","2048",'--cpus',2]
        end
        #指定所使用的 box 镜像名称
        config.vm.box="centos7"
        config.vm.hostname=vm_name
        #指定要创建的虚拟机用户
        config.ssh.username="vagrant"
        #指定虚拟机的 IP 地址
        config.vm.network :private_network, ip:"192.168.66.1#{i}"
     end
   end
end

8、启动本地环境

上一步完成之后,接下来我们就可以启动创建所需要的虚拟机了。

命令:vagrant up

至此虚拟机已经创建成功了。

9、通过 SecureCRT 连接报错:All available gssapi mechanisms failed。

解决方法:

打开 Oracle VM VirtualBox,登录虚拟机,进入到根目录,打开 sshd_config 文件。

命令:vi /etc/ssh/sshd_config

找到 PasswordAuthentication 属性将 no 改为 yes

然后重启一下:service sshd restart

再使用 CRT 连接就可以连接上虚拟机了。

SecureCRT 可以正常连接登录了:

四、项目依赖软件安装

1、Mariadb 数据库安装

(1)安装

登录 Linux:

执行安装命令:yum install mariadb mariadb-server -y

查看安装版本:mysql -V

安装完成后启动 mariadb:

systemctl start mariadb

systemctl enable mariadb

(2)修改密码和设置远程登录权限

mysql -u root -p

提示输入密码,直接回车,执行下面脚本修改密码:

update mysql.user set password=password('vagrant') where User='root';

执行完成后刷新:

flush privileges;

查看用户信息:

select User, host from mysql.user;

设置远程访问权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'vagrant' WITH GRANT OPTION;

远程访问成功:

(3)修改 mariadb 不区分大小写:

vi /etc/my.cnf

按 i 进入编辑模式,在[mysqld]下新添加一行如下参数:

lower_case_table_names=1

保存编辑,重启 mariadb:

systemctl restart mariadb

2、安装 nginx

(1)依赖插件安装

	1)、安装 gcc-c++编译器
	
	yum install gcc-c++ 
	
	yum install -y openssl openssl-devel
	
	2)、安装 pcre 包
	
	yum install -y pcre pcre-devel
	
	3)、安装 zlib 包
	
	yum install -y zlib zlib-devel

(2)下载 Nginx,nginx-1.16.1.tar.gz:nginx: download

(3)linux 安装上传和下载插件:yum install lrzsz

安装完成后,切换到 opt 目录,并创建文件夹 nginx:

cd /opt

mkdir nginx

切换到 nginx 目录:cd nginx

执行上传命令:rz -y

选择下载的 Nginx 文件,双击,然后点击“OK”按钮

(4)解压和安装 Nginx

1)解压:tar -zxvf nginx-1.16.1.tar.gz

2)切换目录:cd nginx-1.16.1/

3)使用 nginx 默认配置:./configure

4)编译、安装:

make

make install

5)查找安装路径:whereis nginx

6)进入cd /usr/local/nginx/sbin目录,可以看到有一个可执行文件 nginx,直接 ./nginx 执行就 OK 了

7)查看是否启动成功:ps -ef | grep nginx

8)然后在网页上访问虚拟机的 IP 就可以了,默认端口为 80(出现如下欢迎界面就成功了!)

3、安装 redis

(1)下载 redis,redis-6.2.6.tar.gz,下载地址:Redis

也可以通过命令:wget http://download.redis.io/releases/redis-6.2.6.tar.gz 下载,当然需要先安装 wget 插件:yum -y install wget

(2)切换到 opt 目录:cd /opt,创建 redis 文件夹:mkdir redis

切换到 redis 目录:cd redis

执行上传命令:rz -y

选择下载的 redis 文件,双击,然后点击“OK”按钮

(3)解压并移动目录,解压:tar -zxvf redis-6.2.6.tar.gz

一般都会将 redis 目录放置到 /usr/local/redis 目录,移动 redis 目录:mv /opt/redis/redis-6.2.6 /usr/local/redis

(4)切换目录进行编译、安装:

cd /usr/local/redis

make

make PREFIX=/usr/local/redis install

(5)启动 redis

根据上面的操作已经将 redis 安装完成了。在目录/usr/local/redis 输入下面命令启动 redis

./bin/redis-server& ./redis.conf

4、安装 jdk

(1)下载 jdk,jdk-8u311-linux-x64.tar.gz,下载地址:

Java Downloads | Oracle

(2)切换到 local 目录:cd /usr/local

执行上传命令:rz -y

选择下载的 jdk 文件,双击,然后点击“OK”按钮

(3)解压,解压:tar -zxvf jdk-8u311-linux-x64.tar.gz

解压成功后,可删除安装包:rm -f jdk-8u311-linux-x64.tar.gz

(4)配置 jdk 环境变量:vi /etc/profile

按 i 进入编辑,在 profile 文件尾部添加如下内容:

export JAVA_HOME=/usr/local/jdk1.8.0_311
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

保存并退出编辑

通过命令 source /etc/profile 让 profile 文件立即生效

(5)查看安装是否成功:java -version

5、安装 Tomcat

(1)下载 Tomcat,apache-tomcat-8.5.73.tar.gz,

下载地址:Apache Tomcat® - Apache Tomcat 8 Software Downloads

(2)切换到 local 目录:cd /usr/local

执行上传命令:rz -y

选择下载的 jdk 文件,双击,然后点击“OK”按钮

(3)解压,解压:tar -zxvf apache-tomcat-8.5.73.tar.gz

解压成功后,可删除安装包:rm -f apache-tomcat-8.5.73.tar.gz

(4)配置 tomcat 环境变量:vi /etc/profile

按 i 进入编辑,在 profile 文件尾部添加如下内容:

export CATALINA_HOME=/usr/local/apache-tomcat-8.5.73

保存并退出编辑

通过命令 source /etc/profile 让 profile 文件立即生效

(5)启动 tomcat:/usr/local/apache-tomcat-8.5.73/bin/startup.sh

启动成功后,浏览器访问:http://192.168.66.11:8080/

五、注册中心 eureka 构建

1、插件安装

Publish over SSH

2、系统配置-远程 linux 服务器信息配置

配置信息如下:

Remote Directory:

远程 linux 机器路径,用于存放编译打包文件。
如:/mnt/server_temp/simple-flowable(目录需事先在 linux 服务器创建好)

点高级,然后勾选 Use password authentication, or use a different key,输入密码:

点击 Test Configuration 测试连接是否成功:

3、由于构建 maven 项目,配置 SSH Publishers 时,Exec command 中配置的脚本,始终无法执行(尝试了很多办法都不行),因此改成构建流水线项目

4、构建流水线项目

(1)安装插件

a、安装 Git Parameter 插件:点击可选插件,在右上角输入 Git Parameter,找到 Git Parameter 后点击左下方的的直接安装

b、安装 Pipeline 插件:点击可选插件,在右上角输入 Pipeline,找到下面两个插件进行安装

(2)远程服务器创建目录

a、创建目录,存放编译打包文件:/mnt/server_temp/simple-flowable(上一步已创建可忽略)

b、创建目录,存放项目启动文件:/mnt/server/simple-flowable

(3)选择流水线

(4)编写 Pipeline 脚本,下面是 sim-eureka 单项目的部署脚本

重要点注释:

a、parameters,参数设置,choice(name: 'deploy_sit_env' 是设置选项参数,用于选择需要部署的服务器信息;
gitParameter 是 git 参数,配置后可以选择相应的分支进行打包。

该处配置的参数,在保存后,重新打开配置后,会自动生成下面两项:

另外,在任务界面,可以看到原来的“立即构建”按钮变成了“Build with Parameters”,点击,右边出来我们刚才配置的两个选项参数,一个是部署环境,一个是分支。

注意:第一次点击构建的时候 可能会没有 git parameter 选项,先使用的 master 分支,等构建完成之后再点击构建就会出现 git parameter 选项了。测试过新建 branch 也会第一时间更新,只有第一次的时候有点问题。

b、bat """ mvn clean install -Dmaven.test.skip=true -U 由于我 Jenkins 是安装在 Windows 上,所以 maven 命令是 bat,如果安装在 linux 系统,这里"bat"就要改成"sh"

c、transfers 里需要关注下面三个参数:

sourceFiles: 'sim-eureka/target/*.jar':来源文件,指 maven 编译好的文件;

removePrefix: 'sim-eureka/target':删除前缀,指拷贝到远程服务器时,需去除的目录;

remoteDirectory: 'sim-eureka':远程服务器目录,指拷贝到远程服务器的目录,这个目录是基于之前配置的“Remote Directory”目录“/mnt/server_temp/simple-flowable”下创建“sim-eureka”;

这三个参数组合的效果就是将 sim-eureka-1.0.0-SNAPSHOT.jar 转移到远程服务器的 /mnt/server_temp/simple-flowable/sim-eureka 目录下。

d、execCommand:执行脚本

pipeline 
{
    agent any
    tools {
        maven 'apache-maven-3.0.4'
    }
    parameters {
        choice(name: 'deploy_sit_env'
              , choices: ['sit-11']
              , description: 
                        '===========\n 测试部署环境:\n '
                        + 'test-server (192.168.66.11)  \n' 
                        +'===========\n\n\n'
        )
        
		gitParameter name: 'simple_flowable', 
                 type: 'PT_BRANCH',
                 branchFilter: 'origin/(.*)',
                 defaultValue: 'master',
                 selectedValue: 'DEFAULT',
                 sortMode: 'DESCENDING_SMART',
               //  listSize: '50',
                 quickFilterEnabled: true,
		      description: 'Select your branch for simple-flowable.git.'	
    }
        
    stages {
        stage("check out sim-eureka"){
            steps {
                dir("sim-eureka"){
                    script {
                    checkout([$class: 'GitSCM', 
                              branches: [[name: "${params.simple_flowable}"]], 
                              doGenerateSubmoduleConfigurations: false, 
                              extensions: [], 
                              gitTool: 'Default', 
                              submoduleCfg: [], 
                              userRemoteConfigs: [[url: 'https://gitee.com/zhanghj07409/simple-flowable.git']]
                            ])
                    }
                                        
                    bat """
			     echo "[INFO] build simple-flowable start"
                        mvn clean install  -Dmaven.test.skip=true -U  
                        echo "[INFO] build simple-flowable finish"
			     echo "[INFO] deploy simple-flowable start"
                    """
                    
                    sshPublisher(
                        publishers: [
                            sshPublisherDesc(configName: "${params.deploy_sit_env}" ,
                            transfers: [sshTransfer(cleanRemote: false, excludes: '', 
                            execTimeout: 120000, flatten: false, makeEmptyDirs: false, 
                                noDefaultExcludes: false, 
                                patternSeparator: '[, ]+', 
                                sourceFiles: 'sim-eureka/target/*.jar',
                                removePrefix: 'sim-eureka/target', 
                                remoteDirectory: 'sim-eureka', 
                                remoteDirectorySDF: false, 
                            execCommand: '''cd /mnt/server/simple-flowable/sim-eureka
                                rm -rf sim-eureka-1.0.0-SNAPSHOT.jar.back
                                sh stop.sh
                                mv sim-eureka-1.0.0-SNAPSHOT.jar sim-eureka-1.0.0-SNAPSHOT.jar.back
                                mv /mnt/server_temp/simple-flowable/sim-eureka/sim-eureka-1.0.0-SNAPSHOT.jar /mnt/server/simple-flowable/sim-eureka/
                                pwd
                                source /etc/profile
                                nohup sh /mnt/server/simple-flowable/sim-eureka/start.sh & 
                                ''')
                            ], 
                            usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)])
				 echo "[INFO] deploy sim-eureka finish"
                }
            }
        }
    }
}

(5)准备启停脚本 start.sh 和 stop.sh

start.sh 内容如下:

#!/bin/sh
source /etc/profile
var=`find . -name sim-eureka-1.0.0-SNAPSHOT.jar`
fname=${var##*/}
nohup java -jar -Xms256M -Xmx256M -Xmn64M  ${fname}  >>nohup.out 2>&1& echo $! > service.pid

stop.sh 内容如下:

#!/bin/sh
pid=$(cat service.pid)
kill -9 $pid
rm -rf service.pid

(6)构建成功后,可浏览器访问 eureka:

访问 eureka:http://192.168.66.11:8081/ 用户名/密码:admin/admin

六、微服务构建

1、数据库导入

a、由于程序中数据库连接我使用的是 flowable 用户,为了方便,先创建该用户:

create user`flowable`@`*` identified by'flowable';
grant all privileges on *.* to 'flowable'@'%' identified by 'flowable';
flush privileges;

b、创建数据库 flowable

c、下载基础库 flowable:

simple-flowable: flowable工作流引擎企业应用 - Gitee.com

d、在 mysql 客户端 Navicat,基于 flowable 数据库新建查询,复制脚本执行:

执行成功后一共 68 个表:

2、远程服务器创建目录,上传启停脚本

在 /mnt/server/simple-flowable/ 目录下创建 sim-basic、sim-flowable-modeler、sim-gateway、sim-flowable-web 目录(sim-eureka 之前已创建):

选择对应启停脚本上传:

3、sim-basic 服务构建

在之前 eureka 的 pipeline 脚本基础上追加如下内容:

sshTransfer(cleanRemote: false, excludes: '', 
        execTimeout: 120000, flatten: false, makeEmptyDirs: false, 
            noDefaultExcludes: false, 
            patternSeparator: '[, ]+', 
            sourceFiles: 'sim-basic/target/*.jar',
            removePrefix: 'sim-basic/target', 
            remoteDirectory: 'sim-basic', 
            remoteDirectorySDF: false, 
        execCommand: '''cd /mnt/server/simple-flowable/sim-basic
            rm -rf sim-basic-1.0.0-SNAPSHOT.jar.back
            sh stop.sh
            mv sim-basic-1.0.0-SNAPSHOT.jar sim-basic-1.0.0-SNAPSHOT.jar.back
            mv /mnt/server_temp/simple-flowable/sim-basic/sim-basic-1.0.0-SNAPSHOT.jar /mnt/server/simple-flowable/sim-basic/
            pwd
            source /etc/profile
            nohup sh /mnt/server/simple-flowable/sim-basic/start.sh & 
            ''')

4、sim-flowable-modeler、sim-gateway、sim-flowable-web 服务构建

在之前的 pipeline 脚本基础上追加如下内容:

sshTransfer(cleanRemote: false, excludes: '', 
        execTimeout: 120000, flatten: false, makeEmptyDirs: false, 
            noDefaultExcludes: false, 
            patternSeparator: '[, ]+', 
            sourceFiles: 'sim-flowable-modeler/target/*.jar',
            removePrefix: 'sim-flowable-modeler/target', 
            remoteDirectory: 'sim-flowable-modeler', 
            remoteDirectorySDF: false, 
        execCommand: '''cd /mnt/server/simple-flowable/sim-flowable-modeler
            rm -rf sim-flowable-modeler-1.0.0-SNAPSHOT.jar.back
            sh stop.sh
            mv sim-flowable-modeler-1.0.0-SNAPSHOT.jar sim-flowable-modeler-1.0.0-SNAPSHOT.jar.back
            mv /mnt/server_temp/simple-flowable/sim-flowable-modeler/sim-flowable-modeler-1.0.0-SNAPSHOT.jar /mnt/server/simple-flowable/sim-flowable-modeler/
            pwd
            source /etc/profile
            nohup sh /mnt/server/simple-flowable/sim-flowable-modeler/start.sh & 
            '''),
sshTransfer(cleanRemote: false, excludes: '', 
        execTimeout: 120000, flatten: false, makeEmptyDirs: false, 
            noDefaultExcludes: false, 
            patternSeparator: '[, ]+', 
            sourceFiles: 'sim-gateway/target/*.jar',
            removePrefix: 'sim-gateway/target', 
            remoteDirectory: 'sim-gateway', 
            remoteDirectorySDF: false, 
        execCommand: '''cd /mnt/server/simple-flowable/sim-gateway
            rm -rf sim-gateway-1.0.0-SNAPSHOT.jar.back
            sh stop.sh
            mv sim-gateway-1.0.0-SNAPSHOT.jar sim-gateway-1.0.0-SNAPSHOT.jar.back
            mv /mnt/server_temp/simple-flowable/sim-gateway/sim-gateway-1.0.0-SNAPSHOT.jar /mnt/server/simple-flowable/sim-gateway/
            pwd
            source /etc/profile
            nohup sh /mnt/server/simple-flowable/sim-gateway/start.sh & 
            '''),
sshTransfer(cleanRemote: false, excludes: '', 
        execTimeout: 120000, flatten: false, makeEmptyDirs: false, 
            noDefaultExcludes: false, 
            patternSeparator: '[, ]+', 
            sourceFiles: 'sim-flowable-web/target/*.war',
            removePrefix: 'sim-flowable-web/target', 
            remoteDirectory: 'sim-flowable-web', 
            remoteDirectorySDF: false, 
        execCommand: '''cd /mnt/server/simple-flowable/sim-flowable-web
            rm -rf sim-flowable-web-1.0.0-SNAPSHOT.war.back
            sh stop.sh
            mv sim-flowable-web-1.0.0-SNAPSHOT.war sim-flowable-web-1.0.0-SNAPSHOT.war.back
            mv /mnt/server_temp/simple-flowable/sim-flowable-web/sim-flowable-web-1.0.0-SNAPSHOT.war /mnt/server/simple-flowable/sim-flowable-web/
            pwd
            source /etc/profile
            nohup sh /mnt/server/simple-flowable/sim-flowable-web/start.sh & 
            ''') 

5、修改 Tomcat 配置:

vi /usr/local/apache-tomcat-8.5.73/conf/server.xml

在 Host 中添加下面内容:

如下(我是在本地电脑修改好上传到 linux 机器的):

6、修改 Nginx 配置:

vi /usr/local/nginx/conf/nginx.conf

将内容修改如下:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  weblication/octet-stream;

    sendfile        on;

    keepalive_timeout  300s 600s;
    client_max_body_size 10m;

	 proxy_connect_timeout 600s; 
	 proxy_send_timeout 600s;
	 proxy_read_timeout 600s;
   
    server {
        listen       80;
        server_name  127.0.0.1;

        location / {
            proxy_pass  http://127.0.0.1:8080/web/;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            
            proxy_cookie_path  /web/ /;
            proxy_cookie_path  /gateway/ /;
         }
        
        location /web/ {
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header Host $http_host;			
           proxy_pass http://127.0.0.1:8080/web/;
           proxy_cookie_path  /web/ /;
        }
       
        location /gateway/ {
	         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_pass  http://localhost:8082/;
	         proxy_cookie_path  /gateway/ /;
        }
  
    }
}

启动 Nginx:

进入 cd /usr/local/nginx/sbin 目录,可以看到有一个可执行文件 nginx,直接./nginx 执行就 OK 了(如果进程已存在,则找到该进程 kill 掉,再启动)。

7、Jenkins 点击“Build with Parameters”开始构建,构建成功后可访问项目:

web前端:http://192.168.66.11/ 用户名/密码:admin/test

登录成功,进入首页:

8、所用脚本和工具下载:

百度网盘链接:百度网盘 请输入提取码

提取码:y9ml

linux安装软件:linux.rar


simple-jenkins.rar 包目录如下:

9、问题交流可以加我 QQ:821336262

10、本文在gitchat也有发布:基于 Jenkins+Git+Maven 构建 Spring Cloud 微服务实战_GitChat

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通。 2.主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 【资源说明】 项目简介 开发环境 * 操作系统:Windows 10 * 开发工具:Intellij IDEA * 数据库:MySQL 5.7.22 * Java SDK:Oracle JDK 1.8.0_131 部署环境 * 操作系统:Linux centos7 x64 * 虚拟化技术:VMware + Docker 项目管理工具 * 项目构建Maven + Nexus * 代码管理:Git + GitLab * 镜像管理:Docker Registry 后台主要技术栈 * 核心框架:Spring Boot + Spring Cloud * 视图框架:Spring MVC * 页面引擎:Thymeleaf * ORM 框架:tk.mybatis 简化 MyBatis 开发 * 数据库连接池:Alibaba Druid * 数据库缓存:Redis Sentinel * 消息中间件:RabbitMQ (后期考虑加入) * 接口文档引擎:Swagger2 RESTful 风格 API 文档生成 * 全文检索引擎:ElasticSearch (后期考虑加入) * 分布式链路追踪:ZipKin * 分布式文件系统:Alibaba FastDFS * 分布式服务监控:Spring Boot Admin * 分布式协调系统:Spring Cloud Eureka * 分布式配置中心:Spring Cloud Config * 分布式日志系统:ELK(ElasticSearch + Logstash + Kibana)(后期考虑加入) * 反向代理负载均衡:Nginx * CDN服务器:基于Nginx搭建 前端主要技术栈 * 前端框架:Bootstrap + jQuery * 前端模板:AdminLTE 自动化运维 * 持续集成:GitLab * 持续交付:Jenkins (后期考虑加入) * 容器编排:Kubernetes 系统架构 ![image]( /image/system.png) 服务规划 # Cloud | 服务名称 | 服务端口 | 服务说明 | | --- | --- | --- | | itoken-eureka | 8761 | 服务注册与发现 | | itoken-config | 8888 | 分布式配置中心 | | itoken-zipkin | 9411 | 分布式链路追踪 | | itoken-zuul | 8768 | 分布式路由网关 | | itoken-admin | 8084 | 分布式系统监控 | # service | 服务名称 | 服务端口 | 服务说明 | | --- | --- | --- | |itoken-service-admin|8501|管理员服务提供者| |itoken-service-redis|8502|数据缓存服务提供者| |itoken-service-sso|8503|单点登录服务提供者| |itoken-service-posts|8504|文章服务提供者| |itoken-service-upload|8505|文件上传服务提供者| |itoken-service-digiccy|8506|数字货币服务提供者| |itoken-service-collection|8507|数据采集服务提供者| # web | 服务名称 | 服务端口 | 服务说明 | | --- | --- | --- | |itoken-web-admin|8601|管理员服务消费者| |itoken-web-posts|8602|文章服务消费者| |itoken-web-backend|8603|后台服务聚合| |itoken-web-digiccy|8604|数字货币服务消费者| 页面效果 # 管理员服务页面 ![image]( /image/main.jpg) # 文章服务页面 ![image]( /image/posts.jpg) # 交易所页面 ![image]( /image/digiccy.jpg)
Docker是一个开源的应用容器引擎,可以帮助开发者快速轻松地构建、部署和运行应用程序。它提供了一个隔离的环境,可以把应用程序和其依赖项打包成一个容器,使得应用程序在不同的环境中能够一致地运行。 Jenkins是一个开源的持续集成工具,它可以自动构建、测试和部署应用程序。通过与代码仓库的集成,Jenkins可以在代码发生变更时自动触发构建过程,帮助团队快速地检测和解决问题,提高开发效率。 GitLab是一个基于Git的开源代码托管平台,它提供了代码仓库管理、代码评审、问题跟踪、持续集成等功能。与其他代码托管平台相比,GitLab更加强调安全性和可扩展性,支持企业内部自建和云端部署,适用于团队协作和敏捷开发。 Maven是一个用于构建、管理和发布Java项目的工具。它通过一个配置文件描述项目的结构和依赖关系,可以自动下载并管理项目的依赖项,统一构建过程和产出,提高项目的可维护性和可复用性。 Spring Boot是一个基于Spring框架的开源Java开发框架。它的目标是简化Spring应用程序的开发和部署,并提供一套快速构建可独立运行的Java应用程序的解决方案。Spring Boot提供了自动配置、快速开发等特性,可以帮助开发者更加高效地开发和部署Spring应用程序。 综上所述,Docker、JenkinsGitLab、MavenSpring Boot是一些常用的开发和部署工具,它们相互配合使用可以帮助开发者更好地进行应用程序的构建、测试和部署工作,提高开发效率和应用程序的质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值