[部署开发环境]部署django的生成环境nginx+uwsgi+django
#教程
# ubuntu部署django项目 # 部署准备
- ubuntu操作系统 -- vagrant虚拟
- Nginx服务器 -- 安装在ubuntu的web服务器
- uWSGI应用协议服务模块 -- python的uwsgi模块
- python虚拟环境 -- virtualenv
- django框架 - nginx 配置(http <--> socket)
- uwsgi配置(socket<-->wsgi)
- 系统配 详情见图片linux部署django项目图.png # 工作原理: http
client(浏览器)<---->linuxweb服务器 Nginx--(socket)--uWsgi---->django Nginx 怎么和Python环境上代码连接:
- Nginx<--->uWsgi python模块<--->python的环境
-- Nginx<--->uWsgi (socket)
-- uWsgin<-->django (wsgi) # 部署流程
- 部署ubuntu操作系统
- 安装Nginx服务
- 部署Python环境(包含virtualEnv和真实环境)
- 部署django工程
- 部署uWSGI
- 配置Ngix
- uWSGi配置 # 安装并测试Nginx
- apt install nginx --安装完成已经启动了,不需要/etc/init.d/nginx restart - 启动Nginx
/etc/init.d/nginx start (restart, stop)
- 测试Nginx
-- 浏览器访问主机地址: http://192.168.33.10/
-- 如果看到Welcome to nginx!,表示已经成功!
-- 说明浏览器<--->nginx是正常的 # 创建Python虚拟环境
root@vagrant-ubuntu-trusty-:/home/vagrant# which python
/usr/bin/python
root@vagrant-ubuntu-trusty-:/home/vagrant# python
Python 2.7. (default, Nov , ::) ---可以看到自带的python是2. - apt-get install python-pip
- pip install virtualenv
- cd /
- mkdir -p /opt/envs
- cd /opt/envs
- virtualenv -p /usr/bin/python --no-site-packages env27 # 测试python虚拟环境
- source /opt/envs/env27/bin/activate
- python -V #检查python版本是否和真实环境一致
- deactivate # python 虚拟环境安装django 和mezzanine
-- source /opt/envs/env27/bin/activate
-- pip insatll mezzanine
#因为mezzanine依赖django,所以安装mezzanine会自动安装django, 和自动安装很多其他模块 # 创建mezzanine工程 --测试 浏览器--(http)->mezzannie
-- cd /vagrant_data
-- mezzanine-project myblog
-- cd myblog
-- python manage.py createdb #可能要求输入root密码
-- Python manage.py collectstatic -- 配置settings.py里面的allowed-hosts, 填写自己虚拟机的ip地址 # 不走生成环境,即不走Nginx,浏览器直接到mezzanine
-- python manage.py runserver 192.168.33.10: # 安装uWSGI 测试浏览器-(http)->uWSGI-(wsgi模块)->mezzanine, uwsgi作为测试服务器 - sudo apt-get install python-dev #官网是apt-get install build-essential python-dev - pip install uwsgi #虚拟环境中装
-- 安装不成功,因为plugins/python/uwsgi_python.h::: fatal error: Python.h: No such file or directory
-- /usr/include/Python2. 文件夹没有Python.h这个文件
-- 解决方法 sudo apt-get install python-dev # 测试uwsgi是否正常 - cd /vagrant_data/myblog
- uwsgi --http : --module myblog.wsgi # /vagrant_data/myblog/myblog/wsgi.py 浏览器输入http://192.168.33.10:8000/ 如果页面正常: 说明浏览器--->uwsgi--->django/mezzanine是正常的 # 实现nginx 和uwsgi实现通信(编辑配置文件xx.conf, uwsgi.ini) 实现:浏览器<----(http)---->Nginx<---(socket)---->uWsgi<----(wsgi)---->django/mezzanine -- 配置Nginx的conf a. vim /vagrant_data/myblog/myblog_nginx.conf
upstream django {
# server unix:///path/to/your/mysite/mysite.sock; # for a file socket
server 127.0.0.1:; # for a web port socket (we'll use this first)
}
# configuration of the server
server {
# the port your site will be served on
listen ;
# the domain name it will serve for
server_name 192.168.33.10 ; # substitute your machine's IP address or FQDN
charset utf-; # max upload size
client_max_body_size 75M; # adjust to taste # Django media
#location /media {
# alias /path/to/your/mysite/media; # your Django project's media files - amend as required
#} location /static {
alias /vagrant_data/myblog/static; # your Django project's static files - amend as required
} # Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include /vagrant_data/myblog/uwsgi_params; # the uwsgi_params file you installed
}
} b. 赋值/etc/nginx/uwsgi_params 到工程目录下
cp /etc/nginx/uwsgi_params /vagrant_data/myblog
# uwsgi_params所在目录要和myblog_nginx.conf中的location / { include 目录对应} c. 将myblog_nginx.conf 放到nginx的配置文件目录下(做一个连接即可(快捷方式),保留工程下的myblog_nginx.conf) #配置文件在/etc/nginx/sites-enable中的default中,将其用myblog_nginx.conf替换掉即可,其实default也是一个链接 cd /etc/nginx/sites-enables
rm default
ln -s /vagrant_data/myblog/myblog_nginx.conf myblog d. 重启nginx服务 /etc/init.d/nginx restart -- 配置uwsgi.ini
# mysite_uwsgi.ini file
[uwsgi] # Django-related settings
# the django project directory (full path)
chdir = /vagrant_data/myblog
# Django's wsgi file
module = myblog.wsgi # process-related settings
# master
master = true
# maximum number of worker processes
processes = threads =
max-requests = # ... with appropriate permissions - may be needed
socket = /vagrant_data/myblog/nginx.sock #这里要和nginx的uwsgi_pass设置一致
chmod-socket =
# clear environment on exit
vacuum = true -- 启动uwsgi
-- 未完,待继续
[部署开发环境]部署django的生成环境nginx+uwsgi+django的更多相关文章
- 如何将django部署从顶级目录迁移到子目录下(NGINX UWSGI DJANGO)
因为公司网站合并,要将我们的DJANGO项目从IP的顶级目录迁移到域名的二级目录. 以前硬编码的URL可惨了. 还涉及到upload目录,静态目录,websocket目录. 全用{% url %}问题 ...
- nginx+uwsgi+django 部署原理
python开发群里经常有同学问 nginx+uwsgi+django 着了教程部署,但是不知道他们之间怎么样的关系,于是我就google到了一个让我看起来很认同的图,大家看了也比较认同,于是就分享出 ...
- nginx+uwsgi+django开发环境搭建
Nginx+uWSGI+Djangoi开发环境搭建 Django简介,环境搭建 uWSGI简介,安装与配置 Nginx安装与配置 Nginx+uWSGI+Django原理解析 1.django简介,环 ...
- debian完整部署 Nginx + uWSGI + Django
手工部署一个Django服务器真心不容易,需要安装很多东西.从头开始搭建服务器,主要是为了梳理一下后续开发中一般为碰到的平台部署.对后续问题的解决有一定帮助. 通常部署有2中方式: 一种是使用现成提供 ...
- Nginx+uwsgi+Django 的web应用环境部署-完整记录
Python作为当前最火爆最热门,也是最主要的Web开发语言之一,在其二十多年的历史中出现了数十种Web框架,比如Django.Tornado.Flask.Twisted.Bottle和Web.py等 ...
- Nginx+uWSGI+Django部署web服务器
目录 Nginx+uWSGI+Django部署web服务器 环境说明 前言 搭建项目 Django部署 编辑luffy/luffy/settings.py 编辑luffy/app01/views.py ...
- [技术博客]ubuntu+nginx+uwsgi+Django+https的部署
ubuntu+nginx+uwsgi+Django+https部署文档 配置机器介绍 操作系统:Ubuntu 18.04.2 LTS 64位 python版本:Python 3.6.7 Django版 ...
- Nginx+uWSGI+Django环境配置
通常项目会部署在虚拟环境,虚拟环境的使用可以参考这里,点击前往 当然你也可以直接部署,这里不多说. 一.安装uWSGI 1.通过pip安装 pip install uwsgi 这里只说明了一种安装方式 ...
- nginx+uwsgi+django部署流程
当我们在用django开发的web项目时,开发测试过程中用到的是django自带的测试服务器,由于其安全及稳定等性能方面的局限性,django官方并不建议将测试服务器用在实际生产. nginx+uws ...
- 使用Nginx+uWSGI+Django方法部署Django程序
第一步先解决uwsgi与django的桥接.解决在没有nginx的情况下,如何使用uwsgi+DJANGO来实现一个简单的WEB服务器. 第二步解决uwsgi与Nginx的桥接.通过nginx与uws ...
随机推荐
- .svn文件被删除的解决办法
不小心把文件夹下的.svn给删除了,svn提交时会报如下错误: 包含工作副本管理数据的目录“/home/usa/svn/aispeech/air201102/branches/tools/res/di ...
- 【洛谷P1525】[NOIP2010]关押罪犯
关押罪犯 题目链接 思路: 二分图或并查集 这里讲并查集算法: 1.将每对罪犯的冲突关系按影响从大到小排序 2.将集合与(i+n)合并表示编号为i的罪犯不能在该集合内 3.依次从大到小处理冲突关系: ...
- Multigrid for Poisson’s Equation
泊松方程如何用多重网格求解 来源:佐治亚理工学院 教授:Prof. Richard Vuduc 主页:http://vuduc.org/index.php 教授内容:http://vuduc.org/ ...
- redis事务中的WATCH命令和基于CAS的乐观锁
转自:http://blog.sina.com.cn/s/blog_ae8441630101cgy3.html 在Redis的事务中,WATCH命令可用于提供CAS(check-and-set)功能. ...
- ES6编程规范
andre es6 js
- bootloader svc 模式
bootloader 和操作系统都是工作在svc模式下 /* * set the cpu to SVC32 mode */ mrs r0,cpsr bic r0,r0,#0x1f orr r0,r0, ...
- 日期格式兼容iOS
iOS不支持2016-02-11 12:21:12格式的日期 目前Safari可以支持的标准格式: MM-dd-yyyy yyyy/MM/dd MM/dd/yyyy MMMM dd, yyyy MMM ...
- react native "Unable to resolve module `AccessibilityInfo`
error: bundling failed: "Unable to resolve module `AccessibilityInfo` from `/Users/apple/Websto ...
- P1414 又是毕业季II (数学?
题目背景 “叮铃铃铃”,随着高考最后一科结考铃声的敲响,三年青春时光顿时凝固于此刻.毕业的欣喜怎敌那离别的不舍,憧憬着未来仍毋忘逝去的歌.1000多个日夜的欢笑和泪水,全凝聚在毕业晚会上,相信,这一定 ...
- 笔记-docker-3 使用
笔记-docker-3 使用 1. 镜像 image是docker最重要的概念,docker运行容器前需要本地存在对应的镜像,如果没有,会尝试从默认镜像库下载. 1.1. 镜像获取 查 ...