ngnix+uwsgi+django 部署mezzanine
以下是我用ngnix+uwsgi+django 部署mezzanine全过程,其中ngnix+uwsgi这块是看了虫师大神的博客(http://www.cnblogs.com/fnng/p/5268633.html)
安装必要的包:
[root@iZj6cbstl2n6r280a27eppZ ~]# yum groupinstall "Development tools"
[root@iZj6cbstl2n6r280a27eppZ ~]# yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
django安装完毕后,在控制台输入 pip install mezzanine ,自动安装mezzanine到python目录
mezzanine-project myblog 创建一个项目
cd m1
python manage.py createdb #创建数据库
python manage.py runserver #启动测试服务器
注意:createdb命令是django的migrate命令的一个缩写,这样我们将会安装一些演示的内容,比如联系人表单、图片库等,如果你想要忽略这一步,你也可以在createdb后面加上–nodata选项。
[root@iZj6cbstl2n6r280a27eppZ myblog]# python manage.py collectstatic
[root@iZj6cbstl2n6r280a27eppZ myblog]# python manage.py collecttemplates
[root@iZj6cbstl2n6r280a27eppZ myblog]# yum install libxml2 gcc python-devel
[root@iZj6cbstl2n6r280a27eppZ myblog]# pip install -i https://pypi.tuna.tsinghua.edu.cn/simple uwsgi
[root@iZj6cbstl2n6r280a27eppZ myblog]# uwsgi --http :80 --module myblog.wsgi
[root@iZj6cbstl2n6r280a27eppZ myblog]# nohup python manage.py runserver 0.0.0.0:80 > /tmp/pythondy.log 2>&1 &
1、是标准输出(STDOUT)的文件描述符,2是标准错误(STDERR)的文件描述符
1> python.log 简化为 > python.log,表示把标准输出重定向到python.log这个文件
2、2>&1 表示把标准错误重定向到标准输出,这里&1表示标准输出
为什么需要将标准错误重定向到标准输出的原因,是因为标准错误没有缓冲区,而STDOUT有。
这就会导致 commond > python.log 2> python.log 文件python.log被两次打开,而STDOUT和STDERR将会竞争覆盖。
安装uwsgi:
pip install uwsgi
Hello World[root@iZj6cbstl2n6r280a27eppZ ~]# uwsgi --version
2.0.15
测试 uwsgi 是否正常:
新建 test.py 文件,内容如下
[root@iZj6cbstl2n6r280a27eppZ app]# vim test.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return "Hello World"
[root@iZj6cbstl2n6r280a27eppZ app]# uwsgi --http :8001 --wsgi-file test.py
*** Starting uWSGI 2.0.15 (64bit) on [Thu Sep 14 10:09:23 2017] ***
compiled with version: 4.8.5 20150623 (Red Hat 4.8.5-11) on 12 September 2017 21:19:10
os: Linux-3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017
nodename: iZj6cbstl2n6r280a27eppZ
machine: x86_64
clock source: unix
。。。。。。
打开另一个终端:
[root@iZj6cbstl2n6r280a27eppZ ~]# curl http://127.0.0.1:8001
Hello World[root@iZj6cbstl2n6r280a27eppZ ~]#
即证明安装成功
连接uWSGI和django:
uwsgi --http :8001 --chdir /app/myblog/ --wsgi-file /app/myblog/myblog/wsgi.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191
如果没有报错,即能通过uWSGI运行django
uwsgi 的常用选项:
http : 协议类型和端口号
processes : 开启的进程数量
workers : 开启的进程数量,等同于processes
chdir : 指定运行目录
wsgi-file : 载入wsgi-file
stats : 在指定的地址上,开启状态服务
threads : 运行线程。
master : 允许主进程存在
daemonize : 使进程在后台运行,并将日志打到指定的日志文件或者udp服务器(daemonize uWSGI)。实际上最常用的,还是把运行记录输出到一个本地文件上。
pidfile : 指定pid文件的位置,记录主进程的pid号。
vacuum : 当服务器退出的时候自动清理环境,删除unix socket文件和pid文件
如果上面的命令没有报错,我们将命令用配置文件的形式保存,myweb_uwsgi.ini和manage.py放在同一个目录,新建myweb_uwsgi.ini
[root@iZj6cbstl2n6r280a27eppZ myblog]# cat myweb_uwsgi.ini
[uwsgi]
socket = :8001
chdir = /apps/myblog/
processes = 4
threads = 2
module = myblog.wsgi
master = true
vacuum = true
daemonize = /var/log/uwsgi.log
这里8001是uWSGI连接nginx的关键端口
安装nginx后修改nginx.conf的配置文件:注意server放在http下面
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name 127.0.0.1 主机ip;
#root /usr/share/nginx/html;
# Load configuration files for the default server block.
#include /etc/nginx/default.d/*.conf;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8001;
}
location /static {
alias /app/myblog/static;
}
}
重启nginx 服务,如果能够正常运行,代表nginx正常
其中强调几点:
1.include 必须指定为uwsgi_params;而uwsgi_pass指的IP 端口与myweb_uwsgi.ini配置文件中的必须一致,这是nginx和wsgi产生关联的关键。
2.location /static 代表nginx处理静态页面
3.80是nginx对外的端口
[root@iZj6cbstl2n6r280a27eppZ myblog]# nohup python manage.py runserver 0.0.0.0:80 > /tmp/pythondy.log 2>&1 &
ngnix+uwsgi+django 部署mezzanine的更多相关文章
- Nginx+uWSGI+Django部署web服务器
目录 Nginx+uWSGI+Django部署web服务器 环境说明 前言 搭建项目 Django部署 编辑luffy/luffy/settings.py 编辑luffy/app01/views.py ...
- nginx+uwsgi+django 部署原理
python开发群里经常有同学问 nginx+uwsgi+django 着了教程部署,但是不知道他们之间怎么样的关系,于是我就google到了一个让我看起来很认同的图,大家看了也比较认同,于是就分享出 ...
- ubuntu16.4+nginx+uwsgi+Django 部署上线
Nginx概述 Nginx是一款轻量级的HTTP服务器,采用事件驱动和异步非阻塞处理方式框架,这让其具有极好的IO性能,市场用于服务端的反向代理和负载均衡 Nginx优点 高并发连接:官方测试Ngin ...
- nginx+uwsgi+django部署流程
当我们在用django开发的web项目时,开发测试过程中用到的是django自带的测试服务器,由于其安全及稳定等性能方面的局限性,django官方并不建议将测试服务器用在实际生产. nginx+uws ...
- 在ubuntu16上进行nginx+uwsgi+django部署的简要步骤
网上有很多部署教程,说了一大堆,遇到坑还是要自己一个个解决,这里有几个比较重要的坑大家一定要注意. 1.首先要安装python和python-dev环境,如果没有安装python-dev后面安装有些依 ...
- 10、nginx+uwsgi+django部署(动静分离)
10.1.说明: 1.介绍: 创建Django项目,可以通过 pyhon3 manage.py runserver 0.0.0.0:8080 & 命令更方便地调试程序,但是如果当一个项目完成了 ...
- Ubuntu-18.04.2系统 Nginx+uWSGI+Django 部署生产环境
首先准备环境: 1.使用虚拟机 VMware Workstation Pro (也可以不用),安装Ubuntu-18.04.2系统 开始搭建环境 (因为ubuntu18.4.2集成了python3.6 ...
- ubantu+nginx+uwsgi+django部署
1.更新ubantu的apt apt-get update 必要时候更新系统: apt-get upgrade 2.远程连接服务器 ssh 用户名@ip 上传代码 : scp ...
- 使用docker-compose+nginx+uwsgi+django部署项目
(1)centos上下载docker + docker-compose (2)基础目录 (3)首先创建一个纯净的python+django+uwsgi的镜像,便于后期使用(也可不用创建,后期docke ...
随机推荐
- C# 设计模式巩固笔记 - 建造者模式
前言 写给自己-贵在坚持.建造者模式不复杂,但是想个形象的例子好难. 介绍-建造者模式 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 实现 建造者模式主要是应对复杂 ...
- canvas 遮罩
上一篇介绍了CSS3可以实现mask的方式,本篇介绍canvas同样也可以实现遮罩的方法: 原理: canvas是在画布上绘图,可以绘制各种形状,同时可以在一个层上重复画图,默认情况下后面的会覆盖前面 ...
- 什么是web?什么是web服务器?什么是应用服务器?
1.什么是Web? 简单来说,Web就是在Http协议基础之上,利用浏览器进行访问的网站.目前来看最常用的意义是指在 Intenet 上和 HTML 相关的部分.换句话说,目前在 Intenet 上通 ...
- 12.18 微信扫码获取openid与登陆
官方文档: https://open.weixin.qq.com/ 1.先获取code 1-1 配置项目配置文件 wechat: mpAppId: wxd898fcb01713c658 mpAppSe ...
- three.js入门——先跑个旋转的正方体
WebGl中文网看了几篇教程,又百度了几篇文章,顿时感觉手痒,打开编辑器,写个demo玩玩. demo是写在vue项目中的,所以首先: npm install three --save; npm in ...
- 每周荐书:机器学习、Java虚拟机、微信开发(评论送书)
每周荐书:机器学习.Java虚拟机.微信开发(评论送书) 感谢大家对每周荐书栏目的支持,先公布下上周中奖名单 年精心雕琢,难得的"理论 + 实战案例 + 趟坑经验"总结 从需求分析 ...
- git pull时出现vim窗口的解决办法
最近常用到git来push代码到origin development分支上,也出现了几次vim窗口,防止忘记还是记录下来比较好: 首先按ESC键退出编辑状态,然后按shift+;键,再按wq!保存退出 ...
- IOS开发 ARC和非ARC下使用Block属性的问题
1. Block的声明和线程安全 Block属性的声明,首先需要用copy修饰符,因为只有copy后的Block才会在堆中,栈中的Block的生命周期是和栈绑定的,可以参考之前的文章(iOS: 非AR ...
- iOS怎么来实现关闭自动锁屏
怎么来设置[UIApplication sharedApplication] idleTimerDisabled 属性来控制自动锁屏的效果 // 把设置idleTimerDisabled的代码放到 ...
- 细说C语言的优先级和结合性
Table0. 为什么要掌握优先级1. 优先级1.1 优先级图表1.2 运算符实例1.3 优先级顺口溜2. 结合性3. 参考资料 写代码的时候,常会翻看的一个表就是“c语言运算符优先级表”.c的运算符 ...