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访问sina首页中文的处理方法
Feb 24 Python
浅谈python中截取字符函数strip,lstrip,rstrip
Jul 17 Python
分享一下Python 开发者节省时间的10个方法
Oct 02 Python
win7下python3.6安装配置方法图文教程
Jul 31 Python
Python3之不使用第三方变量,实现交换两个变量的值
Jun 26 Python
Python 爬虫实现增加播客访问量的方法实现
Oct 31 Python
python使用opencv在Windows下调用摄像头实现解析
Nov 26 Python
Python搭建HTTP服务过程图解
Dec 14 Python
在jupyter notebook中调用.ipynb文件方式
Apr 14 Python
python实现单机五子棋
Aug 28 Python
Pycharm添加虚拟解释器报错问题解决方案
Oct 13 Python
Django与数据库交互的实现
Jun 03 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
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
解析php时间戳与日期的转换
2013/06/06 PHP
一个php生成16位随机数的代码(两种方法)
2014/09/16 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
2018/05/23 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
一些易混淆且不常用的属性,希望有用
2007/01/29 Javascript
JQuery上传插件Uploadify使用详解及错误处理
2010/04/27 Javascript
js列举css中所有图标的实现代码
2011/07/04 Javascript
jquery中each方法示例和常用选择器
2014/07/08 Javascript
jQuery性能优化技巧分析
2015/02/20 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
用headjs来管理和加载js 提高网站加载速度
2016/11/29 Javascript
js实现移动端微信页面禁止字体放大
2017/02/16 Javascript
微信小程序 后台登录(非微信账号)实例详解
2017/03/31 Javascript
除Console.log()外更多的Javascript调试命令
2018/01/24 Javascript
微信小程序实现滚动消息通知
2018/02/02 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
React Native中Mobx的使用方法详解
2018/12/04 Javascript
详解Express笔记之动态渲染HTML(新手入坑)
2018/12/13 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
微信小程序通过一个json实现分享朋友圈图片
2019/09/03 Javascript
layuiAdmin循环遍历展示商品图片列表的方法
2019/09/16 Javascript
javascript实现前端分页效果
2020/06/24 Javascript
原生js实现下拉框选择组件
2021/01/20 Javascript
django框架模型层功能、组成与用法分析
2019/07/30 Python
python如何实现单链表的反转
2020/02/10 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
2020/05/22 Python
python两个list[]相加的实现方法
2020/09/23 Python
canvas绘制图片drawImage使用方法
2020/09/15 HTML / CSS
美国最好的钓鱼、狩猎和划船装备商店:Bass Pro Shops
2018/12/02 全球购物
GWebs公司笔试题
2012/05/04 面试题
岗位竞聘演讲稿范文
2014/04/24 职场文书
cf战队收人口号
2014/06/21 职场文书
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
学习焦裕禄观后感
2015/06/09 职场文书
SpringBoot 集成短信和邮件 以阿里云短信服务为例
2022/04/22 Java/Android