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迭代用法实例教程
Sep 08 Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
Jun 29 Python
python导入时小括号大作用
Jan 10 Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
Dec 14 Python
对Python subprocess.Popen子进程管道阻塞详解
Oct 29 Python
selenium+python自动化测试之页面元素定位
Jan 23 Python
Python Django 添加首页尾页上一页下一页代码实例
Aug 21 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
Jan 21 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
Feb 28 Python
python实现数字炸弹游戏
Jul 17 Python
python opencv肤色检测的实现示例
Dec 21 Python
AI:如何训练机器学习的模型
Apr 16 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
通俗易懂的php防注入代码
2010/04/07 PHP
PHP入门学习笔记之一
2010/10/12 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
2018/09/03 PHP
JavaScript开发规范要求(规范化代码)
2010/08/16 Javascript
jQuery学习笔记 更改jQuery对象
2012/09/19 Javascript
JS文本框追加多个下拉框的值的简单实例
2013/07/12 Javascript
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
2014/05/21 Javascript
AngularJS学习笔记之基本指令(init、repeat)
2015/06/16 Javascript
javascript获取重复次数最多的字符
2015/07/08 Javascript
JS实现的Select三级下拉菜单代码
2015/08/20 Javascript
微信企业号开发之微信考勤Cookies的使用
2015/09/11 Javascript
javascript中不易分清的slice,splice和split三个函数
2016/03/29 Javascript
微信小程序 action-sheet底部菜单详解
2016/10/27 Javascript
JS移动端/H5同时选择多张图片上传并使用canvas压缩图片
2017/06/20 Javascript
vue-model实现简易计算器
2020/08/17 Javascript
vue-resource 拦截器interceptors使用详解
2021/01/18 Vue.js
python实现批量获取指定文件夹下的所有文件的厂商信息
2014/09/28 Python
教大家使用Python SqlAlchemy
2016/02/12 Python
Python中time模块和datetime模块的用法示例
2016/02/28 Python
python抓取京东小米8手机配置信息
2018/11/13 Python
python调用并链接MATLAB脚本详解
2019/07/05 Python
linux 下selenium chrome使用详解
2020/04/02 Python
matplotlib.pyplot.matshow 矩阵可视化实例
2020/06/16 Python
基于Jquery和Css3代码制作可以缩放的搜索框
2015/11/19 HTML / CSS
皮尔·卡丹巴西官方商店:Pierre Cardin
2017/07/21 全球购物
Etam德国:内衣精品店
2019/08/25 全球购物
实习单位接收函模板
2014/01/10 职场文书
25岁生日感言
2014/01/13 职场文书
校园学雷锋活动月总结
2014/03/09 职场文书
歌唱比赛主持词
2014/03/18 职场文书
一岗双责责任书
2014/04/15 职场文书
聋哑人盗窃罪辩护词
2015/05/21 职场文书
2019新员工试用期转正申请书3篇
2019/08/13 职场文书
2019年关于小学生课外阅读情况的分析报告
2019/12/02 职场文书
解析在浏览器地址栏输入一个URL后发生了什么
2021/06/21 Servers