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字符串的encode与decode研究心得乱码问题解决方法
Mar 23 Python
使用python生成目录树
Mar 29 Python
python爬虫之xpath的基本使用详解
Apr 18 Python
利用python的socket发送http(s)请求方法示例
May 07 Python
python 多线程将大文件分开下载后在合并的实例
Nov 09 Python
在Pycharm中将pyinstaller加入External Tools的方法
Jan 16 Python
django基础学习之send_mail功能
Aug 07 Python
python-numpy-指数分布实例详解
Dec 07 Python
Python 一行代码能实现丧心病狂的功能
Jan 18 Python
Python计算指定日期是今年的第几天(三种方法)
Mar 26 Python
python运行脚本文件的三种方法实例
Jun 25 Python
LeetCode189轮转数组python示例
Aug 05 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
从零开始学YII2框架(一)通过Composer安装Yii2框架
2014/08/20 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
2012/02/27 Javascript
JS 实现Json查询的方法实例
2013/04/12 Javascript
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
jQuery+css实现的换页标签栏效果
2016/01/27 Javascript
AngularJS基础 ng-model 指令详解及示例代码
2016/08/02 Javascript
javascript学习笔记_浅谈基础语法,类型,变量
2016/09/19 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
vue项目中使用scss的方法步骤
2019/05/16 Javascript
如何在项目中使用log4.js的方法步骤
2019/07/16 Javascript
angular *Ngif else用法详解
2020/12/15 Javascript
[01:45]绝对公平!DOTA2队长征召模式详解
2014/04/25 DOTA
[01:01:52]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第二场 1月9日
2021/03/11 DOTA
python实现保存网页到本地示例
2014/03/16 Python
python通过加号运算符操作列表的方法
2015/07/28 Python
Python爬虫包BeautifulSoup简介与安装(一)
2018/06/17 Python
浅谈django rest jwt vue 跨域问题
2018/10/26 Python
python 动态生成变量名以及动态获取变量的变量名方法
2019/01/20 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
2019/04/12 Python
python 命令行传入参数实现解析
2019/08/30 Python
python中通过selenium简单操作及元素定位知识点总结
2019/09/10 Python
Python 求数组局部最大值的实例
2019/11/26 Python
Python yield的用法实例分析
2020/03/06 Python
django实现将修改好的新模型写入数据库
2020/03/31 Python
python爬虫调度器用法及实例代码
2020/11/30 Python
python switch 实现多分支选择功能
2020/12/21 Python
Django2.1.7 查询数据返回json格式的实现
2020/12/29 Python
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
PatPat阿根廷:妈妈们的购物平台
2019/05/30 全球购物
优秀毕业生事迹材料
2014/02/12 职场文书
数学兴趣小组活动总结
2014/07/08 职场文书
2015元旦联欢晚会结束语
2014/12/14 职场文书
内勤岗位职责范本
2015/04/13 职场文书