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 相关文章推荐
基于python的Tkinter编写登陆注册界面
Jun 30 Python
Django admin美化插件suit使用示例
Dec 12 Python
Python+Django搭建自己的blog网站
Mar 13 Python
解决python写入mysql中datetime类型遇到的问题
Jun 21 Python
在python中以相同顺序shuffle两个list的方法
Dec 13 Python
Python3.5局部变量与全局变量作用域实例分析
Apr 30 Python
Python中Numpy mat的使用详解
May 24 Python
树莓派用python中的OpenCV输出USB摄像头画面
Jun 22 Python
pandas 缺失值与空值处理的实现方法
Oct 12 Python
python如何通过twisted搭建socket服务
Feb 03 Python
Python print不能立即打印的解决方式
Feb 19 Python
python 调用Google翻译接口的方法
Dec 09 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
解析ajax事件的调用顺序
2013/06/17 PHP
PHP的基本常识小结
2013/07/05 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
PHP依赖注入原理与用法分析
2018/08/21 PHP
Laravel中9个不经常用的小技巧汇总
2019/04/16 PHP
jQuery EasyUI API 中文文档 - TreeGrid 树表格使用介绍
2011/11/21 Javascript
js 判断上传文件大小及格式代码
2013/11/13 Javascript
查找页面中所有类为test的结点的方法
2014/03/28 Javascript
js图片滚动效果时间可随意设定当鼠标移上去时停止
2014/06/26 Javascript
JQuery实现动态表格点击按钮表格增加一行
2014/08/24 Javascript
基于jquery固定于顶部的导航响应浏览器滚动条事件
2014/11/02 Javascript
js实现鼠标感应向下滑动隐藏菜单的方法
2015/02/20 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
你知道setTimeout是如何运行的吗?
2016/08/16 Javascript
jQuery动态改变多行文本框高度的方法
2016/09/07 Javascript
AngularJS全局警告框实现方法示例
2017/05/18 Javascript
JavaScript同源策略和跨域访问实例详解
2018/04/03 Javascript
Javascript三种字符串连接方式及性能比较
2019/05/28 Javascript
jquery树形插件zTree高级使用详解
2019/08/16 jQuery
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
python3的输入方式及多组输入方法
2018/10/17 Python
opencv 获取rtsp流媒体视频的实现方法
2019/08/23 Python
利用PyTorch实现VGG16教程
2020/06/24 Python
html5标记文字_动力节点Java学院整理
2017/07/11 HTML / CSS
美国知名的网上鞋类及相关服装零售商:Shoes.com
2017/05/06 全球购物
UNDONE手表官网:世界领先的定制手表品牌
2018/11/13 全球购物
Haggar官网:美国男装品牌
2020/02/16 全球购物
校园环保标语
2014/06/13 职场文书
管理岗位竞聘演讲稿
2014/08/18 职场文书
校运动会广播稿(100篇)
2014/09/12 职场文书
二年级学生期末评语
2014/12/26 职场文书
教师工作表现自我评价
2015/03/05 职场文书
JVM之方法返回地址详解
2022/02/28 Java/Android
Python与C++中梯度方向直方图的实现
2022/03/17 Python
「SHOW BY ROCK!!」“雫シークレットマインド”组合单曲MV公开
2022/03/21 日漫
详解Python中__new__方法的作用
2022/03/31 Python