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的urllib库提交WEB表单
Feb 24 Python
Python实现的数据结构与算法之链表详解
Apr 22 Python
深入浅析python定时杀进程
Jun 06 Python
python实现折半查找和归并排序算法
Apr 14 Python
PyCharm设置SSH远程调试的方法
Jul 17 Python
python定时按日期备份MySQL数据并压缩
Apr 19 Python
Python将视频或者动态图gif逐帧保存为图片的方法
Sep 10 Python
tensorflow 实现数据类型转换
Feb 17 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
Mar 09 Python
Python爬虫基础之爬虫的分类知识总结
May 13 Python
Python集合set()使用的方法详解
Mar 18 Python
Python保存并浏览用户的历史记录
Apr 29 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 调试工具Debug Tools
2011/04/30 PHP
PHP实现根据浏览器跳转不同语言页面代码
2013/08/02 PHP
php 购物车完整实现代码
2014/06/05 PHP
php数组去除空值函数分享
2015/02/02 PHP
WAMP环境中扩展oracle函数库(oci)
2015/06/26 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
php好代码风格的阶段性总结
2016/06/25 PHP
Fleaphp常见函数功能与用法示例
2016/11/15 PHP
js几个不错的函数 $$()
2006/10/09 Javascript
JS实现在Repeater控件中创建可隐藏区域的代码
2010/09/16 Javascript
JavaScript改变HTML元素的样式改变CSS及元素属性
2013/11/12 Javascript
JavaScript获得表单target属性的方法
2015/04/02 Javascript
jquery Deferred 快速解决异步回调的问题
2016/04/05 Javascript
JavaScript中常用的验证reg
2016/10/13 Javascript
js基础之DOM中元素对象的属性方法详解
2016/10/28 Javascript
JS对大量数据进行多重过滤的方法
2016/11/04 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2019/06/05 Javascript
layui实现鼠标移动到单元格上显示数据的方法
2019/09/11 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
2019/12/04 Javascript
vue使用lodop打印控件实现浏览器兼容打印的方法
2021/02/07 Vue.js
[01:32]2014DOTA2西雅图邀请赛 CIS我们有信心进入正赛
2014/07/08 DOTA
[05:28]刀塔密之一:团结则存
2014/07/03 DOTA
Python向Excel中插入图片的简单实现方法
2018/04/24 Python
python的sys.path模块路径添加方式
2020/03/09 Python
Python生成随机验证码代码实例解析
2020/06/09 Python
pandas之分组groupby()的使用整理与总结
2020/06/18 Python
StubHub新加坡:购买和出售全球活动门票
2017/03/10 全球购物
大专生简历的自我评价
2013/11/26 职场文书
会计专业毕业生自荐书
2014/06/25 职场文书
2014年乡镇党建工作总结
2014/11/11 职场文书
初中作文评语集锦
2014/12/25 职场文书
教师节倡议书2015
2015/04/27 职场文书
MySQL基础(一)
2021/04/05 MySQL
MySQL删除和插入数据很慢的问题解决
2021/06/03 MySQL
MySQL插入数据与查询数据
2022/03/25 MySQL
Windows Server 2008配置防火墙策略详解
2022/06/28 Servers