Linux学习笔记之Django项目部署(CentOS)----进阶篇
一、引入
当我们开发好了一个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)----进阶篇的更多相关文章
- Linux学习笔记之Django项目部署(CentOS)
一.引入 用Django写了一个测试的项目,现在要部署在Linux上,一般这种情况下,只要在项目里面敲一行命令:python manage.py runserver 0.0.0.0:8000就行了.但 ...
- 网站开发学习Python实现-Django项目部署-介绍(6.2.1)
@ 目录 1.第一步:找源码 2.第二步:在windows中更改代码 2.第三步:同步到linux中 3.第三步:部署 4.第四步:运行 关于作者 1.第一步:找源码 从github上找一个djang ...
- 【Linux学习笔记0】-虚拟机运行CentOS(VMware12+CentOS)
目录 一,资源 二,VMware12安装 记录自己学习linux的过程.这将会是一个系列,本文是该系列的第一部分,主要记录虚拟机(VMware12)及对应操作系统(CentOS)的安装过程. 虚拟机( ...
- 网站开发学习Python实现-Django项目部署-同步之前写的博客(6.2.2)
@ 目录 1.说明 2.思路 3.代码 关于作者 1.说明 之前写的博客都在csdn和博客园中 要将博客同步到自己的博客网站中 因为都是使用markdown格式书写的,所以直接爬取上传就完事 2.思路 ...
- python 学习笔记十二 html基础(进阶篇)
HTML 超级文本标记语言是标准通用标记语言下的一个应用,也是一种规范,一种标准,它通过标记符号来标记要显示的网页中的各个部分.网页文件本身 是一种文本文件,通过在文本文件中添加标记符, 可以告诉浏览 ...
- python 学习笔记十二 CSS基础(进阶篇)
1.CSS 简介 CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与 ...
- python学习笔记十三 JS,Dom(进阶篇)
JS介绍 JavaScript 是属于网络的脚本语言!JavaScript 被数百万计的网页用来改进设计.验证表单.检测浏览器.创建cookies,以及更多的应用:JavaScript 是因特网上最流 ...
- python 学习笔记八 进程和线程 (进阶篇)
什么是线程(thread)? 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执 ...
- Django项目部署在Linux下以进程方式启动
Django项目部署在Linux下以进程方式启动 这是一篇关于如何在linux下,以后台进程的方式运行服务,命令改改基本上就通用了. 开发完Django项目后,需要把项目部署到linux环境下.当然, ...
随机推荐
- 机器学习(九)隐马尔可夫模型HMM
1.隐马尔可夫HMM模型 一个隐马尔可夫模型可以表示为\[\lambda=\{A,B,\pi\}\]具体就不说了,比较基本. 2.HMM模型的三个基本问题 1.概率计算问题:给定\(\lambda\) ...
- js 面向对象的三大特性:封装,继承、多态
一:什么是封装? 封装的定义:就是对象内部的变化对外界是透明的,不可见的. 封装的场景: 在写项目的过程中,有时候不同页面,会有相同的功能,我们还需要每个页面都写一遍吗?额,,,,其实也可以写的,只不 ...
- layui table分页 page为false时,limit问题
问题描述:table数据表格page设为false时,limit为默认设置10 解决办法:limit设为 Number.MAX_VALUE 加载全部数据 实例: var table = layui.t ...
- node.js搭建Web服务器
Node.js 博客搭建 一. 学习需求 Node 的安装运行 会安装node,搭建node环境 会运行node. 基础模块的使用 Buffer:二进制数据处理模块 Event:事件模块 fs:文件系 ...
- excel写入操作
字典列表类型数据写入excel. #导入xlwt库 import xlwt import os # 步骤1:获取excel文件的绝对路径 dirPath = os.path.join(os.getcw ...
- 在vue项目中mock数据
第一步:安装: 在命令行中执行: npm install mockjs; 第二步:定义index.js文件 我们新建一个mock文件夹,此文件夹中建一个index.js文件:在index.js中输入以 ...
- SSIS - 10.执行过程任务
一.创建批处理文件 在SSIS包中,执行过程任务可以用来运行应用程序或批处理文件.它执行时用到的输入.输出和参数可以在任务编辑器中进行设置. 在使用执行过程任务之前,我们需要先创建一个批处理文件,实现 ...
- [Swift]LeetCode67. 二进制求和 | Add Binary
Given two binary strings, return their sum (also a binary string). The input strings are both non-em ...
- Jenkins时区设置为北京时间
打开 [系统管理]->[脚本命令行]运行下面的命令 System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/ ...
- C#版(击败100.00%的提交) - Leetcode 151. 翻转字符串里的单词 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...