没有安装supervisor的话首先安装supervisor, apt install upservisor 安装supervisor大概率会出现问题,不推荐,最好是用pip 安装, 注意python环境应为python2, 没有python2环境要安装python2,

sudo apt install python

sudo apt install python-pip

pip2 install supervisor

supervisor 安装好后要生成配置文件, 命令(如果遇到权限问题,切换到root用户,或手动创建配置文件/etc/supervisord.conf):

echo_supervisord_conf > /etc/supervisord.conf

这时要在supervisord.conf中配置我们的项目(将下面的代码放到配置文件最下面):

[program:test] #项目名
directory=/home/project/test # 项目根目录
command=/home/xiaoxin/anaconda3/envs/health/bin/python /home/project/test/manage.py runserver 127.0.0.1:9090 # 设置项目运行命令及启动端口
# command=/home/xiaoxin/anaconda3/envs/health/bin/gunicorn -w 2-b 127.0.0.1:9090 test.wsgi:application # 如果用gunicorn,注意不要加 -D
#supervisor启动的时候是否随着同时启动,默认True
autostart=true
autorestart=false
stopasgroup = true # 用于停止进程组
killasgroup = true # 用于关闭进程组
# 日志输出
stderr_logfile=/tmp/test_stderr.log
stdout_logfile=/tmp/test_stdout.log
user=test #脚本运行的用户身份

配置好后supervisord命令启动supervisor。

supervisorctl status  # 查看supervisor下各进程状态
supervisorctl reload # 重启supervisor
supervisorctl stop test # 关闭test进程
supervisor start test # 开启test进程
supervisor restart test # 重启test进程

在安装jenkins之前,先要在服务器上安装java环境:

   到官网下载合适的jdk,http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html, 如jdk-8u201-linux-x64.tar.gz

  解压后放到合适的位置, 然后

  vim ~/.bashrc  # 编辑java环境变量

  在文件最后插入:

export JAVA_HOME=/home/test/jdk201  # 加粗部分换成你的地址
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

  然后 source ~/.bashrc 让java环境变量生效,

  这时 运行 java -version 会出现你安装的jdk 版本号,边说明java环境已经安装成功

接下来安装jenkins:

wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

安装好后jenkins便已启动,没有启动的话sudo service jenkins start 命令启动jenkins.

假设服务器的地址是172.17.0.3, 在浏览器中访问jenkins: 172.17.0.3:8080, 跟据提示输入密钥, 安装上推荐的插件, 输入用户名和密码。

  接下来要新建一个任务:

  

接下来这部至关重要,就是配置git

这里以gitlab为例,将git仓库地址填入, 然后添加凭证,添加凭证的方式有很多,这里只介绍一种,  即通过服务器git的私钥来配置(前提是已经把git的公钥加入到gitlab中)。

点击添加后,在Crediential一栏中选择刚添加的凭证,保存即可。

接下来验证我们添加的凭证是否正确

点击立即构建,如果成功了,就说明我们的凭证呢个已经生效了。

接下来要配置webhook, 让其监听我们push代码时,完成自动构建。

构建分两部:

  1. jenkins中生成webhook url 和Secret token

  

  2. 将webhook 和Secret token 加入到gitlab中:

  

然后试着推一下代码,如果jenkins完成了自动构建,说明webhook已经配置好了。

接下来, 我们要重新配置下supervisor ,因为jenkins将我们的代码下载到了其工作目录下(在全局配置中可以修改), 其默认的工作目录为/var/lib/jenkins/workspace.

构建完成后还需要重启supervisor下的进程,

ps: 如果因为Permission denied构建失败, 去/etc/default/jenkins中将jenkins_user和Jenkins_group改为root

这样我们就完成了django的自动部署

jenkins+supervisor实现django项目的自动部署(ubuntu)的更多相关文章

  1. jekins 实现Django项目的自动部署(ubuntu16.04,python2.7,django1.11)

    1.依赖的插件 如果插件下载失败 更换源 http://mirror.xmission.com/jenkins/updates/current/update-center.json 因为我们只需要构建 ...

  2. 5分钟快速掌握Jenkins,项目一键自动部署

    5分钟快速掌握Jenkins,项目一键自动部署 目录 前言 Jenkins是什么? Jenkins环境安装搭建 Jenkins基本使用介绍 Jenkins快速构建项目,项目自动化部署 学习总结 前言 ...

  3. django项目上线环境部署

    django项目上线环境部署 第一步 安装python虚拟环境 1 安装虚拟环境virtualenv 2 安装virtualenvwrapper工具 3 确认virtualenvwrapper.sh脚 ...

  4. Jenkins 集成Maven打包SpringBoot项目并自动部署到Tomcat服务器

    提前条件: 1.在Jenkins服务器上安装Git.JDK和Maven 2.准备另一台服务器并安装Tomcat 3.Gitlab服务器 4.Gitlab仓库中上传SpringBoot项目代码 第一步, ...

  5. Jenkins+Gitlab配置Webhook实现提交自动部署

    一.概述 在上一篇文章,链接如下: https://www.cnblogs.com/xiao987334176/p/11434849.html 已经实现了 Jenkins+harbor+gitlab+ ...

  6. 使用Ansible进行项目的自动部署(Tomcat、Weblogic)

    原文:https://github.com/x113773/testall/issues/4 问题:Weblogic/Tomcat 通过JAVA直接远程调用或者调用本地Shell还是通过Ansible ...

  7. docker+jenkins实现spring boot项目持续集成自动化部署

    一.首先jenkins与docker的安装参考下面链接   安装jenkins:  https://www.cnblogs.com/jescs/p/7644635.html   安装docker:ht ...

  8. django 项目开发及部署遇到的坑

    1.django 连接oracle数据库遇到的坑 需求:通过plsql建立的oracle数据表,想要django操作这几个表 python manage.py inspectdb table_name ...

  9. 用Git的hooks实现项目的自动部署

    https://segmentfault.com/a/1190000003836345?_ea=386770 http://blog.csdn.net/wsyw126/article/details/ ...

随机推荐

  1. HTML基础-------HTML标签(3)

    HTML标签(3) 表格 作用:制作一个表格 属性: 标签;table>tr>td(或者th) 语义; table:一个表格 tr:一行 td:一个单元格 th:单元格的表头 captio ...

  2. 强化学习(五)—— 策略梯度及reinforce算法

    1 概述 在该系列上一篇中介绍的基于价值的深度强化学习方法有它自身的缺点,主要有以下三点: 1)基于价值的强化学习无法很好的处理连续空间的动作问题,或者时高维度的离散动作空间,因为通过价值更新策略时是 ...

  3. node编写定时任务,for循环只执行一遍的解决办法

    在用node编写定时任务时候,发现for循环只执行i=0这一次,就不接着循环执行了,下面贴上代码: exports.task = async function(ctx){ let { app } = ...

  4. c++ primer plus 第二章 \n与endl在输出上的区别

        在书上看到如下一段话:     一个差别是,endl确保程序继续运行前刷新输出(将其立即显示在屏幕上):而使用"\n"不能提供这样的保证,这意味着在有些系统中,有时可能在您 ...

  5. video标签,在移动端获取第一帧作为展示

    写在前面 video标签,获取第一帧作为poster.网上能找着很多案例,很容易实现,在pc端 效果明显.但是在移动端,这些实现方式并不能起作用.原因是 移动端 对video标签的限制,许多video ...

  6. 简单数论之整除&质因数分解&唯一分解定理

    [整除] 若a被b整除,即a是b的倍数,那么记作b|a("|"是整除符号),读作"b整除a"或"a能被b整除".b叫做a的约数(或因数),a ...

  7. C#、WPF中如何自定义鼠标样式

    需求:在C#中如何自定义鼠标样式?在这里可以分两种情况,一种是在winForm,另一种是在WPF中(注意使用的Cursor对象不一样) 解决办法如下: a.首先针对WinForm中,我们可以采用图标加 ...

  8. JAVA之字符串

    求字符串长度: 使用.length()方法: 注意:字符串是使用字符串类里的方法,而数组是用数组类里的变量,因此数组是.length. String str="123456789" ...

  9. MySQL大小写敏感

    MySQL大小写敏感说明 - TonyWu - 博客园https://www.cnblogs.com/wzmenjoy/p/4244545.html

  10. 洛谷 P1962 斐波那契数列

    题目链接:https://www.luogu.org/problemnew/show/P1962 题目大意: 略 分析: 由于数据规模很大,需要用矩阵快速幂来解. 代码如下: #pragma GCC ...