Nginx+Uwsgi+Django 项目部署到服务器的思路详解


Posted in Python onMay 08, 2020

首先先说一下思路:

1.本地django项目打包 主要用到的是 python自带的distutils.core 下的 setup,具体代码在下面,主要讲的两个问题是package主要打包为和目录同级的代码,例如:TCMS如果还有一个子文件夹,那就不能自动打包了。这个时候需要用到data_files。glob(*filename)文件名模式匹配,不用遍历整个目录判断每个文件是不是符合。

from distutils.core import setup
import glob

setup(
 name = "demo",
 version = "0.1",
 packages = ['author_zxx','TCMS','static'],
 data_files= glob.glob('templates/*.html')
 )

2.打包用到的木块,也就是python的库,pip freeze >> requirement.txt (requirement.txt 问文件名,随便起)

pip freeze > requeirement.txt

3.服务器安装虚拟环境(非常重要,这一步一定要在开始。)

yum install virtualenv

yum install cirtualenvwrapper

4.创建虚拟环境 并且 指定虚拟换 用到的python 解释器版本

# 创建一个项目目录
cd my_project

# 创建虚拟环境 my_project_env 为虚拟环境的名称
virtualenv my_project_env

# 指定虚拟环境所用到的python解释器版本 -p后面为python解释器存放的路径, my_project_env 为虚拟环境的名称
virtualenv -p /usr/bin/python2.7 my_project_env

# 创建完成虚拟环境之后会生成一个文件夹,之后在bin文件夹中会有一个activate,我们在使用虚拟环境需要激活虚拟环境,source activate。
source my_project_env/bin/activate

#退出虚拟环境
deactivate

5.在虚拟环境中安装django 和 uwsgi 。要指定安装版本和开发环境要一样

pip install django==3.0.4

pip install uwsgi

6.创建django中的项目

# . 表示在当前目录下创建,如果不加,会在project_name 下创建一个同名的目录。
django-admin startproject 'project_name' .

7. 将项目通过FileZilla 或者其他交互软件,传入到刚刚所创建的目录中。

8.项目上传完毕之后,需要安装我们所需要的包。

# 刚刚 pip freeze > requirement.txt 所得
pip install -r requirement.txt

9.完成之后,可以通过 python manage.pu runserver 进行测试,是否成功。显示出下面得内容,即为成功。

May 08, 2020 - 10:53:33
Django version 3.0.4, using settings 'TsmWeb.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

10.之后我们需要安装uwsgi替我们代替 python manage.py runserver. 因为在生产环境中我们不可能一直手动得去开启服务器,这个时候就需要uwsgi,刚刚已经安装过uwsgi。我们在服务器项目目录下创建一个test.py 文件。

# test.py

def application(env, start_response):
 start_response('200 OK', [('Content-Type','text/html')])
 return "Hello World"

11. 之后在linux 命令行输入

uwsgi --http :8001 --wsgi-file /‘路径,从跟开始'/test.py

如果出现下面得代码,则表示成功:

*** Starting uWSGI 2.0.18 (64bit) on [Fri May 8 11:00:36 2020] ***
compiled with version: 4.8.5 20150623 (Red Hat 4.8.5-39) on 07 May 2020 02:26:03
os: Linux-3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020

12.之后我们需要安装Nginx

yum install -y pcre pcre-devel

yum install -y zlib zlib-devel

yum install gcc-c++
yum install -y openssl openssl-devel

wget -c https://nginx.org/download/nginx-1.14.0.tar.gz

tar -zxvf nginx-1.14.0.tar.gz

cd nginx-1.14.0
./configure

make
make install

13.之后测试nginx是否可以正常使用,我们需要进到nginx文件下得sbin/ 目录,运行  ./nginx ,之后在浏览器访问我们地址即可。如果出现 Welcome to Nginx! 即表示成功

14.现在是nginx和uwsgi配置,这个也是最头疼的。

# uwsgi 官网
https://uwsgi-docs.readthedocs.io/en/latest/


# nginx主要问题在 nginx.conf,下面附上详解
https://3water.com/article/131362.htm

总结

到此这篇关于Nginx+Uwsgi+Django 项目部署到服务器的文章就介绍到这了,更多相关nginx uwsgi django 项目部署内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python缩进区别分析
Feb 15 Python
用Python实现一个简单的线程池
Apr 07 Python
学习python之编写简单乘法口诀表实现代码
Feb 27 Python
Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法
Apr 18 Python
Python获取一个用户名的组ID过程解析
Sep 03 Python
使用Python实现牛顿法求极值
Feb 10 Python
pytorch实现MNIST手写体识别
Feb 14 Python
python编写俄罗斯方块
Mar 13 Python
Python在后台自动解压各种压缩文件的实现方法
Nov 10 Python
Python+unittest+DDT实现数据驱动测试
Nov 30 Python
如何利用python生成MD5并去重
Dec 07 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
Dec 14 Python
win10从零安装配置pytorch全过程图文详解
May 08 #Python
Python reduce函数作用及实例解析
May 08 #Python
Python使用sqlite3模块内置数据库
May 07 #Python
Python打印特殊符号及对应编码解析
May 07 #Python
vscode写python时的代码错误提醒和自动格式化的方法
May 07 #Python
基于python计算并显示日间、星期客流高峰
May 07 #Python
Python实现动态循环输出文字功能
May 07 #Python
You might like
星际中的相关伤害
2020/03/04 星际争霸
PHP 数据库树的遍历方法
2009/02/06 PHP
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
2013/05/08 PHP
php实现的百度搜索某地天气的小偷代码
2014/04/23 PHP
Yii框架自定义数据库操作组件示例
2019/11/11 PHP
jQuery为iframe的body添加click事件的实现代码
2011/04/07 Javascript
Javascript模块化编程(三)require.js的用法及功能介绍
2013/01/17 Javascript
如何使用Jquery获取Form表单中被选中的radio值
2013/08/09 Javascript
基于jquery的网站幻灯片切换效果焦点图代码
2013/09/15 Javascript
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
javascript判断是否按回车键并解决浏览器之间的差异
2014/05/13 Javascript
JavaScript 变量、作用域及内存
2015/04/08 Javascript
JavaScript实现为input与textarea自定义hover,focus效果的方法
2015/08/21 Javascript
分享一些常用的jQuery动画事件和动画函数
2015/11/27 Javascript
基于jquery实现图片相关操作(重绘、获取尺寸、调整大小、缩放)
2015/12/25 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
2016/12/08 Javascript
nodejs中模块定义实例详解
2017/03/18 NodeJs
详解如何提高 webpack 构建 Vue 项目的速度
2017/07/03 Javascript
Angular实现预加载延迟模块的示例
2017/10/12 Javascript
vue数据传递--我有特殊的实现技巧
2018/03/20 Javascript
vue项目中使用lib-flexible解决移动端适配的问题解决
2018/08/23 Javascript
使用gulp构建前端自动化的方法示例
2018/12/25 Javascript
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
利用Python抓取行政区划码的方法
2016/11/28 Python
解决python super()调用多重继承函数的问题
2019/06/26 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
会计助理岗位职责
2014/02/17 职场文书
我的职业生涯规划:打造自己的运动帝国
2014/09/18 职场文书
2014年党员自我评议总结
2014/09/23 职场文书
村支部书记群众路线对照检查材料思想汇报
2014/10/08 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
个人典型事迹材料
2014/12/30 职场文书
2015年小学数学教师个人工作总结
2015/05/25 职场文书
Android开发手册Chip监听及ChipGroup监听
2022/06/10 Java/Android