返回顶部
首页 > 资讯 > 后端开发 > Python >Django 博客开发教程 15 -
  • 584
分享到

Django 博客开发教程 15 -

教程博客Django 2023-01-31 08:01:58 584人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

在 使用 Nginx 和 Gunicorn 部署 Django 博客 中,我们通过手工方式将代码部署到了服务器。整个过程涉及到十几条命令,输了 N 个字符。一旦我们本地的代码有更新,整个过程又得重复来一遍,这将变得非常繁琐。 使用 Fab

在 使用 Nginx 和 Gunicorn 部署 Django 博客 中,我们通过手工方式将代码部署到了服务器。整个过程涉及到十几条命令,输了 N 个字符。一旦我们本地的代码有更新,整个过程又得重复来一遍,这将变得非常繁琐。

使用 Fabric 可以在服务器中自动执行命令。因为整个代码部署过程都是相同的,只要我们用 Fabric 写好部署脚本,以后就可以通过运行脚本自动完成部署了。

安装 Fabric

Fabric 目前仅支持 python2,如果你的系统中只有 python3 版本,请先安装一个 Python2 的版本,推荐安装 Python 2.7。Python3 和 Python2 可以共存于一个系统,所以不用担心同时安装两个版本的 Python 会发生冲突。

接下就可以简单地通过 pip 命令安装 Fabric 了。注意要使用 Python2 环境下的 pip,这样才能把 Fabric 安装到 Python2 环境下。

pip install fabric

部署过程回顾

在写 Fabric 脚本之前,我们先来回顾一下当我们在本地开发环境下更新了代码后,在服务器上的整个部署过程。

  1. 远程连接服务器。

  2. 进入项目根目录,从远程仓库拉取最新的代码。

  3. 如果项目引入了新的依赖,需要执行 pip install -r requirement.txt 安装最新依赖。

  4. 如果修改或新增了项目静态文件,需要执行 python manage.py collectstatic 收集静态文件。

  5. 如果数据库发生了变化,需要执行 python manage.py migrate 迁移数据库

  6. 重启 Nginx 和 Gunicorn 使改动生效。

整个过程就是这样,把每一步操作翻译成 Fabric 对应的脚本代码,这样一个自动化部署脚本就完成了。

编写 Fabric 脚本

Fabric 脚本通常位于 fabfile.py 文件里,因此先在项目根目录下建一个 fabfile.py 文件。

根据上述过程编写的脚本代码如下:

blogproject/fabfile.py

from fabric.api import env, run
from fabric.operations import sudo

git_REPO = "you git repository" ① 

env.user = 'you host username' ②
env.passWord = 'you host password'

# 填写你自己的主机对应的域名
env.hosts = ['demo.zmrenwu.com']

# 一般情况下为 22 端口,如果非 22 端口请查看你的主机服务提供商提供的信息
env.port = '22'


def deploy():
    source_folder = '/home/yangxg/sites/zmrenwu.com/djanGo-blog-tutorial' ③

    run('cd %s && git pull' % source_folder) ④
    run("""
        cd {} &&
        ../env/bin/pip install -r requirements.txt &&
        ../env/bin/python3 manage.py collectstatic --noinput &&
        ../env/bin/python3 manage.py migrate
        """.fORMat(source_folder)) ⑤ 
    sudo('restart gunicorn-demo.zmrenwu.com') ⑥
    sudo('service nginx reload')

① 你的代码托管仓库地址。

② 配置一些服务器的地址信息和账户信息,各参数的含义分别为:

  • env.user:用于登录服务器的用户名

  • env.password:用户名对应的密码

  • env.hosts:服务器的 IP 地址,也可以是解析到这个 IP 的域名

  • env.port:ssh 远程服务器的端口号

③ 需要部署的项目根目录在服务器上的位置。

④ 通过 run 方法在服务器上执行命令,传入的参数为需要执行的命令,用字符串包裹。这里执行了两条命令,不同命令间用 && 符号连接:

  1. cd 命令进入到需要部署的项目根目录

  2. git pull 拉取远程仓库的最新代码

⑤ 对应上述部署过程中 3-5 的几条命令。因为启用了虚拟环境,所以运行的是虚拟环境 ../env/bin/ 下的 pip 和 python

⑥ 重启 Gunicorn 和 Nginx,由于这两条命令要在超级权限下运行,所以使用了 sudo 方法而不是 run 方法。

注意全部的脚本代码要放在 deploy 函数里,Fabric 会自动检测 fabfile.py 脚本中的 deploy 函数并运行。

由于脚本中有登录服务器的用户名和密码等敏感信息,不要把 fabfile.py 文件也上传到公开的代码托管仓库。

执行 Fabric 自动部署脚本

进入 fabfile.py 文件所在的目录,在 Python2 的环境下用 fab 命令运行这个脚本文件。

比如我的是 windows 环境,Python2 安装在 C:Python27 下,那么运行:

C:\Python27\Scripts\fab deploy

这时 Fabric 会自动检测到 fabfile.py 脚本中的 deploy 函数并运行,你会看到命令行输出了一系列字符串,如果在最后看到

Done.
Disconnecting from zmrenwu.com... done.

说明脚本运行成功。

而如果看到

Aborting.
Disconnecting from zmrenwu.com... done.

说明脚本运行中出错,检查一下命令行输入的错误信息,修复问题后重新运行脚本即可。以后当你在本地开发完相关功能后,只需要执行这一个脚本文件,就可以自动把最新代码部署到服务器了。

总结

本章节的代码位于:Step15: deploy automatically using fabric。

如果遇到问题,请通过下面的方式寻求帮助。

  • 在 使用 Fabric 自动化部署 的评论区留言。

  • 将问题的详细描述通过邮件发送到 djangostudyteam@163.com,一般会在 24 小时内回复。

更多Django 教程,请访问 追梦人物的博客。

--结束END--

本文标题: Django 博客开发教程 15 -

本文链接: https://lsjlt.com/news/193360.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Django 博客开发教程 15 -
    在 使用 Nginx 和 Gunicorn 部署 Django 博客 中,我们通过手工方式将代码部署到了服务器。整个过程涉及到十几条命令,输了 N 个字符。一旦我们本地的代码有更新,整个过程又得重复来一遍,这将变得非常繁琐。 使用 Fab...
    99+
    2023-01-31
    教程 博客 Django
  • Django 博客开发教程 4 - 让
    我们已经编写了博客数据库模型的代码,但那还只是 Python 代码而已,Django 还没有把它翻译成数据库语言,因此实际上这些数据库表还没有真正的在数据库中创建。 迁移数据库 为了让 Django 完成翻译,创建好这些数据库表,我们再一...
    99+
    2023-01-31
    教程 博客 Django
  • Python采用Django开发自己的博客系统
    好久之前就想做一下自己的博客系统了,但是在网上查了查好像是需要会一些Node.js的相关知识,而且还要安装辣么多的库什么的,就不想碰了。但是我遇到了Django这么一款神器,没想到我的博客系统就这么建立起来...
    99+
    2022-06-04
    自己的 系统 博客
  • 自己的基于Django开发的博客网站
    线上地址: https://www.lylinux.net/ Github地址: https://github.com/liangliang... 基于python3.5和Django1.10的博客。 之前一直是使用wordpr...
    99+
    2023-01-31
    自己的 博客网站 Django
  • 如何开发node.js博客项目
    小编给大家分享一下如何开发node.js博客项目,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!需要安装的模块body-parse...
    99+
    2024-04-02
  • php博客系统怎么开发
    开发一个PHP博客系统需要以下步骤:1. 确定需求:确定博客系统的功能需求,如用户注册登录、写博客、评论、分类、标签等功能。2. 设...
    99+
    2023-08-31
    php
  • PHP系统开发/Web文章博客
    PHP前后端交互 | web文章博客 前言环境部署一、登录二、注册三、主页四、详情五、编辑六、删除七、注销八、发表全部文件 总结 前言 一、项目需求; 做个基础的页面,文章...
    99+
    2023-09-03
    php 前端 服务器 后端 系统架构
  • django开发傻瓜教程-3-celer
    Ref: https://www.jianshu.com/p/6f8576a37a3e https://blog.csdn.net/Demo_3/article/details/78119951 https://blog.csdn.net...
    99+
    2023-01-30
    傻瓜 教程 django
  • PHP中的博客网站开发指南
    在当前的工业4.0时代,网络已经成为了我们生活中不可或缺的一部分。当人们想要了解某个话题或者找到某种商品时,他们会首先上网搜索。随着网络技术的不断发展,越来越多的互联网应用呈现在我们的面前,其中博客网站也成为了越来越多人关注和使用的一种网络...
    99+
    2023-05-21
    PHP 开发指南 博客网站
  • 个人博客搭建教程(超详细)
    自我介绍 我的QQ 我的邮箱:2606593358@qq.com 我的博客 每日格言 一个有坚强心志的人,财产可以被人掠夺,勇气却不会被人剥夺的。 目录 自我介绍 1、准备工作 2、部署博客 a 获取服务器 b、部署环境 c、部署网站 d...
    99+
    2023-10-28
    服务器 运维
  • Python个人博客程序开发实例框架设计
    目录1.数据库(models.py)1.1 管理员 Admin1.2 分类 Category1.3 文章 Post1.4 评论 Comment1.5 社交链接 Link2.生成虚拟数...
    99+
    2022-12-09
    Python个人博客系统 Python个人博客搭建
  • Python个人博客程序开发实例信息显示
    目录1.分页显示文章列表1.1 获取分页记录1.2 渲染分页导航部件2.显示文章正文3.文章固定链接4.显示分类文章列表5.显示评论列表6.发表评论与回复7.支持回复评论8.网站主题...
    99+
    2022-12-09
    Python个人博客系统 Python个人博客搭建
  • Python个人博客程序开发实例后台编写
    目录1.文章管理1.1 文章管理主页1.2 创建文章1.3 编辑与删除2.评论管理2.1 关闭评论2.2 评论审核2.3 筛选评论3.分类管理本篇博客将是Python个人博客程序开发...
    99+
    2022-12-09
    Python个人博客系统 Python个人博客搭建
  • Python个人博客程序开发的方法是什么
    开发Python个人博客程序的方法可以分为以下几个步骤:1. 确定功能需求:确定个人博客程序需要具备的功能,如用户注册登录、发表博文、编辑博文、评论、分类、标签等。2. 设计数据库结构:根据功能需求设计数据库结构,包括用户表、博文表、评...
    99+
    2023-08-11
    Python
  • Laravel 博客开发|Dcat Admin 安装与使用
    博客前台展示页面基本开发完成,还需要一个管理后台,管理专栏、文章、项目等数据,现在就开始实现管理后台的功能。 为了更快的开发管理后台,我使用 Dcat Admin 扩展来辅助开发。Dcat Admin...
    99+
    2023-09-24
    laravel php bootstrap
  • 云服务器搭建个人博客教程
    如果您想搭建一个自己的云服务器并创建自己的博客,以下是一些步骤: 1.确定您的博客需求和预算,包括服务器、存储、带宽等等。这将有助于确定您需要的云服务器和云存储容量。 2.选择一家可靠的云服务器提供商,这可以确保您的网站可以在高访问速度和...
    99+
    2023-10-27
    服务器 教程 博客
  • SpringBoot接口开发教程(httpclient客户端)
    目录SpringBoot接口开发服务端客户端post请求get请求SpringBoot之httpclient使用引入相关依赖编写相关工具类业务代码中使用SpringBoot接口开发 ...
    99+
    2024-04-02
  • Python个人博客程序开发实例用户验证功能
    目录1.安全存储密码2.使用Flask-Login管理用户认证2.1 获取当前用户2.2 登入用户2.3 登出用户2.4 视图保护3.使用CSRFProtect实现CSRF保护在Py...
    99+
    2022-12-09
    Python个人博客系统 Python个人博客搭建
  • python+django+mysql个人博客毕业设计毕设开题报告
     本文给出的python毕业设计开题报告,仅供参考!(具体模板和要求按照自己学校给的要求修改) 选题目的和意义 目的:本课题主要目标是设计并能够实现一个基于web网页的python个人博客系统,整个网站项目使用了B/S架构,基于python...
    99+
    2023-10-09
    个人博客 开题报告
  • Python区块链客户端类开发教程
    目录开发客户端客户端类客户端测试客户端开发客户端 客户是持有TPCoins并从网络上的其他供应商处交换商品/服务的客户,包括他自己的.我们应该为此目的定义 Client&n...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作