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进阶篇之字典操作总结
Nov 16 Python
Python实现简易版的Web服务器(推荐)
Jan 29 Python
Python3导入CSV文件的实例(跟Python2有些许的不同)
Jun 22 Python
浅谈关于Python3中venv虚拟环境
Aug 01 Python
python+splinter自动刷新抢票功能
Sep 25 Python
对matplotlib改变colorbar位置和方向的方法详解
Dec 13 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
Aug 08 Python
解决Djang2.0.1中的reverse导入失败的问题
Aug 16 Python
Python中PyQt5/PySide2的按钮控件使用实例
Aug 17 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
Aug 23 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
Feb 29 Python
快速了解Python开发环境Spyder
Jun 29 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
mysql 全文搜索 技巧
2007/04/27 PHP
php下使用SMTP发邮件的代码
2008/01/10 PHP
获取PHP警告错误信息的解决方法
2013/06/03 PHP
php实现随机显示图片方法汇总
2015/05/21 PHP
PHP导出Excel实例讲解
2016/01/24 PHP
jquery中animate动画积累的解决方法
2013/10/05 Javascript
javascript的push使用指南
2014/12/05 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
Angular的Bootstrap(引导)和Compiler(编译)机制
2016/06/20 Javascript
IE下JS保存图片的简单实例
2016/07/15 Javascript
jQuery实现右键菜单、遮罩等效果代码
2016/09/27 Javascript
JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
2017/06/19 Javascript
JS实现的邮箱提示补全效果示例
2018/01/30 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
2018/08/09 Javascript
解决vue中post方式提交数据后台无法接收的问题
2018/08/11 Javascript
jquery使用FormData实现异步上传文件
2018/10/25 jQuery
vue-cli3中vue.config.js配置教程详解
2019/05/29 Javascript
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
2019/09/25 Javascript
vue点击自增和求和的实例代码
2019/11/06 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
[02:51]DOTA2英雄基础教程 风暴之灵
2013/12/23 DOTA
python使用正则表达式提取网页URL的方法
2015/05/26 Python
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
2016/02/18 Python
Python中在for循环中嵌套使用if和else语句的技巧
2016/06/20 Python
python使用json序列化datetime类型实例解析
2018/02/11 Python
python批量实现Word文件转换为PDF文件
2018/03/15 Python
python 实现在txt指定行追加文本的方法
2018/04/29 Python
Python调用飞书发送消息的示例
2020/11/10 Python
python3处理word文档实例分析
2020/12/01 Python
赔偿协议书范本
2014/09/12 职场文书
一份教室追逐打闹的检讨书
2014/09/27 职场文书
谢师宴答谢词
2015/01/05 职场文书
廉洁自律证明
2015/06/24 职场文书
MySQL窗口函数的具体使用
2021/11/17 MySQL
Docker下安装Oracle19c
2022/04/13 Servers