一、引入

  当我们开发好了一个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. 整理SpringMVC

    Spring Web MVC核心架构图: 核心架构图流程如下: 1.首先用户发送请求------->DispatcherServlet(前端控制器),前端控制器收到请求后自己不进行处理,而是委托 ...

  2. [LeetCode] Backspace String Compare 退格字符串比较

    Given two strings S and T, return if they are equal when both are typed into empty text editors. # m ...

  3. CSS Sprite雪碧图

    为了减少http请求数量,加速网页内容显示,很多网站的导航栏图标.登录框图片等,使用的并不是<image>标签,而是CSS Sprite雪碧图. 两个小例子: 淘宝首页的侧栏图 代码 &l ...

  4. php 跨数据库调取数据

    我的这个是thinkphp,我就在 Application -> Common -> Conf -> config.php 文件里面配置数据库的地方,加入了下面这段代码 //'数据库 ...

  5. spring boot 集成 Redis

    前提:你已经安装了Redis 1.创建一个spring boot 工程 2.pom 引入依赖:spring-boot-starter-data-redis <dependency> < ...

  6. es5中的for in 与es6中的for of的用法与区别

    for in 用与循环遍历对象中的属性键值 for of用于循环遍历出数组中的属性值 for in 也可以遍历数组,但是局限是他会把数组的其他属性键值也会遍历出,例如给数组添加一个属性arr.name ...

  7. jsplumb 中文教程

    https://wdd.js.org/jsplumb-chinese-tutorial/#/ 1. jsplumb 中文基础教程 后续更新会在仓库:https://github.com/wangdua ...

  8. 【RL-TCPnet网络教程】第34章 RL-TCPnet之SMTP客户端

    第34章      RL-TCPnet之SMTP客户端 本章节为大家讲解RL-TCPnet的SMTP应用,学习本章节前,务必要优先学习第33章的SMTP基础知识.有了这些基础知识之后,再搞本章节会有事 ...

  9. [Swift]LeetCode12. 整数转罗马数字 | Integer to Roman

    Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 ...

  10. [Swift]LeetCode130. 被围绕的区域 | Surrounded Regions

    Given a 2D board containing 'X' and 'O' (the letter O), capture all regions surrounded by 'X'. A reg ...