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中的异常处理
Apr 28 Python
Python生成不重复随机值的方法
May 11 Python
Python数据分析之获取双色球历史信息的方法示例
Feb 03 Python
windows下python安装小白入门教程
Sep 18 Python
python使用matplotlib绘制热图
Nov 07 Python
python获取中文字符串长度的方法
Nov 14 Python
python reverse反转部分数组的实例
Dec 13 Python
python将pandas datarame保存为txt文件的实例
Feb 12 Python
基于python分析你的上网行为 看看你平时上网都在干嘛
Aug 13 Python
使用Python制作新型冠状病毒实时疫情图
Jan 28 Python
Python类super()及私有属性原理解析
Jun 15 Python
带你学习Python如何实现回归树模型
Jul 16 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/02 无线电
使用PHP实现阻止用户上传成人照片或者裸照
2014/12/25 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
2015/03/19 PHP
PHP程序中使用adodb连接不同数据库的代码实例
2015/12/19 PHP
yii2 commands模式以及配置crontab定时任务的方法
2017/08/19 PHP
PHP5.5新特性之yield理解与用法实例分析
2019/01/11 PHP
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
Angularjs编写KindEditor,UEidtor,jQuery指令
2015/01/28 Javascript
jquery手风琴特效插件
2015/02/04 Javascript
jQuery插件animateSlide制作多点滑动幻灯片
2015/06/11 Javascript
超赞的动手创建JavaScript框架的详细教程
2015/06/30 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
原生JavaScript实现瀑布流布局
2020/06/28 Javascript
阻止表单提交按钮多次提交的完美解决方法
2016/05/16 Javascript
Bootstrap基本组件学习笔记之面板(14)
2016/12/08 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
2017/04/28 Javascript
React学习笔记之条件渲染(一)
2017/07/02 Javascript
angular动态表单制作
2018/02/23 Javascript
Vue.js组件实现选项卡以及切换特效
2019/07/24 Javascript
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
[01:19]DOTA2城市挑战赛报名开始 开启你的城市传奇
2018/03/23 DOTA
python通过urllib2爬网页上种子下载示例
2014/02/24 Python
python处理中文编码和判断编码示例
2014/02/26 Python
python简单获取数组元素个数的方法
2015/07/13 Python
Python 给屏幕打印信息加上颜色的实现方法
2019/04/24 Python
Python简单基础小程序的实例代码
2019/04/28 Python
python的flask框架难学吗
2020/07/31 Python
Python如何读写字节数据
2020/08/05 Python
css3的focus-within选择器的使用
2020/05/11 HTML / CSS
德国自行车商店:Tretwerk
2019/06/21 全球购物
街道党工委党的群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
2014年幼儿园班级工作总结
2014/12/17 职场文书
普宁寺导游词
2015/02/04 职场文书
MySQL 慢查询日志深入理解
2021/04/22 MySQL
Oracle 触发器trigger使用案例
2022/02/24 Oracle