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的一些用法分享
Oct 07 Python
python实现简单的TCP代理服务器
Oct 08 Python
Python的Twisted框架上手前所必须了解的异步编程思想
May 25 Python
Python竟能画这么漂亮的花,帅呆了(代码分享)
Nov 15 Python
Python编程把二叉树打印成多行代码
Jan 04 Python
VSCode下配置python调试运行环境的方法
Apr 06 Python
mac下如何将python2.7改为python3
Jul 13 Python
python+selenium 定位到元素,无法点击的解决方法
Jan 30 Python
如何基于python操作excel并获取内容
Dec 24 Python
解决Django中checkbox复选框的传值问题
Mar 31 Python
python新手学习使用库
Jun 11 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
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
PHP实现过滤掉非汉字字符只保留中文字符
2015/06/04 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
javaScript对象和属性的创建方法
2007/01/15 Javascript
文本链接逐个出现的js脚本
2007/12/12 Javascript
Javascript中的var_dump函数实现代码
2009/09/07 Javascript
一些javascript一些题目的解析
2010/12/25 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
javascript在网页中实现读取剪贴板粘贴截图功能
2014/06/07 Javascript
jQuery实现的精美平滑二级下拉菜单效果代码
2016/03/28 Javascript
基于jquery实现轮播焦点图插件
2016/03/31 Javascript
JavaScript导航脚本判断当前导航
2016/07/12 Javascript
JavaScript编写一个简易购物车功能
2016/09/17 Javascript
详解jQuery选择器
2016/12/21 Javascript
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
2017/04/21 jQuery
js获取url页面id,也就是最后的数字文件名
2020/09/25 Javascript
[50:15]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
2018/01/18 Python
详解Python中的四种队列
2018/05/21 Python
Python学习笔记之For循环用法详解
2019/08/14 Python
python如何调用百度识图api
2020/09/29 Python
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
英国亚马逊官方网站:Amazon.co.uk
2019/08/09 全球购物
Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
2012/06/05 面试题
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
2015/10/22 面试题
学生励志演讲稿
2014/01/06 职场文书
农民工创业典型事迹
2014/01/25 职场文书
青春演讲稿范文
2014/05/08 职场文书
电子信息专业应届生自荐信
2014/06/04 职场文书
社会体育专业大学生职业生涯规划书
2014/09/17 职场文书
英文感谢信范文
2015/01/21 职场文书
异地恋情人节寄语
2015/02/28 职场文书
中学政教处工作总结
2015/08/13 职场文书
Redis Lua脚本实现ip限流示例
2022/07/15 Redis