GitLab+Jenkins結合構建持續集成(CI)環境


git版本控制的使用

鏈接地址:https://www.cnblogs.com/Mercury-linux/p/12623343.html

Jenkins和GitLab概述

Jenkins概述:是一個開源軟件項目,是基於Java開發的一種持續集成工具,用於監控持續重復的工作,旨在提供一個開放易用的軟件平台,是軟件的持續集成變成可能。

Jenkins官方:https://jenkins.io/

GitLab概述:是一個利用 Ruby on Rails 開發的開源應用程序,實現一個自托管的Git項目倉庫,可通過Web界面進行訪問公開或者私人項目。Ruby on Rails 是一個可以使開發、部署、維護 web應用程序變得簡單的框架。

GitLab擁有與Github類似的功能,能夠瀏覽源代碼,管理缺陷和注釋。可以管理團體對倉庫的訪問,它非常易於瀏覽提交過的版本並提供一個文件歷史庫。它提供一個代碼收集功能可以輕松實現代碼復用,便於日后需要的時候進行查找。

GitLab官網:https://docs.gitlab.com/

GitLab和GitHub的區別

  • 相同點:

二者都是基於web的Git倉庫,在很大程度上GitLab是仿照GitHub來做的,他們都提供了分享開源項目的平台,為開發團隊提供了存儲、分享、發布和合作開發項目的中心化雲存儲的場所。

  • 不同點:

GitHub 如果要使用私有倉庫,是需要付費的。 GitLab 可以在上面創建私人的免費倉庫。

GitLab 讓開發團隊對他們的代碼擁有更多的控制,相比 GitHub,它有不少的特色:允許免費設置倉庫權限;允許用戶選擇分享一個 project 的部分代碼;允許用戶設置 project 的獲取權限,進一步的提升安全性;可以設置獲取到團隊整體的改進進度;通過 innersourceing 讓不在范圍內的人訪問不到該資源。

總結:從代碼私有性方面來看,有時公司並不希望員工獲取到全部代碼,這時候GitLab無疑是最好的選擇。但對於開源項目而言,GitHub依然是代碼托管的首選。

git相關概念:

git 是一種版本控制系統,是一個命令,是一種工具

gitlib 是用於實現git功能的開發庫

github 是一個基於git實現的在線代碼托管倉庫,包含一個網站頁面,向互聯網開放

gitlab 是一個基於git實現的在線代碼倉庫托管軟件,一般用於在企業內部網絡搭建git私服

注:gitlab-ce 社區版gitlab-ee 是企業版,收費

持續集成系統的工作流程大概分為以下幾步:

  1. 開發者將新版本 push到 Gitlab

  2. Gitlab 隨后觸發 Jenkins master 節點進行一次 build。(通過 web hook 或者定時檢測)

  3. Jenkins master 結點將這個 build 人為分配給若干注冊的 slave結點中的一個,這個 slave結點根據一個事先設置號的腳本進行 build。這個腳本可以做的事情很多,比如編譯,測試、生成測試報告等等。這些原本需要手動完成的任務都可以交給Jenkins 來做。

  4. 我們在 build 中要進行編譯,這里使用了分布式編譯器 distcc 來加快編譯速度。

GitLab平台部署

架構圖:

整體實驗環境部署:

主機名 公網ip 內存 服務
lb01 10.0.0.5 2G 數據庫、負載均衡、Jenkins上線
web01 10.0.0.7 1G tomcat
web02 10.0.0.8 1G tomcat
es01 10.0.0.240 3G gitlab倉庫


GitLab搭建

注:實驗環境內存建4G大小,否則服務起不來

我們的gitlab倉庫rpm包去 清華源 下載

#配置擴展源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

#安裝gitlab和依賴包
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.3.5-ce.0.el7.x86_64.rpm
yum localinstall gitlab-ce-12.3.5-ce.0.el7.x86_64.rpm -y
  • gitlab配置文件
vim  /etc/gitlab/gitlab.rb
#設置訪問url和關閉prometheus
external_url 'http://gitlab.oldqiang.com'
#如果安裝普羅米修斯全家桶需要4G內存
prometheus_monitoring['enable'] = false
#配置gitlab通過smtp發送郵件
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '1354586675@qq.com'
gitlab_rails['gitlab_email_display_name'] = 'china'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "1354586675@qq.com"
gitlab_rails['smtp_password'] = "xxxxxx"
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true

#應用重新配好的配置並重啟gitlab
gitlab-ctl  reconfigure

注:重新配置應用程序。修改gitlab服務配置文件后,都需要重啟執行gitlab-ctl reconfigure命令。讓各個服務的配置文件,重新加載一下配置文件

登錄gitlab:http://gitlab.class.com/

GitLab漢化

注:因為下載官方漢化包我們需要去國外,所以直接在碼雲上下載    gitlab漢化版本目前最高是12.5版本

unzip AEIOUAEIOU-xhang_gitlab-v12.3.5-zh.zip 
#查看當前漢化版本,如果gitlab版本太新部分不能漢化
cat xhang_gitlab/VERSION 
12.3.5


gitlab-ctl stop
\cp -a xhang_gitlab/*  /opt/gitlab/embedded/service/gitlab-rails/
#這里會有兩個報錯,因為這里兩個軟連接
gitlab-ctl start

netstat -lntup
tcp        0      0 127.0.0.1:9229          0.0.0.0:*               LISTEN      10859/gitlab-workho 
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      10916/unicorn maste 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      10877/nginx: master 
tcp        0      0 127.0.0.1:8082          0.0.0.0:*               LISTEN      10895/sidekiq 5.2.7 
tcp        0      0 127.0.0.1:9236          0.0.0.0:*               LISTEN      10846/gitaly        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      6693/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      7128/master         
tcp        0      0 0.0.0.0:8060            0.0.0.0:*               LISTEN      10877/nginx: master

注:這里需要等待!8080端口起不來會出現 502 報錯

主頁面漢化完成:

徹底漢化:

gitlab-用戶-用戶組-項目之間的關系

關系圖:

創建組

創建項目

根據配置推送代碼項目,將項目推送到倉庫

#進行解析
vim /etc/hosts
10.0.0.88 class.com

#准備目錄和項目
mkdir /opt/shop
cd /opt/shop
2000.png  21.js  icon.png  img  index.html  sound1.mp3

#上傳倉庫
git config --global user.name "Administrator"
git config --global user.email "admin@example.com"
git init
git add .
git commit -m "Initial commit"
git remote add origin http://class.com/shop/shop.git
git push -u origin master
#輸入用戶名和密碼

推送結果:

  • ssh推送:
#主機創建密鑰
ssh-keygen <--一路回車
cat /root/.ssh/id_rsa.pub
將內容添加到gitlab倉庫的SSH密鑰

#配置倉庫
git init
git remote add origin git@class.com:root/bbs.git
git add .
git commit -m "Initial commit"
git push -u origin maste

創建用戶

加入用戶:

GitLab備份與恢復

#備份
gitlab-rake gitlab:backup:create
#這里有些敏感文件不會去備份,需要手動備份

#刪一個庫在恢復
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

#注:執行下面一條命令會刪除庫中的表和數據
#BACKUP內容:時間戳+時間+版本
gitlab-rake gitlab:backup:restore BACKUP=1585361881_2020_03_28_12.3.5
gitlab-ctl start unicorn
gitlab-ctl start sidekiq


vim /etc/gitlab/gitlab.rb
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
gitlab_rails['backup_keep_time'] = 604800

gitlab-ctl reconfigure
netstat -lntup

#遷移雲主機
先備份,雲主機安裝相同版本,恢復

GitLab版本升級

注:gitlab升級,10-->11-->12 gitlab升級不能跨大版本,如果之前已經漢化,請選擇可以漢化的版本進行升級,因為最新的版本不支持漢化會出現服務起不來

#升級:
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.3.9-ce.0.el7.x86_64.rpm
yum localinstall gitlab-ce-12.9.1-ce.0.el7.x86_64.rpm -y

#gitlab會備份數據並重啟
ll /var/opt/gitlab/backups/
-rw------- 1 git git 1781760 Mar 28 10:18 1585361881_2020_03_28_12.3.5_gitlab_backup.tar
-rw------- 1 git git  133120 Mar 28 10:56 1585364188_2020_03_28_12.3.5_gitlab_backup.tar
drwx------ 7 git git     131 Mar 28 10:30 tmp

#查看當前gitlab版本:
rpm -qa | grep gitlab
gitlab-ce-12.9.1-ce.0.el7.x86_64
#如果設置漢化不徹底可以在漢化一次

注:這里gitlab需要啟動一會出現8080端口在查看網頁

將svn中的數據遷移到git倉庫

推薦參考地址:http://john.albin.net/git/convert-subversion-to-git

svn教程地址:https://www.runoob.com/svn/svn-intro.html

安裝svn客戶端

yum install subversion -y
svn --version

初始化倉庫

#手動新建版本庫目錄
mkdir /svn/repo -p
#創建版本庫
svnadmin create /svn/repo

svn服務配置文件svnserver.conf,該文件僅由一個[general]配置段組成。

cd /svn/repo/conf
vim  svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = /svn/repo
[sasl]
  • anon-access: “訪客”,取值范圍為:“write (可讀可寫)”、“read (只讀)”和“none (無訪問權限)”,默認指:read

  • auth-access: “用戶”,取值范圍為:“write (可讀可寫)”、“read (只讀)”和“none (無訪問權限)”,默認值:write

  • authz-db: 指定權限配置文件名,通過該文件可以實現以路徑為基礎的訪問控制。這里使用相對路徑

  • realm: 指定版本庫的認證域,即在等錄時提示的認證域名稱

用戶名口令文件passwd

#用戶名口令文件由svnserve.conf的配置項password-db指定,默認為conf目錄中的passwd。由[users]配置段組成。
vim passwd
[users]
admin = 123456   <-- 授權用的
test = 123456    <-- 賬戶密碼

權限配置文件authz

#由svnserve.conf的配置項authz-db指定,默認為conf目錄中的authz。該配置文件由一個[groups]配置段和若干個版本庫路徑權限段組成。
vim authz
[/]
admin = rw
test = r

注:[/],則表示所有庫的根目錄

啟動服務並進行轉換

svnserve -d -r /svn/repo

#創建git倉庫
mkdir  /opt/git
git svn clone svn://10.0.0.100 --username=admin --no-metadata --authors-file=/opt/git/password.txt /opt/git/


cat password.txt
admin=zhangsan<296917342@qq.com>
  • --no-metadata:默認情況下,git會在svn的提交信息里補充一些git的信息。這個標識是用來把這些信息去掉。

  • --authors-file:svn用戶列表

  • /opt/class:新的git倉庫。這個是拉取svn數據到本地的文件夾,它會在dest-dir上新建git倉庫。

搭建Jenkins實現持續集成

代碼上線流程:

官方網站:https://jenkins.io/zh/

安裝jdk1.8

jdk下載地址:https://www.oracle.com/java/technologies/javase-jdk8-downloads.html

jdkrpm包網盤鏈接:https://pan.baidu.com/s/1zyFC-mTVqFPfFnTJQXaa4g 提取碼:69eq

yum localinstall jdk-8u102-linux-x64.rpm -y
java -version

安裝Jenkins

tomcat下載地址:https://tomcat.apache.org/download-80.cgi#8.5.53

#安裝tomcat
mkdir /app
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.53/bin/apache-tomcat-8.5.53.tar.gz
tar xf apache-tomcat-8.5.53.tar.gz -C /app/
ln -s /app/apache-tomcat-8.5.53/ /app/tomcat
cd /app/tomcat/webapps/
rm -rf ROOT
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/latest/jenkins.war
mv jenkins.war ROOT.war
/app/tomcat/bin/startup.sh
netstat -lntup | grep 8080

注:這里Jenkins的信息都放在了root目錄下的.Jenkins下。

  • 訪問加速設置,插件安裝將指向清華源

  注:只有頁面插件安裝才會出現updates這個目錄。

cd /root/.jenkins/updates/
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
#重啟tomcat

這里需要等待很長時間,如果遲遲不出現界面建議將下面的包之間解壓在/root下面

Jenkins目錄地址:https://pan.baidu.com/s/1P5bfqOUx8ZDjjkLHsYpo3A 提取碼:34xy

rm -rf /root/.jenkins
tar xf jenkins-data.tar.gz -C /root/

#登錄:
admin
123456

創建一個job

概述:一個項目,創建一個job,一個job就是一個自動化上線的流程(拉取-html-打包-scp-tar)

構建job:

通用 源碼管理 構建觸發器 構建環境 構建 構建后操作
關閉job 對接代碼倉庫 gitlab代碼倉庫 構建前准備操作 shell腳本 構建后操作通知

構建任務:

Jenkins自動拉取gitlab代碼

前提:gitlab倉庫有代碼可以拉取還有主機與域名解析在hosts文件做好

用戶和密碼添加:

密鑰添加:

cat /root/.ssh/id_rsa
#內容添加到憑證

使用腳本實現html自動化上線

環境准備

#Jenkins主機創建並分發密鑰實現免輸入傳輸
ssh-keygen
ssh-copy-id root@10.0.0.7
ssh-copy-id root@10.0.0.8
#負載均衡主機配置文件
vim /etc/nginx/nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream java {
        server 10.0.0.7:80;
        server 10.0.0.8:80;
    }
    server {
        listen       80;
        server_name  zrlog.oldedu.com;
        root   html;
        index  index.html index.htm;
        location / {
            proxy_pass http://java;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
  }
}

#網站主機07,08
yum install nginx -y
systemctl start nginx
systemctl enable nginx

#刪除默認網頁修改首頁文件
rm -rf /usr/share/nginx/html/*
echo "web01" > index.html
echo "web02" > index.html
#刷新查看
  • 腳本思路
#Jenkins主機將源碼壓縮到
mkdir /data    <--壓縮文件目錄
cd /root/.jenkins/workspace/shop
tar zcf /opt/data/shop.tar.gz *
scp  -rp /opt/data/shop.tar.gz 10.0.0.8:/opt/data/

#網站主機
mkdir /jenkins_data      <--存放壓縮包目錄
mkdir /code/shop  -p     <--網站代碼目錄
chmod 755 -R /code/
/usr/share/nginx/html  <--nginx默認網站目錄,code目錄軟鏈接地址
#解壓
tar xf /opt/data/shop.tar.gz -C  /code/shop
rm -rf /usr/share/nginx/html
ln -s /code/shop /usr/share/nginx/html  <--代碼更新方式目錄直接軟連接
ll /usr/share/nginx   <--查看軟鏈接情況
  • 腳本

mkdir /server/scripts -p
vim auto_code_update_html.sh
#!/bin/bash
#執行腳本默在這個目錄下
# cd  /root/.jenkins/workspace/shops/shop

project=$1
tag=$2
#mkdir /data
tar zcf /data/${project}-${tag}.tar.gz *
IP="10.0.0.7 10.0.0.8"
#web主機操作
for n in `echo $IP`
do
#mkdir /data
scp -rp /data/${project}-${tag}.tar.gz root@${n}:/data
ssh root@$n "  mkdir -p /code/${project}-${tag} && \
tar xf /data/${project}-${tag}.tar.gz -C /code/${project}-${tag} && \
rm -rf /usr/share/nginx/html && \
chmod 755 -R /code/ && \
ln -s /code/${project}-${tag} /usr/share/nginx/html"
done

#執行腳本測試
sh -x /server/scripts/auto_code_update_html.sh
  • Jenkins構建

版本回退操作

腳本

vim /server/scripts/auto_code_undo_html.sh
#!/bin/bash

# cd  /root/.jenkins/workspace/shops/shop
project=$1
tag=$2
IP="10.0.0.7 10.0.0.8"
for n in `echo $IP`
do
ssh root@$n "rm -rf /usr/share/nginx/html && \
ln -s /code/${project}-${tag} /usr/share/nginx/html"
done
  • 添加文本參數,選擇版本號
  • 構建時執行的shell
  • 構建

注:這里如果項回退版本,之前的版本目錄都必須要有

使用gitlab自動觸發Jenkins構建

安裝gitlab插件

  插件名稱:gitlab

 

修改job的配置

修改gitlab配置

網絡配置:

 

配置集成:

修改文件:

查看結果:

使用碼雲實現java代碼上線

實驗步驟:

  • 搭建java環境
rpm -ivh jdk-8u102-linux-x64.rpm
mkdir /app
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.53/bin/apache-tomcat-8.5.53.tar.gz
tar xf apache-tomcat-8.5.53.tar.gz -C /app/
ln -s /app/apache-tomcat-8.5.53/ /app/tomcat
/app/tomcat/bin/startup.sh 
  • maven環境

  maven下載地址:https://maven.apache.org/download.cgi

wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar xf apache-maven-3.6.3-bin.tar.gz -C /usr/local
ll /usr/local/apache-maven-3.6.3/
ln -s /usr/local/apache-maven-3.6.3/ /usr/local/maven
ll /usr/local/maven/
vim /etc/profile
#文件結尾添加兩行
export M2_HOME=/usr/local/maven
export PATH=${M2_HOME}/bin:$PATH

source /etc/profile
mvn -v

#更新源為阿里源
vim  /usr/local/maven/conf/settings.xml
#將所有內容復制到<mirrors>之間
<mirror> 
    <id>nexus-aliyun</id>  
    <mirrorOf>central</mirrorOf>    
    <name>Nexus aliyun</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
</mirror>
  • 創建碼雲倉庫並將java代碼上傳上去
mkdir /opt/java_git
tar xf SpringBootWeb.tar.gz -C /opt/java_git
cd /opt/java_git
<--將需要上傳的源碼放在這里-->

#創建碼雲倉庫並將信息信息和地址寫在目錄
git config --global user.name "weijixiang"
git config --global user.email "1354586675@qq.com"
git init
git add .
git commit -m "first commit"
git remote add origin git@gitee.com:weijixiang_god/java.git
git push -u origin master

注:這里主機的ssh要在碼雲上的ssh公鑰配置好,后去拉取不用輸入密碼,碼雲打上標簽

  • jenkins安裝maven插件

Jenkins創建一個java業務的job

 

配置maven

構建過程

正在構建

使用腳本實現部署

  • 准備
#編譯文件地址
/root/.jenkins/workspace/springBoot/target/SpringBootWeb.war

#tomcat配置文件允許使用軟連接
vim /app/tomcat/conf/context.xml
<Context>
    <Resources allowLinking="true" />
</Context>
#重啟
  • 測試腳本

注:此腳本為了驗證是否可行,結合Jenkins需要修改參數

vim  auto_code_update_java.sh
#!/bin/bash

#project=$1
tag=v1.0
packname="SpringBootWeb"
dir="/root/.jenkins/workspace/springBoot/target/SpringBootWeb.war"
IP="10.0.0.7 10.0.0.8"
for n in `echo $IP`
do
scp -rp $dir root@${n}:/data
ssh root@$n "mkdir -p /code/$packname-$tag && \
unzip -d /code/$packname-$tag /data/${packname}.war && \
rm -rf /app/tomcat/webapps/class && \
ln -s /code/$packname-$tag /app/tomcat/webapps/class && \
/app/tomcat/bin/shutdown.sh && \
/app/tomcat/bin/startup.sh"
done

Jenkins完成Java項目代碼上線

  • 腳本
vim /server/scripts/auto_code_update_java.sh 
#!/bin/bash

project=$1
tag=$2
dir=$(find `pwd` -name "*.war")
IP="10.0.0.7 10.0.0.8"
for n in `echo $IP`
do
scp -rp $dir root@${n}:/data/${project}.war-$tag
ssh root@$n "mkdir -p /code/$project-$tag && \
unzip -d /code/$project-$tag /data/${project}.war-$tag && \
rm -rf /app/tomcat/webapps/${project} && \
ln -s /code/$project-$tag /app/tomcat/webapps/${project} && \
/app/tomcat/bin/shutdown.sh && \
/app/tomcat/bin/startup.sh"
done

項目構建

  1. 碼雲上更新源碼,添加版本標簽

  2. Jenkins的job添加執行shell

3. 立即構建

4. 查看效果

使用Jenkins完成Java項目的回滾

  • 回滾腳本
vim /server/scripts/auto_code_undo_java.sh 
#!/bin/bash

project=$1
tag=$2
IP="10.0.0.7 10.0.0.8"
for n in `echo $IP`
do
ssh root@$n "rm -rf /app/tomcat/webapps/${project} && \
ln -s /code/$project-$tag /app/tomcat/webapps/${project} && \
/app/tomcat/bin/shutdown.sh && \
/app/tomcat/bin/startup.sh"
done
  • 創建一個回滾job

添加文本參數:

選擇版本進行構建:

構建結果:

使用Jenkins完成jeesns項目代碼上線

軟件包地址:https://pan.baidu.com/s/1294itvj22Vb0044oIjZH1Q 提取碼:19nn

項目思路:

  1. 創建項目倉庫

  2. 解壓文件並將源碼推到碼雲指定倉庫

  3. 編寫自動部署腳本,並進行驗證

  4. Jenkins創建job添加git倉庫地址,shell執行腳本

  5. 驗證

項目配置數據庫

#創建數據庫,創建用戶和權限
create database jeesns;
grant all on jeesns.* to 'jeesns'@'10.0.0.%' identified by '123456';

#導入項目sql文件
cd /opt/jeesns/jeesns-web/database
mysql -ujeesns -p123456 -h 10.0.0.5 jeesns <jeesns.sql 

#修改數據庫連接地址
vim /opt/jeesns/jeesns-web/src/main/resources/jeesns.properties
地址:10.0.0.5
jdbc.user=jeesns
jdbc.password=123456
#這里修改完了文件需要重新git倉庫一下在上傳到碼雲

#編譯測試
mvn clean package

創建項目倉庫

 

創建git倉庫push代碼

unzip -d /opt/jeesns.zip
cd /opt/jeesns
<--將需要上傳的源碼放在這里-->

#創建碼雲倉庫並將信息信息和地址寫在目錄
git config --global user.name "weijixiang"
git config --global user.email "1354586675@qq.com"
git init
git add .
git commit -m "first commit"
git remote add origin git@gitee.com:weijixiang_god/jeesns.git
git push -u origin master

Jenkins創建job

添加一個項目

 

添加git倉庫地址:

編譯項目時清空緩存編譯:

執行腳本:

構建項目

注:這里訪問的是ip地址:8080/項目地址,如果想直接訪問就把鏈接到的地址改為tomcat下的ROOT

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM