nginx+uwsgi+django环境搭建的方法步骤


Posted in Python onNovember 25, 2019

环境搭建

1.安装uwsgi、nginx和django

apt install nginx
pip install uwsgi
pip install django

2.测试uwsgi和nginx的连接

PS:下面的例子采用的是 unix socket 的链接发送

创文件foobar.py

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

创文件foobar_uwsgi.ini

[uwsgi]

# Django-related settings
# the base directory (full path)
chdir      = /home/dmd/project/ENV/mysite
# Django's wsgi file
module     = foobar

# process-related settings
# master
master     = true
# maximum number of worker processes
processes    = 10
# the socket (use the full path to be safe
socket     = /home/dmd/project/ENV/mysite/foobar.sock
# ... with appropriate permissions - may be needed
# chmod-socket  = 664
# clear environment on exit
# 这个配置本来是true,即退出就删掉socket,但这会导致nginx的启动失败,所以改为false
vacuum     = false

创文件foobar_nginx.conf

server {
  listen     8099;
  server_name  127.0.0.1
  charset UTF-8;
  access_log   /var/log/nginx/myweb_access.log;
  error_log    /var/log/nginx/myweb_error.log;

  client_max_body_size 75M;

  location / {
    include uwsgi_params;
    uwsgi_pass unix:///home/dmd/project/ENV/mysite/foobar.sock; # 用unix socket
    # uwsgi_pass 127.0.0.1:8000 # 用TCP socket
    uwsgi_read_timeout 2;
  }
 }

将这个文件链接到/etc/nginx/sites-enabled,这样nginx就可以看到它了

sudo ln -s ~/path/to/your/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/

启动nginx

sudo service nginx start

启动uwsgi

uwsgi --ini foobar_uwsgi.ini

访问127.0.0.1:8099,如果出现“Hello world”就说明下面连接栈是成功的。

the web client <-> the web server <-> the socket <-> uWSGI <-> Python

3.建立整个连接栈

the web client <-> the web server <-> the socket <-> uwsgi <-> Django

建立django项目

django-admin startproject mysite

在项目的根目录建立mysite_uwsgi.ini

# myweb_uwsgi.ini file
[uwsgi]

# Django-related settings

socket = mysite.sock

# the base directory (full path)
chdir      = /home/dmd/project/ENV/mysite

# Django s wsgi file
module     = mysite.wsgi

# process-related settings
# master
master     = true

# maximum number of worker processes
processes    = 4

# ... with appropriate permissions - may be needed
# chmod-socket  = 664
# clear environment on exit
vacuum     = false

在项目根目录建立mysite_nginx.conf

server {
  listen     8099;
  server_name  127.0.0.1
  charset UTF-8;
  access_log   /var/log/nginx/myweb_access.log;
  error_log    /var/log/nginx/myweb_error.log;

  client_max_body_size 75M;

  location / {
    include uwsgi_params;
    uwsgi_pass unix:///home/dmd/project/ENV/mysite/mysite.sock; # 用unix socket
    # uwsgi_pass 127.0.0.1:8000 # 用TCP socket
    uwsgi_read_timeout 2;
  }
  location /static {
    expires 30d;
    autoindex on;
    add_header Cache-Control private;
    alias /home/dmd/project/ENV/mysite/static/;
   }
 }

链接sudo ln -s ~/path/to/your/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/

运行

# 运行uwsgi
uwsgi --ini mysite_uwsgi.ini
# 开启niginx
sudo service nginx start

测试。访问 127.0.0.1:8099 ,如果看到django的页面,说明成功。

完整的目录树

mysite/
├── db.sqlite3
├── manage.py
├── mysite
│  ├── __init__.py
│  ├── __pycache__
│  │  ├── __init__.cpython-36.pyc
│  │  ├── settings.cpython-36.pyc
│  │  ├── urls.cpython-36.pyc
│  │  └── wsgi.cpython-36.pyc
│  ├── settings.py
│  ├── urls.py
│  └── wsgi.py
├── mysite.sock
├── mysite_nginx.conf
├── mysite_uwsgi.ini
└── uwsgi_params

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python3 入门教程 简单但比较不错
Nov 29 Python
python使用pymysql实现操作mysql
Sep 13 Python
Python中存取文件的4种不同操作
Jul 02 Python
浅析python3字符串格式化format()函数的简单用法
Dec 07 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
Jan 14 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
Jun 27 Python
opencv导入头文件时报错#include的解决方法
Jul 31 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
Aug 01 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
Feb 28 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
Mar 14 Python
Python如何执行精确的浮点数运算
Jul 31 Python
教你使用Python pypinyin库实现汉字转拼音
May 27 Python
python找出列表中大于某个阈值的数据段示例
Nov 24 #Python
python对Excel按条件进行内容补充(推荐)
Nov 24 #Python
使用Python的datetime库处理时间(RPA流程)
Nov 24 #Python
Python 中判断列表是否为空的方法
Nov 24 #Python
python3中利用filter函数输出小于某个数的所有回文数实例
Nov 24 #Python
python求质数列表的例子
Nov 24 #Python
解决Python中回文数和质数的问题
Nov 24 #Python
You might like
Windows下利用Gvim写PHP产生中文乱码问题解决方法
2011/04/20 PHP
在你的网页中嵌入外部网页的方法
2007/04/02 Javascript
使用js正则控制input标签只允许输入的值
2013/07/29 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
jQuery中:reset选择器用法实例
2015/01/04 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
vue单页应用加百度统计代码(亲测有效)
2018/01/31 Javascript
nodejs基于express实现文件上传的方法
2018/03/19 NodeJs
详解webpack 最简打包结果分析
2019/02/20 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
Vuex新手的理解与使用详解
2019/05/31 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
2019/07/22 Javascript
HTML+JavaScript实现扫雷小游戏
2019/09/30 Javascript
jquery 遍历hash操作示例【基于ajax交互】
2019/10/12 jQuery
JavaScript中window和document用法详解
2020/07/28 Javascript
python聊天程序实例代码分享
2013/11/18 Python
python sys模块sys.path使用方法示例
2013/12/04 Python
python实现无证书加密解密实例
2014/10/27 Python
Python脚本实现DNSPod DNS动态解析域名
2015/02/14 Python
Python定时执行之Timer用法示例
2015/05/27 Python
对numpy 数组和矩阵的乘法的进一步理解
2018/04/04 Python
在python image 中安装中文字体的实现方法
2019/08/22 Python
python+mysql实现个人论文管理系统
2019/10/25 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
2020/05/19 Python
CSS3 3D立方体效果示例-transform也不过如此
2016/12/05 HTML / CSS
网页切图的CSS和布局经验与要点
2015/04/09 HTML / CSS
使用CSS3中的calc()属性来以算式表达尺寸数值
2016/06/06 HTML / CSS
Doyoueven官网:澳大利亚健身服饰和配饰品牌
2019/03/24 全球购物
英国Flybe航空官网:欧洲最大的独立支线廉价航空公司
2019/07/15 全球购物
DC Shoes荷兰官方网站:美国极限运动品牌
2019/10/22 全球购物
四年级数学上册教学计划
2015/01/20 职场文书
2015年世界水日活动总结
2015/02/09 职场文书
医院保洁员岗位职责
2015/02/13 职场文书
学历证明样本
2015/06/16 职场文书
七年级作文之英语老师
2019/10/28 职场文书