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多线程编程(一):threading模块综述
Apr 05 Python
Python选课系统开发程序
Sep 02 Python
Python实现可自定义大小的截屏功能
Jan 20 Python
Django项目开发中cookies和session的常用操作分析
Jul 03 Python
python 使用re.search()筛选后 选取部分结果的方法
Nov 28 Python
Python matplotlib的使用并自定义colormap的方法
Dec 13 Python
对python判断ip是否可达的实例详解
Jan 31 Python
在win64上使用bypy进行百度网盘文件上传功能
Jan 02 Python
Python网页解析器使用实例详解
May 30 Python
python文件读取失败怎么处理
Jun 23 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
Oct 15 Python
pycharm最新激活码有效期至2100年(亲测可用)
Feb 05 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入门学习知识点六 PHP文件的读写操作代码
2011/07/14 PHP
PHP连接MSSQL2008/2005数据库(SQLSRV)配置实例
2014/10/22 PHP
Symfony2学习笔记之控制器用法详解
2016/03/17 PHP
PHP创建单例后台进程的方法示例
2017/05/23 PHP
几个常用的JavaScript字符串处理函数 - split()、join()、substring()和indexOf()
2009/06/02 Javascript
jquery 表格分页等操作实现代码(pagedown,pageup)
2010/04/11 Javascript
用客户端js实现带省略号的分页
2013/04/27 Javascript
javascript怎么禁用浏览器后退按钮
2014/03/27 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
2015/02/13 Javascript
JavaScript中split() 使用方法汇总
2015/04/17 Javascript
使用JavaScript和CSS实现文本隔行换色的方法
2015/11/04 Javascript
JQuery日期插件datepicker的使用方法
2016/03/03 Javascript
Bootstrap基本组件学习笔记之分页(12)
2016/12/08 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
2017/04/27 Javascript
js+html制作简单日历的方法
2017/06/27 Javascript
详解angularjs实现echart图表效果最简洁教程
2017/11/29 Javascript
JavaScript作用域链实例详解
2019/01/21 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
2019/08/20 Javascript
Python命令行参数解析模块getopt使用实例
2015/04/13 Python
pycharm中连接mysql数据库的步骤详解
2017/05/02 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
2017/08/21 Python
Python使用Matplotlib实现Logos设计代码
2017/12/25 Python
python 实现数组list 添加、修改、删除的方法
2018/04/04 Python
python SVD压缩图像的实现代码
2019/11/05 Python
Python中求对数方法总结
2020/03/10 Python
python转化excel数字日期为标准日期操作
2020/07/14 Python
浅谈Selenium 控制浏览器的常用方法
2020/12/04 Python
css3发光搜索表单分享
2014/04/11 HTML / CSS
5 个强大的HTML5 API 函数推荐
2014/11/19 HTML / CSS
HTML5事件方法全部汇总
2016/05/12 HTML / CSS
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
Nisbets法国:英国最大的厨房和餐饮设备供应商
2019/03/18 全球购物
个人简历自我鉴定
2013/10/11 职场文书
应届生找工作求职信
2014/06/24 职场文书
计算机网络专业自荐信
2014/07/04 职场文书
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers