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

一、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

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 #设置软连接到环境变量
##输入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.
>>> 

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

因为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       
 打开网站http://IP:8080

三、部署项目

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 自由代码风格
Linux+Jenkins环境搭建以及自动部署django项目_第1张图片

(2) 丢弃旧的构建 (保留7天,最大构建的最大数100)
Linux+Jenkins环境搭建以及自动部署django项目_第2张图片
(3)码云获取HTTP地址 https://git.oschina.net/byz11211993/ceshi.git
Linux+Jenkins环境搭建以及自动部署django项目_第3张图片
(4)Jenkins中配置码云中的地址,并添加秘钥
Linux+Jenkins环境搭建以及自动部署django项目_第4张图片
Linux+Jenkins环境搭建以及自动部署django项目_第5张图片

秘钥生成方法

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

(5)测试项目是否搭建成功
Linux+Jenkins环境搭建以及自动部署django项目_第6张图片

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

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

Linux+Jenkins环境搭建以及自动部署django项目_第7张图片
Linux+Jenkins环境搭建以及自动部署django项目_第8张图片
在创建完成后将工程push到git码云

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

python manage.py runserver 0.0.0.0:8000

#在浏览器输入网址查看是否成功显示
http://虚拟机ip:8000 

Linux+Jenkins环境搭建以及自动部署django项目_第9张图片

2、继续配置jenkins任务

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

Linux+Jenkins环境搭建以及自动部署django项目_第10张图片

#构建 execute shell

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

#构建后操作

#选择 email notifications
#输入你的邮箱  选中每次不稳定的构建都发送邮件

Linux+Jenkins环境搭建以及自动部署django项目_第11张图片

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

Linux+Jenkins环境搭建以及自动部署django项目_第12张图片

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

增加一个任务 master deploy

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

构建触发器

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

Linux+Jenkins环境搭建以及自动部署django项目_第13张图片


3.2第二个地方

构建

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

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

Linux+Jenkins环境搭建以及自动部署django项目_第14张图片

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

Linux+Jenkins环境搭建以及自动部署django项目_第15张图片
修改完成后,push提交到码云。

5、Jenkins同步代码查看

等待Jenkins每分钟刷新
Linux+Jenkins环境搭建以及自动部署django项目_第16张图片

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

Linux+Jenkins环境搭建以及自动部署django项目_第17张图片
刷新后发现代码已更新,表示我们的Jenkins自动部署已完成。

五、免密码登录

$ scp ~/.ssh/id_rsa.pub root@:pub_key //将文件拷贝至远程服务器
$ cat ~/pub_key >>~/.ssh/authorized_keys //将内容追加到authorized_keys文件中, 不过要登录远程服务器来执行这条命令

你可能感兴趣的:(Linux,jenkins)