0
点赞
收藏
分享

微信扫一扫

linux操作集-通过jekins+maven+git+nginx实现自动化部署

需求

多台服务器,实现自动化部署,jekins作为部署工具,maven做为编译工具,git作为代码管理仓库,nginx作为负载前置

开始

安装环境
1. 下载jekins
2. 安装jdk
3. 安装git
4. 安装maven私服
5. 安装nginx
6. 组装调试

先说安装jekins和jdk

  1. 官网https://jenkins.io/download/下载jekins,此处选用war版,各系统通用.

2.上传刚才下载的war包

scp jenkins.war  root@172.16.231.134:/jekins

3 .安装jdk,通过官网https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html下载,可以直接下载rpm包如

下载完成后上传到服务器

scp jdk-8u191-linux-x64.rpm  root@172.16.231.134:/jekins

安装jdk

#当然一般情况下yum install java就好
rpm -ivh jdk-8u191-linux-x64.rpm  

查看java安装目录和版本号

java -verbose
java -version
  1. 下载tomcat7,暂时jekins支持到此版本,上传到服务器,我是通过vagrant部署的虚拟机,所以实际挂载是同构vagrant管理,只需要把文件拖入挂载点即可
  1. 本地虚拟机,关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.servic
  1. 将jekins.war放到tomcat的wepaaps下,启动tomcat,进入项目,此时会让你输入密钥,按其指示的文件就可以找到(如果找不到密码,可以通过find / -name initialAdminPassword命令找到文件,如54bf32b3a8334a86b5842257b75d8e88),进入后,我选择标准安装


7.下面继续创建账号,可以先不用就用刚才的admin,但密码就是刚才那一长串,然后进入,就可以创建项目了


  1. jekins安装完成后,我们说git服务器,我git采用阿里云的免费版gitlib,地址
    https://code.aliyun.com,可用淘宝账号登录,客户端采用sourcetree,

  2. maven 安装,下面该安装maven私服了,先安装maven

#首先安装maven
wget /apps http://mirror.bit.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz

tar -zxvf apache-maven-3.3.9-bin.tar.gz

#配置maven环境
vi /etc/profile

#文件中添加
export M2_HOME=/apps/apache-maven-3.3.9
export PATH=$PATH:$M2_HOME/bin

#然后发布
source /etc/profile

#测试
mvn -version

#修改settings中指定仓库位置

mkdir /apps/mvn-repo

#在settings中指定仓库地址,添加如下
#<localRepository>/apps/mvn-repo</localRepository>


  1. 下面安装nexus,http://www.sonatype.org/nexus/archived/ 下载所需要的版本
#下载完后解压
tar -zxvf nexus-3.7.1-02-unix.tar.gz 
#解压后有两个文件夹
#nexus-3.7.1-02 是nexus的核心文件
#sonatype-work maven下载jar存放地址

#修改nexus的默认端口号,我采用的是3.7的版本,配置在etc中,老版本在conf下
cd /usr/local/nexus/etc
vi nexus-default.properties  

#记得一定要先配置好M2_HOME路径,否则容易报错
#启动nexus
/apps/nexus-3.7.1-02/bin/nexus start
#查看状态
 /apps/nexus-3.7.1-02/bin/nexus status
#先说running表示成功,此时输入http://127.0.0.1:8081先说nexus页面表示成功
  1. 安装nginx
#我一样采用最简单的yum安装
#加入nginx.repo
vim /etc/yum.repos.d/nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1


#安装
yum install nginx

#启动nginx
systemctl start nginx

#查看nginx状态
ps -fe|grep Nginx
#显示root      4641     1  0 07:56 ?        00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
#配置文件在/etc/nginx/nginx.conf,后续我们会修改此文件做相关操作
  1. 组装调试

a. 配置jenkins额外的插件


安装插件

  • Maven Integration
  • Git plugin

b. 配置全局工具


首先配置maven路径,使用settings改为我们刚才的maven配置文件地址


c. 新建项目,我选择自由风格,毕竟我通过脚本控制


配置git管理代码方式


新增认证信息

cd ~/.ssh
#查看服务器公钥,拷贝到git服务器上
cat id_rsa.pub

#查看私钥,拷贝到jenkins中
cat id_rsa 

公钥拷到对应阿里云gitlib上


配置jenkins凭证


如上,拷贝服务器私钥到此,点击添加ok

点击Pre Steps


此处一会放置构建脚本使用。

下面,我习惯性的把jenkins的工作空间改到了我指定的目录,

vi /root/.jenkins/config.xml 

#找到 <workspaceDir>${JENKINS_HOME}/workspace/${ITEM_FULL_NAME}</workspaceDir> 改成
<workspaceDir>/jenkins/workspace/${ITEM_FULL_NAME}</workspaceDir>

# 创建工作目录
mkdir /jenkins

然后重启jenkins

d. 下面配置我们的两个脚本文件,因为我们模拟的是tomcat和jenkins在一个服务器上,所以,我们的maven先忽略私服的问题,且本地jar包只需install到本地即可。因此我们有以下两个脚本
install.sh----本地打包jar使用

#!/bin/sh -

set -x

targetName=${project_name}

export BUILD_ID=deploy_id_${targetName}

workspace=`find /jenkins/   -name  ${JOB_NAME}`
if [ -d ${webName} ]
then
        echo "workspace is exists ${workspace}" > /dev/null
        `cd ${webName}`
        mvn clean install -Dmaven.test.skip=true
        if [ $? -eq 0 ]
        then
                echo "本地打包${targetName}完成" > /dev/null
        else
                echo  "本地打包${targetName}失败" > /dev/null
                exit 1
        fi
else
        echo "workspace is not exists ${workspace}" > /dev/null
fi
~  

deplay_war.sh 构建项目,启动tomcat服务

#!/bin/sh -

set -x


targetName=${project_name}
targetWar=
base_tomcat=
port=${port}
tomcat_name="tomcat-${project_name}-${port}"
tomcat_target=

export BUILD_ID=tomcat_deploy_id_${tomcat_name}

workspace=`find /jenkins/   -name  ${JOB_NAME}`

echo "$M2_REPO" 

if [ -d ${workspace} ]
then 
    echo "workspace is exists ${workspace} \n" > /dev/null

    cd ${workspace}

    mvn clean install -Dmaven.test.skip=true 
    if [ $? -eq 0 ]
    then
        echo "本地打包${targetName}完成 \n" > /dev/null
    else
        echo  "本地打包${targetName}失败 \n" > /dev/null
        exit 1
    fi
else 
    echo "workspace is not exists ${workspace} \n" > /dev/null
fi


targetWar=`find  /apps/mvn-space  -name $targetName*.war`


if [ -n "${targetWar}" ]
then 
    echo "echo ${targetWar} build success, start tomcat "
else
    echo "echo ${targetWar} is not exists,部署失败\n"
    exit 1
fi



# # # 清除空间内的basetomcat
rm -rf tomcat-base
#捡出tomcat
git clone git@code.aliyun.com:tlgj704/tomcat-base.git
# #
base_tomcat=`find /jenkins/ -name tomcat-base`

if [ -d "${base_tomcat}" ]
then
    echo "base_tomcat is ${base_tomcat}"
else
    echo "未找到base_tomcat,部署失败"
    exist 1
fi
#将war拷贝到base-tomcat中
cp ${targetWar}  ${base_tomcat}/webapps/${targetName}.war

pushd ${base_tomcat}/conf/

#更新tomcat端口
`sed -i "s/8080/${port}/g" server.xml`

pushd 

#查找原有tomcat是否在运行
tomcat_target=`find /apps/ -name ${tomcat_name}`

if [  -d "${tomcat_target}" ]
then 
    #找到旧tomcat,将会先杀4死旧服务
    echo "${tomcat_name} arealy  exists ,will stop ,and remove \n"

    #查找原有服务
    oldPid=`lsof -i:${port} | grep java |awk -F " " '{ print $2}' `

    #如果原服务存在,先杀死原服务
    if [ -n "${oldPid}" ]
        then
            `kill -9 "${oldPid}"`
        else
            echo "old pid is null\n"
        fi

    rm -rf ${tomcat_target}
    
else
    #没找到旧tomcat,将会创建新服务
    echo "${tomcat_name}  not exist,create new tomcat\n"
fi

cp -r ${base_tomcat}  /apps/${tomcat_name}

#启动服务
sh /apps/${tomcat_name}/bin/startup.sh 


#删除临时tomcat
rm -rf ${base_tomcat}

echo "部署工程${JOB_NAME}完成"

sleep 5

exit 0


将两个脚本文件我放到了/jenkins/script目录下,下面配置jenkins使用。

e . 配置工程
首先,我配置完刚才的父pom工程,记得脚本中的export project_name=wechant-sdk指定当前工程jar包名即可

配置完git后,如上图,配置调用脚本信息即可,点击构建


如上,构建完成了,然后我们配置wab服务的工程job

注:如果此时你的linux报错No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
可以参考 https://stackoverflow.com/questions/26313902/maven-error-perhaps-you-are-running-on-a-jre-rather-than-a-jdk 内容,大意就是maven打包时需要jdk,你的环境可能只配了jre,需要安装jdk,我的操作是如下

#不同版本可能不一样,我是ubuntu的
apt-get install openjdk-8-jdk 

下面说web工程的脚本,project_name是war工程名

此时用到的就发布的脚本,构建成功,就表示tomcat启动完成。恭喜我们完成了一大步。


  1. 下面我们部署两个web服务,然后通过nginx进行负载均衡,实现热备的方式
    来实现不停机发布

。。。

举报

相关推荐

0 条评论