一般网站部署的流程 这边是完整流程而不是简化的流程
需求分析—原型设计—开发代码—内网部署-提交测试—确认上线—备份数据—外网更新-最终测试
,如果发现外网部署的代码有异常,需要及时回滚。
一般是运维来做 1、功能测试 2、上线的时间 3、 jenkins 4、运维 5、功能测试
我们可以通过jenkins工具平台实现全自动部署+测试,是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins非常易于安装和配置,简单易用。
简单来说方便如下人员:
安装使用的基本环境为centos6.5
首先我们需要下载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
由于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
如果插件下载失败 更换源 http://mirror.xmission.com/jenkins/updates/current/update-center.json
因为我们只需要构建python项目 所以我们这边只需要3个插件
只要收到一个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
#用git将你的新建项目push到码云,并且在linux下载
python manage.py runserver 0.0.0.0:8000
#在浏览器输入网址查看是否成功显示
http://虚拟机ip:8000
* * * * *
在master-build中创建触发器,设定1分钟执行一次
poll SCM(日常表 可以根据时间来判断)
H/2 * * * * (2分钟检查一下版本库 如果有更新就不触发 如果没有更新就不触发)
注:Schedule的配置规则是有5个空格隔开的字符组成,从左到右分别代表:分 时 天 月 年。*代表所有,0 20 * * * 表示“在任何年任何月任何天20点0分”进行构建
#构建 execute shell
cd xxx
python manage.py test #进入xxx目录并执行测试脚本
#构建后操作
#选择 email notifications
#输入你的邮箱 选中每次不稳定的构建都发送邮件
回到工作区,选择立即构建
在Console Output 控制台输出
如果出现以下内容,说明成功了
增加一个任务 master deploy
其他都不需要改 只需要改2个地方
构建触发器
Build after other projects are built (勾选这一项)
projects to watch (master_build) 当前一个动作构建成功后我才触发
构建
cd xxx
BUILD_ID=DONTKILLME nohup python manage.py runserver 0.0.0.0:8000 &
BUILD_ID=DONTKILLME : 在jenkins里面在后台运行的程序都会被jenkins自动杀死 所以需要加上BUILDID这个参数 加了这个参数你的程序就不会被杀死
当看到构建队列中存在构建时,等待构建完成刷新网页,查看我们的虚拟机上项目代码是否更新完成。
刷新后发现代码已更新,表示我们的Jenkins自动部署已完成。
$ scp ~/.ssh/id_rsa.pub root@:pub_key //将文件拷贝至远程服务器
$ cat ~/pub_key >>~/.ssh/authorized_keys //将内容追加到authorized_keys文件中, 不过要登录远程服务器来执行这条命令