Reference:  http://blog.csdn.net/GitChat/article/details/78271099?locationNum=3&fps=1

【不要错过文末彩蛋】

一、简介

一般网站部署的流程如下:

需求分析—原型设计—开发代码—内网部署-提交测试—确认上线—备份数据—外网更新-最终测试,如果发现外网部署的代码有异常,需要及时回滚

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

  • 简单来说方便如下人员:

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

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

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

二、安装jenkins

由于jenkins是使用java代码开发的,所以我们需要安装java容器才能运行jenkins,又因为java的web服务器用的是tomcat,所以我们要安装JDK+Tomcat

安装JDK+Tomcat:

  1. [root@vagrant-centos65 ~]# yum -y install java-1.8.0-openjdk.x86_64
  2. [root@vagrant-centos65 ~]# cd /opt/
  3. [root@vagrant-centos65 opt]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.81/bin/apache-tomcat-7.0.81.tar.gz
  4. [root@vagrant-centos65 opt]# tar zxvf apache-tomcat-7.0.81.tar.gz
  5. [root@vagrant-centos65 opt]# mkdir -p /usr/local/tomcat
  6. [root@vagrant-centos65 opt]# mv apache-tomcat-7.0.81/* /usr/local/tomcat

安装jenkins:

  1. [root@vagrant-centos65 ~]# cd /opt/
  2. [root@vagrant-centos65 opt]# wget http://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.60-1.1.noarch.rpm
  3. [root@vagrant-centos65 opt]# rpm -ivh jenkins-2.60-1.1.noarch.rpm
  4. [root@vagrant-centos65 opt]# /etc/init.d/jenkins start
  5. Starting Jenkins [ OK ]
  6. [root@vagrant-centos65 opt]# netstat -tnlp | grep 8080
  7. [root@vagrant-centos65 opt]# /etc/init.d/jenkins start
  8. Starting Jenkins [ OK ]
  9. [root@vagrant-centos65 opt]# netstat -tnlp | grep 8080
  10. tcp 0 0 :::8080 :::* LISTEN 7599/java

注意:有的时候需要启动二次jenkins。

三、创建远程仓库

在码云注册一个账号并创建一个项目。

1)创建代码库:我这里使用的是码云。

  1. [root@vagrant-centos65 opt]# mkdir test-git
  2. [root@vagrant-centos65 opt]# git clone git@git.oschina.net:ZhiLiaoAWen/test.git test-git/

2)创建公钥和私钥:

  1. [root@vagrant-centos65 opt]# ssh-keygen -t rsa -C "zhiliao@awen.com"
  2. Generating public/private rsa key pair.
  3. Enter file in which to save the key (/root/.ssh/id_rsa):
  4. Enter passphrase (empty for no passphrase):
  5. Enter same passphrase again:
  6. Your identification has been saved in /root/.ssh/id_rsa.
  7. Your public key has been saved in /root/.ssh/id_rsa.pub.
  8. The key fingerprint is:
  9. ca:f6:1d:56:93:b0:c3:09:70:96:cd:19:98:d7:53:68 zhiliao@awen.com
  10. The key's randomart image is:
  11. +--[ RSA 2048]----+
  12. | . o*.+ o. |
  13. | ++ = E |
  14. | .... . |
  15. | o + . |
  16. | S = + |
  17. | . . o . |
  18. | + o |
  19. | . . o . |
  20. | . . |
  21. +-----------------+
  22. # 三次回车即可生成 ssh key
  23. [root@vagrant-centos65 opt]# cat ~/.ssh/id_rsa.pub
  24. ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA8n0uaD1t3HRWDxFcBXp769peImctPfBjTV2b3Co6jyzW9FLrVouuvK793hrigi/KYBN//Bewz1Hb7b9mxBMyfWOw9tHBJo4JOk/v6fhAGZf0yFO53wFG3yKCYuwypzbIPZiwrUPbuB12jLiWoR/aSlrDsd3/Y6155g6FZOfp+jnRcAwzlP/Jed066JeeI0eTIiz9qR2pzGzYK+QPwdHur/ZMYvoKep+NBBuly4l2rjtQpoKGdrZtseHNciWrqE4TqyTmJ/jvEyZH1ZAww5E69AoAqGgP7J24GwH5JaT3Ykz9hPb4yeylOs6aNGBt47WtJ8INpJtdj3oot/GnRNyGXQ== zhiliao@awen.com

3)把这个公钥添加到码云上:

4)同步代码:

  1. [root@vagrant-centos65 opt]# git clone git@git.oschina.net:ZhiLiaoAWen/test.git test-git/

四、升级python 2.6到python 2.7

由于jdnago 1.7之后的版本就不支持python 2.6了,所以我们需要升级python 2.6-2.7。

  1. [root@vagrant-centos65 ~]# yum -y install zlib zlib-devel openssl openssl-devel sqlite-devel
  2. [root@vagrant-centos65 ~]# wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2
  3. [root@vagrant-centos65 ~]# tar -jxvf Python-2.7.3.tar.bz2
  4. [root@vagrant-centos65 ~]# cd Python-2.7.3
  5. [root@vagrant-centos65 Python-2.7.3]# ./configure --prefix=/usr/local/python2.7
  6. [root@vagrant-centos65 Python-2.7.3]# make && make install
  7. [root@vagrant-centos65 Python-2.7.3]# cd /usr/bin/
  8. [root@vagrant-centos65 bin]# ll | grep python
  9. -rwxr-xr-x. 2 root root 4864 Nov 22 2013 python
  10. lrwxrwxrwx. 1 root root 6 Jan 16 2014 python2 -> python
  11. -rwxr-xr-x. 2 root root 4864 Nov 22 2013 python2.6
  12. [root@vagrant-centos65 bin]# mv python python2.6.bak
  13. [root@vagrant-centos65 bin]# ln -s /usr/local/python2.7/bin/python /usr/bin/python
  14. [root@vagrant-centos65 bin]# vi /usr/bin/yum
  15. #!/usr/bin/python2.6

五、安装django

安装setuptools:pip的安装需要依赖setuptools。其实是pip的安装setup.py有这样一条代码from setuptools import setup:

  1. [root@vagrant-centos65 bin]# cd /opt/
  2. [root@vagrant-centos65 opt]# wget https://pypi.python.org/packages/61/3c/8d680267eda244ad6391fb8b211bd39d8b527f3b66207976ef9f2f106230/setuptools-1.4.2.tar.gz
  3. [root@vagrant-centos65 opt]# tar zxvf setuptools-1.4.2.tar.gz
  4. [root@vagrant-centos65 opt]# cd setuptools-1.4.2
  5. [root@vagrant-centos65 setuptools-1.4.2]# python setup.py install

安装pip:

  1. [root@vagrant-centos65 ~]# cd /opt/
  2. [root@vagrant-centos65 opt]# wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate
  3. [root@vagrant-centos65 opt]# tar zxvf pip-1.5.4.tar.gz
  4. [root@vagrant-centos65 opt]# cd pip-1.5.4
  5. [root@vagrant-centos65 pip-1.5.4]# python setup.py install
  6. [root@vagrant-centos65 pip-1.5.4]# pip
  7. -bash: pip: command not found
  8. [root@vagrant-centos65 pip-1.5.4]# find / -name pip
  9. /usr/local/python2.7/bin/pip
  10. [root@vagrant-centos65 pip-1.5.4]# ln -s /usr/local/python2.7/bin/pip /usr/bin/pip

安装django:

  1. [root@vagrant-centos65 pip-1.5.4]# pip install django
  2. [root@vagrant-centos65 pip-1.5.4]# pip list
  3. Django (1.11.3)
  4. pip (1.5.4)
  5. pytz (2017.2)
  6. setuptools (1.4.2)
  7. wsgiref (0.1.2)

六、安装插件

1)更换更新插件源 国内连接块的地址地址: 
http://mirror.xmission.com/jenkins/updates/current/update-center.json

2)安装自动部署的项目所需要的插件:

还需要安装的插件:

创建远程主机。第一步添加凭证:

七、创建django项目

  1. #创建django项目
  2. [root@vagrant-centos65 test-git]# django-admin startproject test11
  3. #出现了一个test11目录就是我们的django项目的容器
  4. [root@vagrant-centos65 test-git]# ll
  5. total 8
  6. -rw-r--r-- 1 root root 29 Sep 15 12:55 README.md
  7. drwxr-xr-x 3 root root 4096 Sep 15 14:55 test11
  8. #创建一个django app 创建静态模板目录 templates
  9. [root@vagrant-centos65 test11]# python manage.py startapp test22
  10. [root@vagrant-centos65 test11]# mkdir templates
  11. #修改django配置文件
  12. [root@vagrant-centos65 test11]# vim test11/settings.py
  13. TEMPLATES = [
  14. {
  15. 'BACKEND': 'django.template.backends.django.DjangoTemplates',
  16. 'DIRS': [BASE_DIR+"/templates",],
  17. #添加test22
  18. INSTALLED_APPS = [
  19. 'django.contrib.admin',
  20. 'django.contrib.auth',
  21. 'django.contrib.contenttypes',
  22. 'django.contrib.sessions',
  23. 'django.contrib.messages',
  24. 'django.contrib.staticfiles',
  25. 'test22',
  26. ]
  27. #修改3个文件
  28. [root@vagrant-centos65 test11]# cat templates/index.html
  29. <h1>hello zhiliaoawen<h1>
  30. [root@vagrant-centos65 test11]# cat test22/views.py
  31. # -*- coding: utf-8 -*-
  32. from __future__ import unicode_literals
  33. from django.shortcuts import render
  34. # Create your views here.
  35. def index(request):
  36. return render(request, 'index.html')
  37. [root@vagrant-centos65 test11]# cat test11/urls.py
  38. from django.conf.urls import url
  39. from django.contrib import admin
  40. from test22 import views
  41. urlpatterns = [
  42. url(r'^admin/', admin.site.urls),
  43. url(r'^$',views.index)
  44. ]
  45. #启动django
  46. [root@vagrant-centos65 test11]# python manage.py runserver 0.0.0.0:8000

结果,我们在访问django的时候可以看到页面 hello zhiliaoawen。

把项目提交到码云:

  1. [root@vagrant-centos65 test-git]# git add test11/
  2. [root@vagrant-centos65 test-git]# git commit -m 'test django'
  3. [master cf58679] test django
  4. Committer: root <root@vagrant-centos65.vagrantup.com>
  5. Your name and email address were configured automatically based
  6. on your username and hostname. Please check that they are accurate.
  7. You can suppress this message by setting them explicitly:
  8. git config --global user.name "Your Name"
  9. git config --global user.email you@example.com
  10. If the identity used for this commit is wrong, you can fix it with:
  11. git commit --amend --author='Your Name <you@example.com>'
  12. 20 files changed, 202 insertions(+), 0 deletions(-)
  13. create mode 100644 test11/db.sqlite3
  14. create mode 100755 test11/manage.py
  15. create mode 100644 test11/templates/index.html
  16. create mode 100644 test11/test11/__init__.py
  17. create mode 100644 test11/test11/__init__.pyc
  18. create mode 100644 test11/test11/settings.py
  19. create mode 100644 test11/test11/settings.pyc
  20. create mode 100644 test11/test11/urls.py
  21. create mode 100644 test11/test11/urls.pyc
  22. create mode 100644 test11/test11/wsgi.py
  23. create mode 100644 test11/test11/wsgi.pyc
  24. create mode 100644 test11/test22/__init__.py
  25. create mode 100644 test11/test22/__init__.pyc
  26. create mode 100644 test11/test22/admin.py
  27. create mode 100644 test11/test22/admin.pyc
  28. create mode 100644 test11/test22/apps.py
  29. create mode 100644 test11/test22/migrations/__init__.py
  30. create mode 100644 test11/test22/migrations/__init__.pyc
  31. create mode 100644 test11/test22/models.py
  32. create mode 100644 test11/test22/models.pyc
  33. create mode 100644 test11/test22/tests.py
  34. create mode 100644 test11/test22/views.py
  35. create mode 100644 test11/test22/views.pyc
  36. [root@vagrant-centos65 test-git]# git config --global user.name "zhiliaoawen"
  37. [root@vagrant-centos65 test-git]# git config --global user.email 44262769@qq.com
  38. [root@vagrant-centos65 test-git]# git push
  39. Counting objects: 29, done.
  40. Compressing objects: 100% (25/25), done.
  41. Writing objects: 100% (28/28), 7.02 KiB, done.
  42. Total 28 (delta 2), reused 0 (delta 0)
  43. To git@git.oschina.net:ZhiLiaoAWen/test.git
  44. 47edbdc..cf58679 master -> master
  45. #哈哈代码提交成功了

八、创建测试任务

公钥和私钥分配:

  1. [root@vagrant-centos65 ~]# ssh-keygen -t rsa -C "xxxx@qq.com"
  2. cat ~/.ssh/id_rsa.pub 发送给码云
  3. cat ~/.ssh/id_rsa 写入到jenkins

九、创建内网部署任务

注意:

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

十、创建外网部署任务

远程主机要做的事情:

  1. 安装django
  2. 创建一个目录把代码版本库拉取到本地
  3. 写脚本来运行你代码 
    脚本内容

xxx.sh:

  1. [root@vagrant-centos65 data]# cat xxx.sh
  2. #!/bin/bash
  3. cd /data
  4. sh start.sh

start.sh:

  1. [root@vagrant-centos65 data]# cat start.sh
  2. #!/bin/bash
  3. cd /data/git-test
  4. git pull
  5. cd /data/git-test/test11
  6. nohup python manage.py runserver 0.0.0.0:8000 > /dev/null 2>&1 &

远端服务部署成功

【GitChat达人课】

  1. 前端恶棍 · 大漠穷秋 :《Angular 初学者快速上手教程
  2. Python 中文社区联合创始人 · Zoom.Quiet :《GitQ: GitHub 入味儿
  3. 前端颜值担当 · 余博伦:《如何从零学习 React 技术栈
  4. GA 最早期使用者 · GordonChoi:《GA 电商数据分析实践课
  5. 技术总监及合伙人 · 杨彪:《Gradle 从入门到实战
  6. 混元霹雳手 · 江湖前端:《Vue 组件通信全揭秘
  7. 知名互联网公司安卓工程师 · 张拭心:《安卓工程师跳槽面试全指南

Jenkins + Django 完整实战,细化到每一步操作的更多相关文章

  1. BI之SSAS完整实战教程7 -- 设计维度、细化维度中 :浏览维度,细化维度

    上篇文章我们已经将Dim Geography维度设计好. 若要查看维度的成员, AS需要接收该维度的详细信息(包括已创建的特性.成员属性以及多级层次结构), 通过XMLA与AS的实例进行通信. 今天我 ...

  2. BI之SSAS完整实战教程6 -- 设计维度、细化维度上:创建维度定义特性关系

    前面我们使用过数据源向导.数据源视图向导.Cube向导来创建相应的对象. 本篇我们将学习使用维度向导来创建维度. 通过前面几个向导的学习,我们归纳一下共同点,主要分成两步 1. 使用某种对象类型的向导 ...

  3. Django高级实战 开发企业级问答网站完整

    资源获取链接点击这里 Django高级实战 开发企业级问答网站 从实际需求分析开始,实现当今主流知识问答应用的功能,包括动态.文章.问答.私信.消息通知.搜索.个人中心,打造企业级知识问答网站,由此全 ...

  4. BI之SSAS完整实战教程2 -- 开发环境介绍及多维数据集数据源准备

    上一篇我们已经完成所有的准备工作,现在我们就开始动手,通过接下来的三篇文章创建第一个多维数据集. 传统的维度和多维数据集设计方法主要是基于现有的单源数据集. 在现实世界中,当开发商业智能应用程序时,很 ...

  5. BI之SSAS完整实战教程1 -- 开篇, BI简介 & SSAS简介

    文章提纲 商业智能(BI, Business Intelligence)基本概念 SSAS(SQL Server Analysis Services)相关工具(开发.管理和客户端) 总结 一.商业智能 ...

  6. 第二十章 Django数据库实战

    第二十章 Django数据库实战 第一课 获取单表单数据的三种方式: urls.py中的路由代码: path('busniess',views.busniess), views.py中代码: def ...

  7. [实战]MVC5+EF6+MySql企业网盘实战(21)——网盘操作日志

    写在前面 上篇文章介绍了一个bootstrap的分页插件,这篇将弄一个完整的例子,就以日志分页为例说明如何请求服务端然后进行分页. 系列文章 [EF]vs15+ef6+mysql code first ...

  8. day 69 Django基础五之django模型层(一)单表操作

    Django基础五之django模型层(一)单表操作   本节目录 一 ORM简介 二 单表操作 三 章节作业 四 xxx 一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现 ...

  9. day 55 Django基础五之django模型层(一)单表操作

      Django基础五之django模型层(一)单表操作   本节目录 一 ORM简介 二 单表操作 三 章节作业 四 xxx 一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它 ...

随机推荐

  1. Tomcat 6 部署工程总结,使用JNDI数据源配置

    工程需要用JNDI数据源方式部署到tomcat,参考网上文章后,经过配置测试,摸索出来了.     环境说明: 数据库:Oracle9i Web服务器:tomcat-6.0.33 tomcat启动方式 ...

  2. Fedora下安装deb包方法

    Linux系统提供一个软件alien, 使用它能够把deb包转换成各种格式. 1. 使用yum install alien 2. 安装完成后,执行 alien -r XXXXX.deb, 即可转换成对 ...

  3. socket编程及API简介

    什么是TCP/IP.UDP? TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域 ...

  4. HDU 4648 Magic Pen 6 (。。。。。。。。。。)

    Magic Pen 6 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...

  5. A. Candy Bags

    A. Candy Bags http://codeforces.com/problemset/problem/334/A   time limit per test 1 second memory l ...

  6. OpenCV 学习笔记03 threshold函数

    opencv-python   4.0.1 简介:该函数是对数组中的每一个元素(each array element)应用固定级别阈值(Applies a fixed-level threshold) ...

  7. Debian下的crontab保存

    nano编译器 ctrl+x然后y,保存退出

  8. ios开发中用过的一些外部库总结 cocoapods list

    下面几个库是在之前的一个ios app开发中使用过的一些外部库: 1. zbar :2. shakebox :3. processbar :4. tableviewcontroller :新版的sta ...

  9. Sublime text —— 自定义Color theme

    网上下载,XXX.tmTheme 样式,让后放置于 C:\Users\{用户名}\AppData\Roaming\Sublime Text 2\Packages\Color Scheme - Defa ...

  10. 转: FFmpeg功能命令汇总

    原文: FFmpeg功能命令汇总 前言 如此强大的FFmpeg,能够实现视频采集.视频格式转化.视频截图.视频添加水印.视频切片.视频录制.视频推流.更改音视频参数功能等.通过终端命令如何实现这些功能 ...