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入门者的一些编程建议
Jun 15 Python
学习Python selenium自动化网页抓取器
Jan 20 Python
python中(str,list,tuple)基础知识汇总
Feb 20 Python
Tensorflow卷积神经网络实例
May 24 Python
python生成带有表格的图片实例
Feb 03 Python
利用Django模版生成树状结构实例代码
May 19 Python
python标记语句块使用方法总结
Aug 05 Python
在python中使用nohup命令说明
Apr 16 Python
python安装和pycharm环境搭建设置方法
May 27 Python
Django数据库迁移常见使用方法
Nov 12 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
Dec 21 Python
python绘图subplots函数使用模板的示例代码
Apr 30 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
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
php简单的留言板与回复功能具体实现
2014/02/19 PHP
PHP魔术引号所带来的安全问题分析
2014/07/15 PHP
如何正确配置Nginx + PHP
2016/07/15 PHP
jQuery DIV弹出效果实现代码
2009/07/03 Javascript
JavaScript中的Math 使用介绍
2014/04/21 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
2016/09/17 Javascript
原生js实现简单的模态框示例
2017/09/08 Javascript
手动用webpack搭建第一个ReactApp的示例
2018/04/11 Javascript
通过函数作用域和块级作用域看javascript的作用域链
2018/08/05 Javascript
浅谈Express.js解析Post数据类型的正确姿势
2019/05/30 Javascript
JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去
2019/07/23 Javascript
微信小程序转发事件实现解析
2019/10/22 Javascript
详解 javascript对象创建模式
2020/10/30 Javascript
[10:07]2014DOTA2国际邀请赛 实拍选手现场观战DK对阵Titan
2014/07/12 DOTA
[01:21]辉夜杯战队访谈宣传片—CDEC
2015/12/25 DOTA
python 快速排序代码
2009/11/23 Python
在Django中创建动态视图的教程
2015/07/15 Python
Python数组遍历的简单实现方法小结
2016/04/27 Python
Python3连接SQLServer、Oracle、MySql的方法
2018/06/28 Python
python如何解析配置文件并应用到项目中
2019/06/27 Python
Django 缓存配置Redis使用详解
2019/07/23 Python
python的scipy.stats模块中正态分布常用函数总结
2021/02/19 Python
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
Linux管理员面试经常问道的相关命令
2014/12/12 面试题
常见的软件开发流程有哪些
2015/11/14 面试题
JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
2013/07/02 面试题
如何写一份好的英文求职信
2014/03/19 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
华清池导游词
2015/02/02 职场文书
怎样写好工作计划
2019/04/10 职场文书
python 如何将两个实数矩阵合并为一个复数矩阵
2021/05/19 Python
MySQL Router实现MySQL的读写分离的方法
2021/05/27 MySQL
聊聊CSS粘性定位sticky案例解析
2022/06/01 HTML / CSS
Rust中的Struct使用示例详解
2022/08/14 Javascript