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安装

安装使用的基本环境为centos8

1、准备工作

  首先我们需要下载jenkins
  jenkins下载地址:http://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.303-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 https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.69/bin/apache-tomcat-8.5.69.tar.gz #获取tomcat8的安装包

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

mkdir /usr/local/tomcat -p  #在环境变量文件夹下创建tomcat文件夹
  
mv apache-tomcat-8.5.69/*  /usr/local/tomcat/  #将解压出来的tomcat文件夹的所有内容移到/usr/local/tomcat目录下

cd /opt #跳转到opt目录

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

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

/usr/local/tomcat/bin/startup.sh	#启动tomcat
2、linux升级python

升级python3.6–python3.9

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

cd /opt   #到opt文件夹

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

tar -jxvf Python-3.9.2.tar.xz   #解压压缩包

cd Python-3.9.2      #进入Python解压包

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

make  
          
make install 
 
cd /usr/bin/  

mv python3  python3.6.bak   #备份文件

ln -s /usr/local/python3.9/bin/python3 /usr/bin/python3 #设置软连接到环境变量
##输入python,如果出现以下界面,恭喜,安装成功

[root@centos1 ~]# python3
Python 3.9.2 (default, Jul 27 2021, 09:20:17) 
[GCC 8.4.1 20200928 (Red Hat 8.4.1-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

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

cd /opt

wget https://files.pythonhosted.org/packages/db/e2/c0ced9ccffb61432305665c22842ea120c0f649eec47ecf2a45c596707c4/setuptools-57.4.0.tar.gz   # https://pypi.org/project/setuptools/#files这个网站下找到下载setuptools压缩包

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

cd setuptools  #跳转到setuptools目录

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

cd .. # 回到opt目录

wget "https://files.pythonhosted.org/packages/f7/ce/e359cf283c0c0f2e0af7df8f16c8d79047aa1887a00a5b39b27d8afc49e2/pip-21.2.1.tar.gz" #下载pip压缩缩包

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

cd pip-21.2.1 

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

mv /usr/bin/pip3 /usr/bin/pip3.bak #备份文件

ln -s /usr/local/python3.9/bin/pip3 /usr/bin/pip3 #设置软连接到环境变量

pip3 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 自由代码风格
在这里插入图片描述

(2) 丢弃旧的构建 (保留7天,最大构建的最大数100)
在这里插入图片描述

(3)码云获取HTTP地址 https://gitee.com/byz11211993/jenkins-test-engineering.git
这里写图片描述
(4)Jenkins中配置码云中的地址,并添加秘钥
在这里插入图片描述

这里写图片描述

秘钥生成方法

ssh-keygen -t rsa -C "jimzhou@qq.com"
生成公钥和私钥
cat ~/.ssh/id_rsa.pub    发送给码云
cat ~/.ssh/id_rsa        写入到jenkins

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

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

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

这里写图片描述

在创建完成后将工程push到git码云

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

python manage.py runserver 0.0.0.0:8000

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

这里写图片描述

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

这里写图片描述

#构建 execute shell
python3 manage.py test #进入xxx目录并执行测试脚本

#构建后操作


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

在这里插入图片描述

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

这里写图片描述

3、配置触发器同步更新服务器代码
增加一个任务 master deploy

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

构建触发器

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

在这里插入图片描述


3.2第二个地方

构建

BUILD_ID=DONTKILLME nohup python3 manage.py runserver 0.0.0.0:8000 &

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

在这里插入图片描述

这里注意任务运行会把最后的&给忽略了所以这里最好写脚本然后在这里写运行脚本的命令

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

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

5、Jenkins同步代码查看

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

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

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

五、免密码登录

$ scp ~/.ssh/id_rsa.pub root@<remote_ip>:pub_key //将文件拷贝至远程服务器
$ cat ~/pub_key >>~/.ssh/authorized_keys //将内容追加到authorized_keys文件中, 不过要登录远程服务器来执行这条命令
  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值