centos6 + jenkins + gitlab + springboot + tomcat一鍵部署

最近折騰了2天,終於完整得搭建了一套自動打包,自動部署得環境,裏面坑不少,分享出來,攢點人品,讓後來者避開這些坑。
部署機器:java

  1. 192.168.0.94 (centos6),運行gitlab,jenkins
  2. 192.168.0.93 (centos6),運行tomcat

圖簡單得話,能夠直接將防火牆關閉,不然就須要開放這些服務用到得端口。這裏面gitlab使用13001,Jenkins使用13002.linux

打開配置文件

vim /etc/sysconfig/iptablesgit

加入以下語句:

-A INPUT -p tcp -m state --state NEW -m tcp--dport 13001 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp--dport 13002 -j ACCEPTweb

保存(按Esc退出編輯)

:wqspring

重啓防火牆,修改完成

service iptables restartapache

  1. 安裝JDK(目前Jenkins支持jdk8到jdk11)
    講jdk-8u11-linux-x64.tar.gz解壓到/opt/java下面,/etc/profile文件添加好相關路徑便可。

tar -zxvf jdk 將解壓後得文件夾放在/usr/local下面json

export JAVA_HOME=/usr/local/jdk1.8.0_11vim

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarcentos

export PATH=$PATH:$JAVA_HOME/bintomcat

source /etc/profile(讓改動生效)

  1. Maven安裝
    tar-zxvf apache-maven-3.5.0-bin.tar.gz

mv apache-maven-3.5.0/* /usr/local/maven/
vim /etc/profile
exportM2_HOME=/usr/local/maven

exportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$M2_HOME/bin:$PATH

source /etc/profile
配置倉庫信息和鏡像源,使用阿里雲:

在/usr/local/maven/conf/settings.xml下面配置倉庫信息:

<localRepository>/opt/maven/repo</localRepository>

<mirror>

<id>alimaven</id>

 <mirrorOf>central</mirrorOf>

 <name>aliyun maven</name>

 <url>http://maven.aliyun.com/nexus/content/groups/public/</url>

</mirror>

  1. gitlab安裝

A. 安裝依賴軟件
yum -y install policycoreutils openssh-server openssh-clientspostfix
B. 獲取rpm包並安裝
wget https://mirrors.tuna.tsinghua...

rpm -ivh gitlab-ce-9.3.6-ce.0.el7.x86_64.rpm

C. 自定義端口和存放路徑
vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.0.94:13001'

git_data_dirs({ "default" => { "path" => "/var/opt/gitlab/git-data", 'gitaly_address' => 'unix:/var/opt/gitlab/gitaly/gitaly.socket' } })

git_data_dir "/oracle/gitlab"
增長一個 git_data_dir

D. 啓動gitlab
gitlab-ctl reconfigure

gitlab-ctl restart

  1. 安裝jenkins

root用戶下:

下載依賴
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat...
導入祕鑰
sudo rpm --import https://pkg.jenkins.io/redhat...
安裝jenkins
yum install jenkins
配置jenkins的端口以及修改用戶爲root:
[root@localhost ~]# vi /etc/sysconfig/jenkin

clipboard.png

配置jenkins得java路徑:
vim /etc/init.d/jenkins
找到 candidates,裏面加入你本機的實際java路徑

啓動jenkins: service jenkins restart
日誌位置:/var/log/jenkins/jenkins.log

一個注意得地方:
剛啓動jenkins得時候,會提示你該jenkins處於離線狀態,須要處理一下:

  1. 打開配置界面

http://localhost:13002/pluginManager/advanced

clipboard.png

  1. http://localhost:13002/restart
  2. 編寫一個springboot得測試程序,改pom文件爲編譯成一個war包

package com.avictc.springlearn;

import com.alibaba.fastjson.JSONObject;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
@RequestMapping("/test1")
public class SpringlearnApplication extends SpringBootServletInitializer {

@RequestMapping("/getJSon")
public JSONObject returnJson(){
    JSONObject o = new JSONObject();
    o.put("hello","yes");
    return o;
}

@RequestMapping("/getString")
public String returnJson2(){
    return "hello";
}


public static void main(String[] args) {
    SpringApplication.run(SpringlearnApplication.class, args);
}

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    return builder.sources(SpringlearnApplication.class);
}

}

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<packaging>war</packaging>
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.4.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.avictc</groupId>
<artifactId>springlearn</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springlearn</name>
<description>Demo project for Spring Boot</description>

<properties>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>

    <!-- 添加fastjson-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.32</version>
    </dependency>
    <!-- 添加AOP-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-aop</artifactId>
    </dependency>
</dependencies>

<build>
    <!-- 應與application.properties(或application.yml)中context-path保持一致 -->
    <finalName>springtest</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

</project>

打包命令:
mvn clean package -Dmaven.test.skip=true

  1. 開始配置jenkins,,系統管理--》全局工具配置

clipboard.png

clipboard.png

注意:git須要配置到bin目錄下得git,其餘JDK,Maven只須要配置到主目錄便可。

系統管理-》系統設置,配置jenkins須要ssh到的服務器,好比192.168.0.93

clipboard.png

clipboard.png

須要首先在Jenkins所在的機器192.168.0.94
ssh-keygen -t rsa

clipboard.png

生成了私鑰文件id_rsa,公鑰文件id_rsa.pub
將公鑰文件id_rsa.pub的內容追加到192.168.0.93中的/root/.ssh/authorized_keys中,這樣,94就能夠ssh到93這臺機器了。

  1. 新建一個job,並進行配置:

clipboard.png 源碼下載

clipboard.png 觸發器暫時不考慮,手工點擊構建便可

clipboard.png 使用maven進行打包構建

clipboard.png

192.168.0.93上面的restartTomcat.sh文件內容:

!/bin/sh

export BUILD_ID=dontkillme
export JAVA_HOME=/opt/java/jdk1.8.0_11
PID=ps -ef |grep /opt/java/apache-tomcat-9.0.19/conf |grep -v grep | awk '{print $2}'
if [ ! "$PID" ];then
echo "tomcat not start"
else
echo "will kill tomcat process:$PID"
kill -9 $PID
fi
cd /opt/java/apache-tomcat-9.0.19/webapps
rm -rf springtest*
mv /opt/java/apache-tomcat-9.0.19/*.war /opt/java/apache-tomcat-9.0.19/webapps

cd /opt/java/apache-tomcat-9.0.19/bin/
nohup sh ./startup.sh
echo "tomcat start executes"
sleep 3s

注意:必定要export JAVA_HOME,不然Tomcat怎麼都啓動不了!!!

至此,能夠放心的一鍵部署了,完成了全部步驟。

相關文章
相關標籤/搜索