• 1--持续集成,代码管理工具Git


    一、软件开发生命周期

    软件开发生命周期又叫做SDLC(Software Development Life Cycle),它是集合了计划、开发、测试 和部署过程的集合 。

    • 需求分析:根据项目需求,团队执行一个可行性计划的分析。项目需求可能是公司内部或者客户提出的。这阶段主要是对信息的收集,也有可能是对现有项目的改善和重新做一个新的项目。还要分析项目的预算多长,可以从哪方面受益及布局,这也是项目创建的目标。

    • 设计:系统架构和满意状态(就是要做成什么样子,有什么功能)和创建一个项目计划。计划可以使用图表,布局设计挥着文字方式呈现。

    • 实现:项目经理创建和分配工作给开者,开发者根据任务和在设计阶段定义的目标进行开发代码。依据项目的大小和复杂程度,可以需要数月或更长时间才能完成

    • 测试:测试人员进行代码测试 ,包括功能测试、代码测试、压力测试等。

    • 进化:最后进阶段就是对产品不断的进化改进和维护阶段,根据用户的使用情况,可能需要对某功能进行修改,bug修复,功能增加等

    #  软件开发生命周期
    1、设计 ---> 需求分析
    
    2、实现
    	写配置清单,构建容器,部署一个测试环境
    3、测试
    4、优化(迭代)
    

    二、开发模式

    ### 1.敏捷开发  (Agile Development)  
    
    核心是迭代开发与增量开发
    
    ### 2.迭代开发  (Iterative Development)  
    
    对于大型软件项目,传统的开发方式是采用一个大周期(比如一年)进行开发,整个过程就是一次"大 开发";迭代开发的方式则不一样,它将开发过程拆分成多个小周期,即一次"大开发"变成多次"小开 发",每次小开发都是同样的流程,所以看上去就好像重复在做同样的步骤。
    
    ### 3.增量开发  (Incremental Development) 
    软件的每个版本,都会新增一个用户可以感知的完整功能。也就是说,按照新增功能来划分迭代。
    
    

    三、持续集成(CI)持续交付(CD)持续部署(CD)

    1.持续集成( Continuous integration )

    持续集成是软件开发周期的一种实践,把代码仓库(Gitlab或者Github)、构建工具(如Jenkins)和测试工具(SonarQube)集成在一起,频繁的将代码合并到主干然后自动进行构建和测试。持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。通过持续集成,团队可以快速的从一个功能到另一个功能。在持续集成的过程当中主要包括以下步骤:提交、测试、构建(容器需要构建, 编译型语言编译)、部署及回滚。

    1)持续集成要素

    # 1、一个自动构建过程,从检出代码、编译构建、运行测试、结果记录、测试统计等都是自动完成的,无需人工干预 
    # 2、 一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库,一般使用SVN或Git。
    # 3、 一个持续集成服务器, Jenkins 就是一个配置简单和使用方便的持续集成服务。
    

    2)持续集成的好处

    • 1、降低风险,由于持续集成不断去构建,编译和测试,可以很早期发现问题,所以修复的代价就少
    • 2、对系统健康持续检查,减少发布风险带来的问题
    • 3、减少重复性工作
    • 4、持续部署,提供可部署单元包
    • 5、持续交付可供使用的版本
    • 6、增强团队信心

    2.持续交付( Continuous Delivery )

    持续交付,简称CD,是在CI的基础进行了扩展,在CI环节完成了软件构建和测试工作并形成了新的版本,那么接下来就要进行交付,而这里的交付并不是交付到生产环境,而是类生产环境(STAGING),我们可以理解为灰度环境或者预发环境,进而接受部分真实流量的测试。如果没有问题的话则通过手动的方式部署到生产环境

    3.持续部署( Continuous Deployment )

    持续部署,简称CD,它是在持续交付的基础上打通最后一公里的工作,就是把手动部署到生产环境的方式升级为自动部署。看下图和上图在最后部署到生产环境中的区别。

    四、部署代码到服务器的方式

    # 1、早期两者方式
    1、将代码上传到服务器,然后解压
    
    2、将代码上传到服务器中,然后通过软连接的方式部署 ln -s /root/jenkins /usr/share/nginx/html/
    
    无法实现批量部署,无法实现批量回滚,更无法实现批量测试。
    # (ansible只是一个自动化部署工具,无法进行重复利用)
    

    以上两种方式都无法实现批量部署,无法实现批量回滚,更无法实现批量测试。

    • 实现自动集成(java、golang)、自动部署、自动测试: DevOps
    • 实现自动集成、自动部署:Jenkins
    • 代码类型:
    # 1、批量部署,批量测试
    
    1、源代码管理
    2、协同开发
    
    # 2、代码管理工具
    自动集成(java、golang)、自动部署、自动测试: DevOps
    代码:
    	编译型语言:需要编译,后运行
    	脚本型语言:直接运行
    
    • 工具种类:
    # 工具:
    实现自动集成、自动部署:Jenkins
    实现代码管理:git --giterb管理页面-> gitlab、github、gitee
    

    五、代码管理工具Git

    Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而是一个开放源码的版本控制软件。Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必有服务器端软件支持。

    1..安装Git

    # 1.安装git
    [root@jenkins ~]# yum install git -y
    [root@jenkins ~]# git  --version  #查看版本
    git version 1.8.3.1
    

    2.仓库

    仓库对应的就是一个目录,这个目录中的所有文件被git管理起来。以后会将一个项目的根目录,作为仓库。仓库中的每个文件的改动 都由git跟踪。

    #1.新建一个data本地仓库
    [root@jenkins ~]# mkdir data
    [root@jenkins ~]# cd data/
    
    #2.初始化代码仓库
    [root@jenkins data]# git init
    Initialized empty Git repository in /root/data/.git/
    初始化空的 Git 版本库于 /root/data/.git/
    [root@jenkins data]# ll -a
    total 0
    drwxr-xr-x  3 root root  18 Aug 11 23:47 .
    dr-xr-x---. 4 root root 207 Aug 11 23:47 ..
    drwxr-xr-x  7 root root 119 Aug 11 23:47 .git
    [root@jenkins data]# cd .git/  #这里存放的都是git的配置文件
    [root@jenkins .git]# ll
    total 12
    drwxr-xr-x 2 root root   6 Aug 11 23:47 branches
    -rw-r--r-- 1 root root  92 Aug 11 23:47 config
    -rw-r--r-- 1 root root  73 Aug 11 23:47 description
    -rw-r--r-- 1 root root  23 Aug 11 23:47 HEAD
    drwxr-xr-x 2 root root 242 Aug 11 23:47 hooks
    drwxr-xr-x 2 root root  21 Aug 11 23:47 info
    drwxr-xr-x 4 root root  30 Aug 11 23:47 objects
    drwxr-xr-x 4 root root  31 Aug 11 23:47 refs
    

    3.远程仓库

    # github   gitee   gitlab
    
    #1.下载远程仓库
    [root@jenkins ~]# git clone https://gitee.com/mming2021/data.git
    正克隆到 'data'...
    warning: 您似乎克隆了一个空版本库。
    
    #2.设置用户名和邮箱
    [root@git ~/data]# git config --global user.name "cdan2021"
    [root@git ~/data]# git config --global user.email "cdaneee@163.com" 
    
    #3.查看信息
    [root@git ~/data]# git config --get user.name
    can99
    [root@git ~/data]# git config --get user.email
    cdaneee@163.com
    
    #4.关联命令
    [root@jenkins data1]# git remote add origin git@gitee.com/cdan99/devops01.git
    
    #5.查看远程连接
    [root@k8s-m-01 data]# git remote -v
    origin	git@https://gitee.com/cdan99/devops01.git (fetch)
    origin	git@https://gitee.com/cdan99/devops01.git (push)
    或者
    [root@k8s-m-01 data]# cat .git/config 
    [core]
    	repositoryformatversion = 0
    	filemode = true
    	bare = false
    	logallrefupdates = true
    [remote "origin"]
    	url = git@https://gitee.com/cdan99/devops01.
    	fetch = +refs/heads/*:refs/remotes/origin/
    
    #6. 删除远程连接
    git remote rm origin 
    

    4.提交代码

    #1.创建源代码文件
    [root@git ~/data]# echo 'hello world' > index.html
    [root@git ~/data]# ll
    总用量 0
    -rw-r--r-- 1 root root 0 3月  24 06:09 index.html
    [root@git ~/data]# git status  #查看状态
    # 位于分支 master
    #
    # 初始提交
    #
    # 未跟踪的文件:
    #   (使用 "git add <file>..." 以包含要提交的内容)
    #
    #	index.html
    提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
    
    #注:此时的源代码还没有交给git管理,如果删除源代码文件,git不会有报错信息,代码会被彻底删除
    
    #2.将代码提交到git缓存区
    [root@git ~/data]# git add index.html #将本地目录中的index.html加入git从库
    [root@git ~/data]# git status
    # 位于分支 master
    #
    # 初始提交
    #
    # 要提交的变更:
    #   (使用 "git rm --cached <file>..." 撤出暂存区)
    #
    #	新文件:    index.html
    
    #注:此时源代码文件已经提交到git,如果此时删除源代码,文件不会被彻底删除,git查看会有报错信息,还可以使用git移回文件
    
    #3.将文件提交由缓冲区提交到暂存区中  
    [root@k8s-m-01 data]# git commit -m '注释'   #-m参数是添加注释,必须加上
    [master (root-commit) 288a856] 注释
     1 file changed, 1 insertion(+)
     create mode 100644 index.html
    
     # 注:添加到缓存区代码是可以修改的,修改后可以将修改的内容重新添加后暂存区。暂存区内容是不可以修改的。
     此时再查看状态是无内容
    [root@k8s-m-01 data]# git status
    # On branch master
    nothing to commit, working directory clean
    [root@k8s-m-01 data]# echo "hello cdan" > index.html  #重新写文件
    [root@k8s-m-01 data]# git status
    # On branch master
    # Changes not staged for commit:
    #   (use "git add <file>..." to update what will be committed)
    #   (use "git checkout -- <file>..." to discard changes in working directory)
    #
    #	modified:   index.html    #状态是修改了,必须再add,再commit
    #
    no changes added to commit (use "git add" and/or "git commit -a")
    
    
    #4.查看修改内容(+代表添加,-代表删除)
    [root@git ~/data]# git diff index.html
    diff --git a/index.html b/index.html
    index 3b18e51..ec6cee9 100644
    --- a/index.html
    +++ b/index.html
    @@ -1 +1,2 @@
     hello world
    +hello mm
    
    

    4.回滚

    #1.查看提交代码历史记录
    [root@jenkins data]# git log
    commit 3a47bf413ea47bba8d47e0f6c5220c768108fafe
    Author: elaina_mm <1715554782@qq.com>
    Date:   Thu Aug 12 00:06:42 2021 +0800
    
        init
    
    commit 0476939d64f6ef497a1a695865bf5a3fe64e0ebe
    Author: elaina_mm <1715554782@qq.com>
    Date:   Thu Aug 12 00:06:20 2021 +0800
    
        init
    commit 6c7e8316a6602fe199e933a2c740b7b15b310a24
    Author: Your Name <you@example.com>
    Date:   Wed Aug 11 23:57:35 2021 +0800
        init    
    #2.回滚 
    [root@jenkins data]# git reset 0476939d64f6ef497a1a695865bf5a3fe64e0ebe
    [root@jenkins data]# git reset --hard 425fb32d50f71f8f4a78e7037f58ff8869b40f7c  # 指定版本
    HEAD 现在位于 425fb32 init
    
    [root@gitlab baim0]# echo 111 > index.html 
    [root@gitlab baim0]# git reset --hard 
    HEAD is now at a08d617 first
    [root@gitlab baim0]# cat index.html 
    hello world
    

    5.将本地代码提交到远程仓库

    [root@git ~/data]# ssh-keygen -t rsa  #生成密钥
    [root@git ~/data]# cat /root/.ssh/id_rsa.pub #查看公钥,复制公钥到gitee上添加公钥(如下图)
    
    #4.将本地代码提交到远程仓库
    [root@k8s-m-02 jenkins]# git remote add origin git@gitee.com:cdan99/jenkins.git
    [root@k8s-m-02 jenkins]# git push origin master
    Counting objects: 3, done.
    Writing objects: 100% (3/3), 218 bytes | 0 bytes/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    remote: Powered by GITEE.COM [GNK-6.0]
    To git@gitee.com:cdan99/jenkins.git
     * [new branch]      master -> master
    
    
    #5.使用SSH将我们的代码提交到远程仓库
    [root@git ~/data]# vim .git/config   #修改配置文件
    [core]
    	repositoryformatversion = 0
    	filemode = true
    	bare = false
    	logallrefupdates = true
    [remote "origin"]
    	url = git@gitee.com:mming2021/data.git #将http修改成ssh方式
    	fetch = +refs/heads/*:refs/remotes/origin/*
    [branch "master"]
    	remote = origin
    	merge = refs/heads/master
    
    
    [root@git ~/data]# git push -u origin master  #免密提交
    The authenticity of host 'gitee.com (212.64.62.183)' can't be established.
    ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
    ECDSA key fingerprint is MD5:27:e5:d3:f7:2a:9e:eb:6c:93:cd:1f:c1:47:a3:54:b1.
    Are you sure you want to continue connecting (yes/no)? yes  # 输入yes直接上传
    Warning: Permanently added 'gitee.com,212.64.62.183' (ECDSA) to the list of known hosts.
    Counting objects: 5, done.
    Writing objects: 100% (3/3), 264 bytes | 0 bytes/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    remote: Powered by GITEE.COM [GNK-6.0]
    To git@gitee.com:mming2021/data.git
       338cf8c..ce7496f  master -> master
    Branch master set up to track remote branch master from origin.
    
    

    6.拉取远程仓库代码(获取代码)

    2种方式:
    *如果本地没有就去线上仓库 git clone  *如果本地有仓库代码 git pull
    
    # 1、另外一个人也在登录git账号
    [root@jenkins ~]# mkdir jenkins
    [root@jenkins ~]# cd jenkins/
    [root@jenkins jenkins]# git clone  git@gitee.com:cdan99/jenkins.git
    
    # 2、进入仓库修改内码
    [root@jenkins jenkins]# cd data/
    [root@git ~/data]# vim index.html 
    hello world
    
    # 3、提取到仓库
    [root@git ~/data]# git add index.html
    [root@git ~/data]# git commit -m 'init'
    [master 330e53a] init
     1 file changed, 1 insertion(+), 2 deletions(-)
    [root@git ~/data]# git push -u origin master  #发送到gitee
    
    # 4、在另一个终端查看
    [root@git ~/data]# git pull
    [root@git ~/data]# cat index.html 
    hello world
    
     # git pull 和 git clone 之间有什么不同?
     1、git pull  是更新代码:在现有的仓库里将远程修改过的代码更新到本地仓库
     2、git clone 是下载代码:需要创建仓库,本地仓库与远程仓库连接起来
    

    7.分支(不同分支之间是相对隔离的)

    # 房子 ---> 房间
    # git仓库  ---> 代表是房间
    
    不同的分支之间是相对隔离的。
    
    代码仓库:cdan99
    
    开发环境
    测试环境
    预发布环境
    线上环境
    
    #1.查看本地分支
    [root@git ~/data]# git branch  #必须在存放内码的目录,否则无效
    * master  #默认的master分支
    
    #2.查看所有的分支
    [root@git ~/data]# git branch -a
    * master
      remotes/origin/master  #远程分支
    
    #3.创建分支
    [root@git ~/data]# git checkout -b test
    切换到一个新分支 'test'
    [root@git ~/data]# git branch
      master
    * test
    
    #4.修改内码
    [root@git ~/data]# echo “who is longlong" > index.html 
    [root@git ~/data]# git add index.html
    [root@git ~/data]# git commit -m 'init'
    [root@git ~/data]# git push origin test  #此时test分支的index.html改了
    
    #5.将本地分支同步到远程分支
    [root@git ~/data]# git branch  #前提要保证当前在要同步的分支上
      master
    * test
    [root@git ~/data]# git push -u origin test 
    Total 0 (delta 0), reused 0 (delta 0)
    remote: Powered by GITEE.COM [GNK-6.0]
    remote: Create a pull request for 'test' on Gitee by visiting:
    remote:     https://gitee.com/mming2021/data/pull/new/mming2021:test...mming2021:master
    To git@gitee.com:mming2021/data.git
     * [new branch]      test -> test
    分支 test 设置为跟踪来自 origin 的远程分支 test。
    
    #5.切换分支
    [root@git ~/data]# git checkout master
    切换到分支 'master'
    [root@git ~/data]# git branch  # *在那个分支就代表那个分支
    * master
      test
     
    # 获取指定分支
    [root@k8s-m-02 jenkins]# git clone -b dang git@gitee.com:cdan99/jenkins.git 
    
    #7.查看分支 -- 见下图
    

    8.标签(是一种特殊的分支,只能删除不能修改)

    #代码上传之后打上标签
    # 本地创建标签
    # 1.本地创建
    git tag -a [tag名称] -m "解释"
    [root@git ~/data]# git tag -a v1-stable -m '第一个标签'
    [root@git ~/data]# git tag
    v1-stable
    # 远程创建标签
    # 2.远程仓库创建鼠标点点
    /标签/创建标签
    # 3.另一个终端查看 (标签自动创建)
    [root@git ~/data]# git pull
    [root@git ~/data]# git branch -a
    * master
      remotes/origin/HEAD -> origin/master
      remotes/origin/master
      remotes/origin/test
    [root@git ~/data]# git tag
    v1-stable
    [root@git ~/data]# cat index.html 
    hdello world
    hello mm
    hello mm
    hello mm
    # 4.拉取指定标签内容
    git clone -b [标签名称|分支名称] [仓库地址]
    [root@git ~/data]# git clone git@gitee.com:mming2021/data.git #默认是master
    [root@git ~/data]# git clone -b master git@gitee.com:mming2021/data.git
    [root@git ~/data]# git clone -b master v1-stable  git@gitee.com:mming2021/data.git # 指定标签
    正克隆到 'data'...
    remote: Enumerating objects: 7, done.
    remote: Counting objects: 100% (7/7), done.
    remote: Compressing objects: 100% (4/4), done.
    remote: Total 7 (delta 0), reused 0 (delta 0), pack-reused 0
    接收对象中: 100% (7/7), done.
    
    

    六、练习

    # 1、实现脚本通过标签部署discuz
    1、准备代码
    2、提交的git暂存区
    3、配置用户名和邮箱
    4、提交
    5、推送(认证)
    6、创建标签
    7、编写部署脚本
    

    创建本地仓库,关联上远程仓库,并实现脚本通过标签部署discuz

    #1.创建本地仓库
    [root@jenkins ~]# mkdir data1
    [root@jenkins ~]# cd data1
    [root@jenkins data1 ~]# git init
    初始化空的 Git 版本库于 /root/data1/.git/
    
    #2.将本地仓库关联上远程仓库(前提要有远程仓库)
    [root@jenkins data1]# git remote add origin git@gitee.com:mming2021/data-discuz.git  #关联命令
    [root@jenkins data1]# cat .git/config  #关联远程仓库后的配置文件
    [core]
    	repositoryformatversion = 0
    	filemode = true
    	bare = false
    	logallrefupdates = true
    [remote "origin"]
    	url = git@gitee.com:mming2021/data-discuz.git  #远程仓库的地址
    	fetch = +refs/heads/*:refs/remotes/origin/*
    
    #3.准备discuz包
    [root@jenkins data1]# mkdir discuz
    [root@jenkins data1]# mv Discuz_X3.4_SC_UTF8_20210320.zip discuz/
    [root@jenkins data1]# cd discuz/
    [root@jenkins discuz]# unzip Discuz_X3.4_SC_UTF8_20210320.zip 
    总用量 12172
    -rw-r--r--  1 root root 12330468 4月   7 2021 Discuz_X3.4_SC_UTF8_20210320.zip
    -rw-r--r--  1 root root    17886 3月  20 10:36 LICENSE
    -rw-r--r--  1 root root    31040 1月  19 17:18 qqqun.png
    drwxr-xr-x  2 root root      124 3月  22 19:44 readme
    -rw-r--r--  1 root root    71107 1月  19 17:20 readme.html
    drwxr-xr-x 13 root root     4096 3月  22 19:44 upload
    drwxr-xr-x  4 root root       94 3月  22 19:44 utility
    [root@jenkins discuz]# mv upload/* /root/data1/
    [root@jenkins discuz]# cd ..
    [root@jenkins data1]# rm -rf discuz/
    [root@jenkins data1]# ll
    总用量 68
    -rw-r--r--  1 root root 2834 3月  22 19:44 admin.php
    drwxr-xr-x  9 root root  135 3月  22 19:44 api
    -rw-r--r--  1 root root  727 3月  22 19:44 api.php
    drwxr-xr-x  2 root root   23 3月  22 19:44 archiver
    drwxr-xr-x  2 root root   90 3月  22 19:44 config
    -rw-r--r--  1 root root 1040 3月  22 19:44 connect.php
    -rw-r--r--  1 root root  106 3月  22 19:44 crossdomain.xml
    drwxr-xr-x 12 root root  178 3月  22 19:44 data
    drwxr-xr-x  5 root root  140 4月   6 06:39 discuz
    -rw-r--r--  1 root root 5558 3月  20 10:36 favicon.ico
    -rw-r--r--  1 root root 2245 3月  22 19:44 forum.php
    -rw-r--r--  1 root root  821 3月  22 19:44 group.php
    -rw-r--r--  1 root root 1280 3月  22 19:44 home.php
    -rw-r--r--  1 root root 6472 3月  22 19:44 index.php
    drwxr-xr-x  5 root root   64 3月  22 19:44 install
    drwxr-xr-x  2 root root   23 3月  22 19:44 m
    -rw-r--r--  1 root root 1025 3月  22 19:44 member.php
    -rw-r--r--  1 root root 2371 3月  22 19:44 misc.php
    -rw-r--r--  1 root root 1788 3月  22 19:44 plugin.php
    -rw-r--r--  1 root root  977 3月  22 19:44 portal.php
    -rw-r--r--  1 root root  582 3月  22 19:44 robots.txt
    -rw-r--r--  1 root root 1155 3月  22 19:44 search.php
    drwxr-xr-x 10 root root  168 3月  22 19:44 source
    drwxr-xr-x  7 root root   86 3月  22 19:44 static
    drwxr-xr-x  3 root root   38 3月  22 19:44 template
    drwxr-xr-x  7 root root  106 3月  22 19:44 uc_client
    drwxr-xr-x 13 root root  241 3月  22 19:44 uc_server
    #4.将diacuz所有文件添加到远程仓库
    [root@jenkins data1]# git add . #代表当前目录下的所有文件提交到暂存区
    [root@jenkins data1]# git config --global user.name "mming2021"
    [root@jenkins data1]# git config --global user.email "1715554782@qq.com"
    [root@jenkins data1]# git commit -m 'init' .
    
    #5.将公钥添加到gitee
    [root@jenkins data1]# cat ~/.ssh/id_rsa.pub 
    复制粘贴公钥内容到gitee设置内添加
    #6.推送到远程仓库
    [root@jenkins data1]# git push -u origin master
    #查看gitee仓库就自动更新了
    #7.代码推送成功后可以在gitee上创建一个标签,代码就无法修改了
    /标签/创建标签/
    #8.编写部署脚本
    [root@jenkins ~]# mkdir -pv /usr/share/nginx/html
    
    [root@jenkins ~]# vim discux.sh
    #/bin/bash
    
    REPOASITORY=discuz-`date +%F_%H:%M:%S`
    REPOASITORY_URL="git@gitee.com:mming2021/data-discuz.git"
    REPOASITORY_TAG=$1
    CURRENT_DIR=`pwd`  #当前路径
    echo $1
    git clone -b ${REPOASITORY_TAG} ${REPOASITORY_URL} ${REPOASITORY}
    rm -rf /usr/share/nginx/html
    ln -s ${CURRENT_DIR}/${REPOASITORY} /usr/share/nginx/html
    
    #9.执行脚本
    [root@jenkins ~]# chmod +x discux.sh 
    [root@jenkins ~]# ./discux.sh v1-stable
    #10.查看是否挂载成功
    [root@jenkins ~]#  ll /usr/share/nginx/
    total 0
    lrwxrwxrwx 1 root root 32 Aug 12 12:03 html -> /root/discuz-2021-08-12_12:03:52
    # 11.查看部署文件
    [root@jenkins ~]# ll
    -rwxr-xr-x   1 root root  311 Aug 12 12:03 discux.sh
    drwxr-xr-x  14 root root 4096 Aug 12 12:03 discuz-2021-08-12_12:03:52
    
    

  • 相关阅读:
    jdbc连接池中c3p0的配置文件的详解以及在在java中如何使用
    idea导入myeclipes项目、运行项目
    java中身份证号和的银行卡的深度校验
    springBoot的搭建使用记录
    java分模块项目在idea中使用maven打包失败(ps:maven常用到的命令)
    js获取当前页面相关信息
    mybatis使用中的记录
    tomcat服务的启动与隐藏启动(win)
    cmd命令关闭占用程序的端口
    ping端口是否开放(windows,macos,linux)
  • 原文地址:https://www.cnblogs.com/caodan01/p/15144099.html
Copyright © 2020-2023  润新知