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 相关文章推荐
2款Python内存检测工具介绍和使用方法
Jun 01 Python
Python获取单个程序CPU使用情况趋势图
Mar 10 Python
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
Apr 16 Python
Python基础知识_浅谈用户交互
May 31 Python
Python学习笔记之Zip和Enumerate用法实例分析
Aug 14 Python
python 装饰器功能与用法案例详解
Mar 06 Python
python实现ssh及sftp功能(实例代码)
Mar 16 Python
python中os包的用法
Jun 01 Python
Python自动化办公Excel模块openpyxl原理及用法解析
Nov 05 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
Mar 04 Python
pytorch 如何使用amp进行混合精度训练
May 24 Python
详解Python中下划线的5种含义
Jul 15 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上的memcache和memcached两个pecl库
2010/03/29 PHP
PHP中call_user_func_array()函数的用法演示
2012/02/05 PHP
php 读取文件夹下所有图片、文件的实例
2018/10/17 PHP
关于viewport,Ext.panel和Ext.form.panel的关系
2009/05/07 Javascript
在一个浏览器里呈现所有浏览器测试结果的前端测试工具的思路
2010/03/02 Javascript
javascript 类型判断代码分析
2010/03/28 Javascript
简约JS日历控件 实例代码
2013/07/12 Javascript
jquery实现的一个文章自定义分段显示功能
2014/05/23 Javascript
AngularJs 禁止模板缓存的方法
2017/11/28 Javascript
Vue 实现展开折叠效果的示例代码
2018/08/27 Javascript
Vue表单提交点击事件只允许点击一次的实例
2020/10/23 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
python在命令行下使用google翻译(带语音)
2014/01/16 Python
Python列表生成器的循环技巧分享
2015/03/06 Python
Python使用一行代码获取上个月是几月
2018/08/30 Python
Python编程实现tail-n查看日志文件的方法
2019/07/08 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
2020/03/16 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
python 浮点数四舍五入需要注意的地方
2020/08/18 Python
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
自定义html标记替换html5新增元素
2008/10/17 HTML / CSS
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
英国第一家领先的在线处方眼镜零售商:Glasses Direct
2018/02/23 全球购物
美国在线咖啡、茶和餐厅供应商:LollicupStore
2018/05/04 全球购物
某公司的.net工程师面试题笔试题
2013/11/22 面试题
分家协议书
2014/04/21 职场文书
导师就业推荐信范文
2014/05/22 职场文书
文化产业实施方案
2014/06/07 职场文书
2014年教师学期工作总结
2014/11/08 职场文书
初中生散播谣言检讨书
2014/11/17 职场文书
白银帝国观后感
2015/06/17 职场文书
nginx简单配置多个server的方法
2021/03/31 Servers
Python中Permission denied的解决方案
2021/04/02 Python
MySQL8.0.24版本Release Note的一些改进点
2021/04/22 MySQL
Redis中一个String类型引发的惨案
2021/07/25 Redis