Linux+Jenkins环境搭建以及自动部署django项目

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a877415861/article/details/74544086

一、Jenkins的优点

1、传统网站部署流程

  一般网站部署的流程 这边是完整流程而不是简化的流程
需求分析—原型设计—开发代码—内网部署-提交测试—确认上线—备份数据—外网更新-最终测试
,如果发现外网部署的代码有异常,需要及时回滚。

一般是运维来做 1、功能测试 2、上线的时间 3、 jenkins 4、运维 5、功能测试

2、Jenkins部署流程

  我们可以通过jenkins工具平台实现全自动部署+测试,是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins非常易于安装和配置,简单易用。
简单来说方便如下人员:

  1. 开发人员:写好代码,不需要自己进行源码编译、打包等工作,直接将代码分支存放在SVN、GIT仓库即可。 war 源码多 自动把代码放到服务器上面
  2. 运维人员:减轻人工干预的错误率,ansible 一键完成了 同时解放运维人员繁杂的上传代码、手动备份、更新
  3. 测试人员:可以通过jenkins进行简单的代码及网站测试

3、持续集成的意义 增加工作效率

  1. 持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量
  2. 持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能
  3. 持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心

4、持续集成的组件

  1. 一个自动构建过程,包括自动编译、分发、部署和测试
  2. 一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库,例如SVN、GIT代码库
  3. 一个jenkins持续集成服务器就是一个配置简单和使用方便的持续集成服务器

二、 jenkins安装

安装使用的基本环境为centos6.5

1、准备工作

  首先我们需要下载jenkins
  jenkins下载地址:http://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.60-1.1.noarch.rpm
  由于jenkins是使用java代码开发的,所以我们需要安装java容器才能运行jenkins
  需要安装JDK+Tomcat

yum -y install java-1.8.0-openjdk.x86_64   #安装1.8jdk

cd /opt  #进入opt目录

wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.79/bin/apache-tomcat-7.0.79.tar.gz  #获取tomcat7的安装包

tar xvf apache-tomcat-7.0.79.tar.gz   #解压tomcat7的解压包

mkdir /usr/local/tomcat -p  #在环境变量文件夹下创建tomcat文件夹

mv apache-tomcat-7.0.79/*  /usr/local/tomcat/  #将解压出来的tomcat文件夹的所有内容移到/usr/local/tomcat目录下

cd /opt #跳转到opt目录

wget http://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.60-1.1.noarch.rpm  #获取django安装包
rpm -ivh jenkins-2.60-1.1.noarch.rpm  #安装Jenkins安装包

/etc/init.d/jenkins start  #启动Jenkins

/usr/local/tomcat/bin/startup.sh    #启动tomcat
    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

django 1.7已经不支持python2.6 django 1.13.0

2、linux升级python

由于django1.7之后的版本就不支持python2.6了 所有需要我们升级python2.6–python2.7

yum -y install  zlib zlib-devel openssl openssl-devel  sqlite-devel   #安装依赖

cd /opt   #到opt文件夹

wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2    #下载Python压缩包

tar -jxvf Python-2.7.3.tar.bz2   #解压压缩包

cd Python-2.7.3      #进入Python解压包

./configure    --prefix=/usr/local/python2.7    #编译  设置编译所到的python文件夹

make  

make install 

cd /usr/bin/  

mv python  python2.6.bak   #备份文件

ln -s /usr/local/python2.7/bin/python /usr/bin/python #设置软连接到环境变量
    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
##输入python,如果出现以下界面,恭喜,安装成功

[root@centos1 Python-2.7.3]# python
Python 2.7.3 (default, Jul  6 2017, 07:19:39) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-18)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 
    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

install setuptools :如果要使用pip那么一定要安装setuptool不是没法安装pip

cd /opt

wget https://pypi.python.org/packages/61/3c/8d680267eda244ad6391fb8b211bd39d8b527f3b66207976ef9f2f106230/setuptools-1.4.2.tar.gz   #下载setuptools压缩包

tar xvf  setuptools-1.4.2.tar.gz   #解压缩压缩包

cd setuptools  #跳转到setuptools目录

python setup.py install  #用python命令执行安装文件

install pip  #安装pip

wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate #下载pip压缩缩包

tar xvf   pip-1.5.4.tar.gz  #解压 压缩包

cd pip-1.5.4 

python setup.py install  #用python命令执行安装文件

pip install django  #通过pip命令安装django
    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

因为jenkins使用8080端口,所以请监控8080的端口是否起来,判断jenkins又没有启动成功.

[root@centos1 bin]# netstat -tnlp
Proto Recv-Q Send-Q Local Address       Foreign Address      State       PID/Program name       
tcp        0      0 :::8080             :::*                 LISTEN      1502/java       
    
    
  • 1
  • 2
  • 3
 打开网站http://IP:8080
    
    
  • 1

三、部署项目

1 插件管理

 如果插件下载失败 更换源 http://mirror.xmission.com/jenkins/updates/current/update-center.json
因为我们只需要构建python项目 所以我们这边只需要3个插件

  1. git plugin
  2. python plugin
  3. pipeline

2 创建一个测试job webhook钩子

 只要收到一个push请求 就会发送一个post的请求给jenkins**

(1)第一步 创建项目
创建任务 名字 master-build 自由代码风格
这里写图片描述

(2) 丢弃旧的构建 (保留7天,最大构建的最大数100)
这里写图片描述
(3)码云获取HTTP地址 https://git.oschina.net/byz11211993/ceshi.git
这里写图片描述
(4)Jenkins中配置码云中的地址,并添加秘钥
这里写图片描述
这里写图片描述

秘钥生成方法

ssh-keygen -t rsa -C "[email protected]"
生成公钥和私钥
cat ~/.ssh/id_rsa.pub    发送给码云
cat ~/.ssh/id_rsa        写入到jenkins
    
    
  • 1
  • 2
  • 3
  • 4

(5)测试项目是否搭建成功
这里写图片描述

四、创建Django项目并测试同步

1、创建一个最简单的Django工程

这里写图片描述
这里写图片描述
在创建完成后将工程push到git码云

#用git将你的新建项目push到码云,并且在linux下载

python manage.py runserver 0.0.0.0:8000

#在浏览器输入网址查看是否成功显示
http://虚拟机ip:8000 
    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

这里写图片描述

2、继续配置jenkins任务

   * * * * *  
   在master-build中创建触发器,设定1分钟执行一次
   poll SCM(日常表 可以根据时间来判断)
   H/2 * * * *    (2分钟检查一下版本库  如果有更新就不触发  如果没有更新就不触发)
   注:Schedule的配置规则是有5个空格隔开的字符组成,从左到右分别代表:分 时 天 月 年。*代表所有,0 20 * * * 表示“在任何年任何月任何天20点0分”进行构建
    
    
  • 1
  • 2
  • 3
  • 4
  • 5

这里写图片描述

#构建 execute shell

cd xxx
python manage.py test #进入xxx目录并执行测试脚本

#构建后操作

#选择 email notifications
#输入你的邮箱  选中每次不稳定的构建都发送邮件
    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

这里写图片描述

 回到工作区,选择立即构建
 在Console Output 控制台输出
 如果出现以下内容,说明成功了
    
    
  • 1
  • 2
  • 3

这里写图片描述

3、配置触发器同步更新服务器代码

增加一个任务 master deploy

其他都不需要改  只需要改2个地方
    
    
  • 1
  • 2
  • 3
3.1 第一个地方

构建触发器

  Build after other projects are built (勾选这一项)
  projects to watch  (master_build)  当前一个动作构建成功后我才触发
    
    
  • 1
  • 2

这里写图片描述


3.2第二个地方

构建

cd xxx
BUILD_ID=DONTKILLME nohup python manage.py runserver 0.0.0.0:8000 &

BUILD_ID=DONTKILLME : 在jenkins里面在后台运行的程序都会被jenkins自动杀死  所以需要加上BUILDID这个参数 加了这个参数你的程序就不会被杀死
    
    
  • 1
  • 2
  • 3
  • 4

这里写图片描述

4、修改本地工程index.html代码

这里写图片描述
修改完成后,push提交到码云。

5、Jenkins同步代码查看

等待Jenkins每分钟刷新
这里写图片描述

当看到构建队列中存在构建时,等待构建完成刷新网页,查看我们的虚拟机上项目代码是否更新完成。
    
    
  • 1

这里写图片描述
刷新后发现代码已更新,表示我们的Jenkins自动部署已完成。

五、免密码登录

$ scp ~/.ssh/id_rsa.pub root@<remote_ip>:pub_key //将文件拷贝至远程服务器
$ cat ~/pub_key >>~/.ssh/authorized_keys //将内容追加到authorized_keys文件中, 不过要登录远程服务器来执行这条命令
    
    
  • 1
  • 2
                    <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-8cccb36679.css" rel="stylesheet">
            </div>
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a877415861/article/details/74544086

一、Jenkins的优点

1、传统网站部署流程

  一般网站部署的流程 这边是完整流程而不是简化的流程
需求分析—原型设计—开发代码—内网部署-提交测试—确认上线—备份数据—外网更新-最终测试
,如果发现外网部署的代码有异常,需要及时回滚。

一般是运维来做 1、功能测试 2、上线的时间 3、 jenkins 4、运维 5、功能测试

2、Jenkins部署流程

  我们可以通过jenkins工具平台实现全自动部署+测试,是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins非常易于安装和配置,简单易用。
简单来说方便如下人员:

  1. 开发人员:写好代码,不需要自己进行源码编译、打包等工作,直接将代码分支存放在SVN、GIT仓库即可。 war 源码多 自动把代码放到服务器上面
  2. 运维人员:减轻人工干预的错误率,ansible 一键完成了 同时解放运维人员繁杂的上传代码、手动备份、更新
  3. 测试人员:可以通过jenkins进行简单的代码及网站测试

3、持续集成的意义 增加工作效率

  1. 持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量
  2. 持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能
  3. 持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心

4、持续集成的组件

  1. 一个自动构建过程,包括自动编译、分发、部署和测试
  2. 一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库,例如SVN、GIT代码库
  3. 一个jenkins持续集成服务器就是一个配置简单和使用方便的持续集成服务器

二、 jenkins安装

安装使用的基本环境为centos6.5

1、准备工作

  首先我们需要下载jenkins
  jenkins下载地址:http://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.60-1.1.noarch.rpm
  由于jenkins是使用java代码开发的,所以我们需要安装java容器才能运行jenkins
  需要安装JDK+Tomcat

yum -y install java-1.8.0-openjdk.x86_64   #安装1.8jdk

cd /opt  #进入opt目录

wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.79/bin/apache-tomcat-7.0.79.tar.gz  #获取tomcat7的安装包

tar xvf apache-tomcat-7.0.79.tar.gz   #解压tomcat7的解压包

mkdir /usr/local/tomcat -p  #在环境变量文件夹下创建tomcat文件夹

mv apache-tomcat-7.0.79/*  /usr/local/tomcat/  #将解压出来的tomcat文件夹的所有内容移到/usr/local/tomcat目录下

cd /opt #跳转到opt目录

wget http://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.60-1.1.noarch.rpm  #获取django安装包
rpm -ivh jenkins-2.60-1.1.noarch.rpm  #安装Jenkins安装包

/etc/init.d/jenkins start  #启动Jenkins

/usr/local/tomcat/bin/startup.sh    #启动tomcat
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

django 1.7已经不支持python2.6 django 1.13.0

2、linux升级python

由于django1.7之后的版本就不支持python2.6了 所有需要我们升级python2.6–python2.7

yum -y install  zlib zlib-devel openssl openssl-devel  sqlite-devel   #安装依赖

cd /opt   #到opt文件夹

wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2    #下载Python压缩包

tar -jxvf Python-2.7.3.tar.bz2   #解压压缩包

cd Python-2.7.3      #进入Python解压包

./configure    --prefix=/usr/local/python2.7    #编译  设置编译所到的python文件夹

make  

make install 

cd /usr/bin/  

mv python  python2.6.bak   #备份文件

ln -s /usr/local/python2.7/bin/python /usr/bin/python #设置软连接到环境变量
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
##输入python,如果出现以下界面,恭喜,安装成功

[root@centos1 Python-2.7.3]# python
Python 2.7.3 (default, Jul  6 2017, 07:19:39) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-18)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

install setuptools :如果要使用pip那么一定要安装setuptool不是没法安装pip

cd /opt

wget https://pypi.python.org/packages/61/3c/8d680267eda244ad6391fb8b211bd39d8b527f3b66207976ef9f2f106230/setuptools-1.4.2.tar.gz   #下载setuptools压缩包

tar xvf  setuptools-1.4.2.tar.gz   #解压缩压缩包

cd setuptools  #跳转到setuptools目录

python setup.py install  #用python命令执行安装文件

install pip  #安装pip

wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate #下载pip压缩缩包

tar xvf   pip-1.5.4.tar.gz  #解压 压缩包

cd pip-1.5.4 

python setup.py install  #用python命令执行安装文件

pip install django  #通过pip命令安装django
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

因为jenkins使用8080端口,所以请监控8080的端口是否起来,判断jenkins又没有启动成功.

[root@centos1 bin]# netstat -tnlp
Proto Recv-Q Send-Q Local Address       Foreign Address      State       PID/Program name       
tcp        0      0 :::8080             :::*                 LISTEN      1502/java       
  
  
  • 1
  • 2
  • 3
 打开网站http://IP:8080
  
  
  • 1

三、部署项目

1 插件管理

 如果插件下载失败 更换源 http://mirror.xmission.com/jenkins/updates/current/update-center.json
因为我们只需要构建python项目 所以我们这边只需要3个插件

  1. git plugin
  2. python plugin
  3. pipeline

2 创建一个测试job webhook钩子

 只要收到一个push请求 就会发送一个post的请求给jenkins**

(1)第一步 创建项目
创建任务 名字 master-build 自由代码风格
这里写图片描述

(2) 丢弃旧的构建 (保留7天,最大构建的最大数100)
这里写图片描述
(3)码云获取HTTP地址 https://git.oschina.net/byz11211993/ceshi.git
这里写图片描述
(4)Jenkins中配置码云中的地址,并添加秘钥
这里写图片描述
这里写图片描述

秘钥生成方法

ssh-keygen -t rsa -C "[email protected]"
生成公钥和私钥
cat ~/.ssh/id_rsa.pub    发送给码云
cat ~/.ssh/id_rsa        写入到jenkins
  
  
  • 1
  • 2
  • 3
  • 4

(5)测试项目是否搭建成功
这里写图片描述

四、创建Django项目并测试同步

1、创建一个最简单的Django工程

这里写图片描述
这里写图片描述
在创建完成后将工程push到git码云

#用git将你的新建项目push到码云,并且在linux下载

python manage.py runserver 0.0.0.0:8000

#在浏览器输入网址查看是否成功显示
http://虚拟机ip:8000 
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

这里写图片描述

2、继续配置jenkins任务

   * * * * *  
   在master-build中创建触发器,设定1分钟执行一次
   poll SCM(日常表 可以根据时间来判断)
   H/2 * * * *    (2分钟检查一下版本库  如果有更新就不触发  如果没有更新就不触发)
   注:Schedule的配置规则是有5个空格隔开的字符组成,从左到右分别代表:分 时 天 月 年。*代表所有,0 20 * * * 表示“在任何年任何月任何天20点0分”进行构建
  
  
  • 1
  • 2
  • 3
  • 4
  • 5

这里写图片描述

#构建 execute shell

cd xxx
python manage.py test #进入xxx目录并执行测试脚本

#构建后操作

#选择 email notifications
#输入你的邮箱  选中每次不稳定的构建都发送邮件
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

这里写图片描述

 回到工作区,选择立即构建
 在Console Output 控制台输出
 如果出现以下内容,说明成功了
  
  
  • 1
  • 2
  • 3

这里写图片描述

3、配置触发器同步更新服务器代码

增加一个任务 master deploy

其他都不需要改  只需要改2个地方
  
  
  • 1
  • 2
  • 3
3.1 第一个地方

构建触发器

  Build after other projects are built (勾选这一项)
  projects to watch  (master_build)  当前一个动作构建成功后我才触发
  
  
  • 1
  • 2

这里写图片描述


3.2第二个地方

构建

cd xxx
BUILD_ID=DONTKILLME nohup python manage.py runserver 0.0.0.0:8000 &

BUILD_ID=DONTKILLME : 在jenkins里面在后台运行的程序都会被jenkins自动杀死  所以需要加上BUILDID这个参数 加了这个参数你的程序就不会被杀死
  
  
  • 1
  • 2
  • 3
  • 4

这里写图片描述

4、修改本地工程index.html代码

这里写图片描述
修改完成后,push提交到码云。

5、Jenkins同步代码查看

等待Jenkins每分钟刷新
这里写图片描述

当看到构建队列中存在构建时,等待构建完成刷新网页,查看我们的虚拟机上项目代码是否更新完成。
  
  
  • 1

这里写图片描述
刷新后发现代码已更新,表示我们的Jenkins自动部署已完成。

五、免密码登录

$ scp ~/.ssh/id_rsa.pub root@<remote_ip>:pub_key //将文件拷贝至远程服务器
$ cat ~/pub_key >>~/.ssh/authorized_keys //将内容追加到authorized_keys文件中, 不过要登录远程服务器来执行这条命令
  
  
  • 1
  • 2
                    <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-8cccb36679.css" rel="stylesheet">
            </div>

猜你喜欢

转载自blog.csdn.net/qw943571775/article/details/82686907