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上基于Markov链生成伪随机文本的教程
Apr 17 Python
Python RuntimeError: thread.__init__() not called解决方法
Apr 28 Python
Python实现截屏的函数
Jul 25 Python
django轻松使用富文本编辑器CKEditor的方法
Mar 30 Python
Django中的forms组件实例详解
Nov 08 Python
Python使用字典的嵌套功能详解
Feb 27 Python
Python FtpLib模块应用操作详解
Dec 12 Python
TensorFlow:将ckpt文件固化成pb文件教程
Feb 11 Python
python批量替换文件名中的共同字符实例
Mar 05 Python
PYQT5 vscode联合操作qtdesigner的方法
Mar 24 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
Jun 27 Python
详解Python遍历列表时删除元素的正确做法
Jan 07 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
php4的session功能评述(一)
2006/10/09 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
php获取数据库中数据的实现方法
2017/06/01 PHP
jquery tablesorter.js 支持中文表格排序改进
2009/12/09 Javascript
JS获取select的value和text值的简单实例
2014/02/26 Javascript
JS调用页面表格导出excel示例代码
2014/03/18 Javascript
绑定回车enter事件代码
2014/05/18 Javascript
jQuery中[attribute]选择器用法实例
2014/12/31 Javascript
jQuery+AJAX实现网页无刷新上传
2015/02/22 Javascript
微信小程序 教程之模板
2016/10/18 Javascript
JS闭包与延迟求值用法示例
2016/12/22 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
2017/03/01 Javascript
nodejs 终端打印进度条实例代码
2017/04/22 NodeJs
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
bootstrap table表格插件之服务器端分页实例代码
2018/09/12 Javascript
深入了解JavaScript代码覆盖
2019/06/13 Javascript
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
vue+canvas实现拼图小游戏
2020/09/18 Javascript
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
2021/02/23 Vue.js
Python  连接字符串(join %)
2008/09/06 Python
在Python中使用PIL模块处理图像的教程
2015/04/29 Python
Python实现矩阵加法和乘法的方法分析
2017/12/19 Python
flask框架视图函数用法示例
2018/07/19 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
python线程安全及多进程多线程实现方法详解
2019/09/27 Python
Python解析json代码实例解析
2019/11/25 Python
python如何变换环境
2020/07/21 Python
PyTorch中的拷贝与就地操作详解
2020/12/09 Python
Solid & Striped官网:美国泳装品牌
2019/06/19 全球购物
Watchshop德国:欧洲在线手表No.1
2019/06/20 全球购物
物理专业大学生职业生涯规划书
2014/02/07 职场文书
心理健康活动总结
2014/04/30 职场文书
党员检讨书
2014/10/13 职场文书
2015共产党员公开承诺书
2015/01/22 职场文书
PHP中strval()函数实例用法
2021/06/07 PHP
Java线程的6种状态与生命周期
2022/05/11 Java/Android