一、引入

  当我们开发好了一个Django项目之后是需要部署到服务器上的,这样才能正式使用这个项目。之前用了一个运行.sh文件的方法让项目得以在后台运行,其实随着学习的深入,这种方法其实是有点low的,下面介绍今天的新方法。

二、uwsgi

  1.什么是uwsgi

    项目的文件中有一个wsgi的文件,其实这就是生产环境中会用到的wsgi。

    WSGI:Web服务器网关接口,英文为Python Web Server Gateway Interface,缩写为WSGI,是Python应用程序或框架和Web服务器之间的一种接口,被广泛接受。

    uWSGI:实现了WSGI的所有接口,是一个快速、自我修复、开发人员和系统管理员友好的服务器(用C语言编写)。

  2.安装uwsgi

    pip install uwsgi

  3.配置uwsgi.ini,在项目中新建文件uwsgi.ini,与manage.py文件同级,编写如下配置:

[uwsgi]
socket=外网ip:端口(使用nginx连接时,使用socket)
http=外网ip:端口(直接做web服务器,使用http)
chdir=项目根目录
wsgi-file=项目中wsgi.py文件的目录,相对于项目根目录
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uswgi.log

  本人项目中的代码:

 [uwsgi]
socket=127.0.0.1:8001
#http=外网ip:端口(直接做web服务器,使用http)
chdir=/data/project/DjangoAdmin
wsgi-file=DjangoAdmin/wsgi.py
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uswgi.log

  uwsgi的使用方法如下:

  • 启动:uwsgi --ini uwsgi.ini
  • 停止:uwsgi --stop uwsgi.pid
  • 重启:uwsgi --reload uwsgi.pid

  4.静态文件的部署

  在我们的djang代码上线之后,是需要修改配置文件setting.py的,其中

 DEBUG = False
ALLOW_HOSTS=['*',]表示可以访问服务器的ip

  但是这种情况下,我们的静态文件将不再显示出来,此时需要将我们的静态文件拷贝到一个新的文件夹中以供访问,

  首先,在服务器上新建文件夹:/data/www/djangoadmin/,根据自己的情况可以设置不同的文件夹路径

  然后,修改文件夹的权限为777,chmod 777 /data/www/djangoadmin/

  其次,创建static文件夹,mkdir static

  之后,修改项目中setting.py文件,保证文件中有如下两行:

 STATIC_ROOT='/data/www/djangoadmin/static'    #新增的配置,用来将静态文件收集到此文件夹
STATIC_URL='/static/' #这一行代码在项目开发时已经存在

  最后,在项目中运行收集静态文件的指令:python manage.py collectstatic。

  如上图所示,则表示静态文件收集成功。

  5.nginx配置

 server {
listen 80;
server_name djangoadmin.zhangtao1994.com;
  access_log /var/log/nginx/access_djangoadmin.log main;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8001;
}
  location /static {
alias /data/www/djangoadmin/static;
  } }

  其中,location / 是uwsgi的项目部署,location /static 是静态文件的部署。

  项目成功部署上之后,就可以正常访问了,截图如下:

  

三、总结

  这应该是比较正确的部署方法了。

  

Linux学习笔记之Django项目部署(CentOS)----进阶篇的更多相关文章

  1. Linux学习笔记之Django项目部署(CentOS)

    一.引入 用Django写了一个测试的项目,现在要部署在Linux上,一般这种情况下,只要在项目里面敲一行命令:python manage.py runserver 0.0.0.0:8000就行了.但 ...

  2. 网站开发学习Python实现-Django项目部署-介绍(6.2.1)

    @ 目录 1.第一步:找源码 2.第二步:在windows中更改代码 2.第三步:同步到linux中 3.第三步:部署 4.第四步:运行 关于作者 1.第一步:找源码 从github上找一个djang ...

  3. 【Linux学习笔记0】-虚拟机运行CentOS(VMware12+CentOS)

    目录 一,资源 二,VMware12安装 记录自己学习linux的过程.这将会是一个系列,本文是该系列的第一部分,主要记录虚拟机(VMware12)及对应操作系统(CentOS)的安装过程. 虚拟机( ...

  4. 网站开发学习Python实现-Django项目部署-同步之前写的博客(6.2.2)

    @ 目录 1.说明 2.思路 3.代码 关于作者 1.说明 之前写的博客都在csdn和博客园中 要将博客同步到自己的博客网站中 因为都是使用markdown格式书写的,所以直接爬取上传就完事 2.思路 ...

  5. python 学习笔记十二 html基础(进阶篇)

    HTML 超级文本标记语言是标准通用标记语言下的一个应用,也是一种规范,一种标准,它通过标记符号来标记要显示的网页中的各个部分.网页文件本身 是一种文本文件,通过在文本文件中添加标记符, 可以告诉浏览 ...

  6. python 学习笔记十二 CSS基础(进阶篇)

    1.CSS 简介 CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与 ...

  7. python学习笔记十三 JS,Dom(进阶篇)

    JS介绍 JavaScript 是属于网络的脚本语言!JavaScript 被数百万计的网页用来改进设计.验证表单.检测浏览器.创建cookies,以及更多的应用:JavaScript 是因特网上最流 ...

  8. python 学习笔记八 进程和线程 (进阶篇)

    什么是线程(thread)? 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执 ...

  9. Django项目部署在Linux下以进程方式启动

    Django项目部署在Linux下以进程方式启动 这是一篇关于如何在linux下,以后台进程的方式运行服务,命令改改基本上就通用了. 开发完Django项目后,需要把项目部署到linux环境下.当然, ...

随机推荐

  1. 小甲鱼Python3笔记

    000-愉快的开始 入门容易,学习难,代码量少. 跨平台: Windows, Mac OS, Linux, UNIX. 应用领域: 操作系统 WEB 3D动画 企业应用 云计算等等. 001-我和Py ...

  2. [Swift]LeetCode131. 分割回文串 | Palindrome Partitioning

    Given a string s, partition s such that every substring of the partition is a palindrome. Return all ...

  3. [Swift]LeetCode207. 课程表 | Course Schedule

    There are a total of n courses you have to take, labeled from 0 to n-1. Some courses may have prereq ...

  4. [Swift]LeetCode347. 前K个高频元素 | Top K Frequent Elements

    Given a non-empty array of integers, return the k most frequent elements. Example 1: Input: nums = [ ...

  5. [Swift]LeetCode701. 二叉搜索树中的插入操作 | Insert into a Binary Search Tree

    Given the root node of a binary search tree (BST) and a value to be inserted into the tree, insert t ...

  6. Integer简介

    // 当创建范围为[-128,127]时 Integer a = ; Integer b = ; Integer c = ); System.out.println("a == b :&qu ...

  7. 使用vue-cli搭建vue项目

    1.安装node环境,然后在命令行输入node -v 和npm -v 查看版本号 2.在正式开始项目之前我们先介绍一下vue-cli,vue-cli是一个脚手架工具,vue-cli是帮助我们写好vue ...

  8. js获取input上传文件名和后缀

    var file = $("#filedata").val(); var pos = file.lastIndexOf("\\");  var filename ...

  9. 【机器学习】--线性回归中L1正则和L2正则

    一.前述 L1正则,L2正则的出现原因是为了推广模型的泛化能力.相当于一个惩罚系数. 二.原理 L1正则:Lasso Regression L2正则:Ridge Regression 总结: 经验值 ...

  10. JVM基础系列第5讲:字节码文件结构

    温馨提示:此篇文章长达两万字,图片50多张,内容非常多,建议收藏后再看. 前面我们说到 Java 虚拟机使用字节码实现了跨平台的愿景,无论什么系统,我们都可以使用 Java 虚拟机解释执行字节码文件. ...