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应用程序在windows下不出现cmd窗口的办法
May 29 Python
Python 自动化表单提交实例代码
Jun 08 Python
Python从零开始创建区块链
Mar 06 Python
python实现决策树、随机森林的简单原理
Mar 26 Python
利用numpy和pandas处理csv文件中的时间方法
Apr 19 Python
Python实现去除列表中重复元素的方法总结【7种方法】
Feb 16 Python
Python3.8中使用f-strings调试
May 22 Python
python在openstreetmap地图上绘制路线图的实现
Jul 11 Python
python Pandas如何对数据集随机抽样
Jul 29 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
Aug 06 Python
详解Python文件修改的两种方式
Aug 22 Python
Pyqt5 关于流式布局和滚动条的综合使用示例代码
Mar 24 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
php垃圾代码优化操作代码
2010/08/05 PHP
学习使用curl采集curl使用方法
2012/01/11 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
用js生产批量批处理执行命令
2008/07/28 Javascript
Javascript Cookie读写删除操作的函数
2010/03/02 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
javascript实现分栏显示小技巧附图
2014/10/13 Javascript
jQuery插件PageSlide实现左右侧栏导航菜单
2015/04/12 Javascript
jquery编写Tab选项卡滚动导航切换特效
2020/07/17 Javascript
jQuery 监控键盘一段时间没输入
2016/04/22 Javascript
微信小程序 数据遍历的实现
2017/04/05 Javascript
JS触摸事件、手势事件详解
2017/05/04 Javascript
详解Vue2.0 事件派发与接收
2017/09/05 Javascript
Js利用console计算代码运行时间的方法示例
2017/09/24 Javascript
vue数据控制视图源码解析
2018/03/28 Javascript
微信小程序实现默认第一个选中变色效果
2018/07/17 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
解决vue动态路由异步加载import组件,加载不到module的问题
2020/07/26 Javascript
python操作CouchDB的方法
2014/10/08 Python
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
Python实现的根据文件名查找数据文件功能示例
2018/05/02 Python
Python使用pymongo模块操作MongoDB的方法示例
2018/07/20 Python
Python反射和内置方法重写操作详解
2018/08/27 Python
Python3视频转字符动画的实例代码
2019/08/29 Python
Python几种常见算法汇总
2020/06/02 Python
python3.5的包存放的具体路径
2020/08/16 Python
CSS3 渐变(Gradients)之CSS3 径向渐变
2016/07/08 HTML / CSS
Chain Reaction Cycles俄罗斯:世界上最大的在线自行车商店
2019/08/27 全球购物
复核员上岗演讲稿
2014/01/05 职场文书
函授大学生自我鉴定
2014/02/05 职场文书
最新奶茶店创业计划书范文
2014/02/08 职场文书
纠风工作实施方案
2014/03/15 职场文书
留学生求职信
2014/06/03 职场文书
员工试用期自我鉴定范文
2014/09/15 职场文书
纯CSS实现hover图片pop-out弹出效果的实例代码
2021/04/16 HTML / CSS
关于PostgreSQL JSONB的匹配和交集问题
2021/09/14 PostgreSQL