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判断图片宽度和高度后删除图片的方法
May 22 Python
python 与GO中操作slice,list的方式实例代码
Mar 20 Python
Python之re操作方法(详解)
Jun 14 Python
python redis 删除key脚本的实例
Feb 19 Python
Python求一批字符串的最长公共前缀算法示例
Mar 02 Python
简单了解python代码优化小技巧
Jul 08 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
Aug 10 Python
python 并发下载器实现方法示例
Nov 22 Python
python plotly画柱状图代码实例
Dec 13 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
Dec 26 Python
简单了解django文件下载方式
Feb 10 Python
Jupyter Notebook 远程访问配置详解
Jan 11 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
咖啡的化学
2021/03/03 咖啡文化
PHP新手上路(十)
2006/10/09 PHP
基于php无限分类的深入理解
2013/06/02 PHP
PHP Global变量定义当前页面的全局变量实现探讨
2013/06/05 PHP
PHP 提取图片img标记中的任意属性的简单实例
2013/12/10 PHP
Zend Framework动作控制器用法示例
2016/12/09 PHP
php 后端实现JWT认证方法示例
2018/09/04 PHP
PHP文件打开关闭及读写操作示例解析
2020/08/06 PHP
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
2011/04/06 Javascript
基于JQuery 选择器使用说明介绍
2013/04/18 Javascript
Extjs4 Treegrid 使用心得分享(经验篇)
2013/07/01 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
2013/07/09 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
基于javascript实现全屏漂浮广告
2016/03/31 Javascript
jQuery轻松实现表格的隔行变色和点击行变色的实例代码
2016/05/09 Javascript
js中利用cookie实现记住密码功能
2020/08/20 Javascript
JS实现重新加载当前页面
2016/11/29 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
jquery ajax加载数据前台渲染方式 不用for遍历的方法
2018/08/09 jQuery
Vue替代marquee标签超出宽度文字横向滚动效果
2019/12/09 Javascript
JS 设计模式之:单例模式定义与实现方法浅析
2020/05/06 Javascript
python3简单实现微信爬虫
2015/04/09 Python
python虚拟环境virualenv的安装与使用
2016/12/18 Python
浅谈python中拼接路径os.path.join斜杠的问题
2018/10/23 Python
Python使用scipy模块实现一维卷积运算示例
2019/09/05 Python
Python获取对象属性的几种方式小结
2020/03/12 Python
浅谈django 模型类使用save()方法的好处与注意事项
2020/03/28 Python
Python3爬虫中Ajax的用法
2020/07/10 Python
详解python 支持向量机(SVM)算法
2020/09/18 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
html5时钟实现代码
2010/10/22 HTML / CSS
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
追悼会上的答谢词
2014/01/10 职场文书
大学社团活动策划书
2014/01/26 职场文书
mybatis3中@SelectProvider传递参数方式
2021/08/04 Java/Android