#教程

# 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的更多相关文章

  1. 如何将django部署从顶级目录迁移到子目录下(NGINX UWSGI DJANGO)

    因为公司网站合并,要将我们的DJANGO项目从IP的顶级目录迁移到域名的二级目录. 以前硬编码的URL可惨了. 还涉及到upload目录,静态目录,websocket目录. 全用{% url %}问题 ...

  2. nginx+uwsgi+django 部署原理

    python开发群里经常有同学问 nginx+uwsgi+django 着了教程部署,但是不知道他们之间怎么样的关系,于是我就google到了一个让我看起来很认同的图,大家看了也比较认同,于是就分享出 ...

  3. nginx+uwsgi+django开发环境搭建

    Nginx+uWSGI+Djangoi开发环境搭建 Django简介,环境搭建 uWSGI简介,安装与配置 Nginx安装与配置 Nginx+uWSGI+Django原理解析 1.django简介,环 ...

  4. debian完整部署 Nginx + uWSGI + Django

    手工部署一个Django服务器真心不容易,需要安装很多东西.从头开始搭建服务器,主要是为了梳理一下后续开发中一般为碰到的平台部署.对后续问题的解决有一定帮助. 通常部署有2中方式: 一种是使用现成提供 ...

  5. Nginx+uwsgi+Django 的web应用环境部署-完整记录

    Python作为当前最火爆最热门,也是最主要的Web开发语言之一,在其二十多年的历史中出现了数十种Web框架,比如Django.Tornado.Flask.Twisted.Bottle和Web.py等 ...

  6. Nginx+uWSGI+Django部署web服务器

    目录 Nginx+uWSGI+Django部署web服务器 环境说明 前言 搭建项目 Django部署 编辑luffy/luffy/settings.py 编辑luffy/app01/views.py ...

  7. [技术博客]ubuntu+nginx+uwsgi+Django+https的部署

    ubuntu+nginx+uwsgi+Django+https部署文档 配置机器介绍 操作系统:Ubuntu 18.04.2 LTS 64位 python版本:Python 3.6.7 Django版 ...

  8. Nginx+uWSGI+Django环境配置

    通常项目会部署在虚拟环境,虚拟环境的使用可以参考这里,点击前往 当然你也可以直接部署,这里不多说. 一.安装uWSGI 1.通过pip安装 pip install uwsgi 这里只说明了一种安装方式 ...

  9. nginx+uwsgi+django部署流程

    当我们在用django开发的web项目时,开发测试过程中用到的是django自带的测试服务器,由于其安全及稳定等性能方面的局限性,django官方并不建议将测试服务器用在实际生产. nginx+uws ...

  10. 使用Nginx+uWSGI+Django方法部署Django程序

    第一步先解决uwsgi与django的桥接.解决在没有nginx的情况下,如何使用uwsgi+DJANGO来实现一个简单的WEB服务器. 第二步解决uwsgi与Nginx的桥接.通过nginx与uws ...

随机推荐

  1. P2065 [TJOI2011]卡片

    真·会了网络流,忘了匈牙利 一共两种颜色,很容易想到二分图劈配 虽然这题数据水 但是,数据强的话肯定会卡掉的. 为什么? 我暴力质因数都过了 我们可以在两边的数与质因数相连.然后跑网络流. #incl ...

  2. ubuntu安装jdk6

    我的ubuntu版本是12.04的64位的.由于ubuntu官方没有更新最新版的jdk6,所以我们只能主动去oracle公司网站去下载.网站地址:http://www.oracle.com/techn ...

  3. java基础 UDP通信 user datagram protocol 用户数据豆协议 TCP transmission control protocol 传输控制协议 多线程TCP

    无连接通信 UDP 客户端 package com.swift.test; import java.io.IOException; import java.net.DatagramPacket; im ...

  4. Python 创建项目、应用

    1.创建项目 django-admin startproject TestPython 2.创建应用 python3 manage.py startapp books 3.目录讲解 ├── TestP ...

  5. jquery 筛选元素 (3)

    .addBack() 添加堆栈中元素集合到当前集合中,一个选择性的过滤选择器. .addBack([selector]) selector 一个字符串,其中包括一个选择器表达式,匹配当前元素集合,不包 ...

  6. php mysql find_in_set函数 检索单子段 逗号分隔序列

    FIND_IN_SET($kwd,field) 例如在 表 AA中 numbers 字段  保存列数据 1,4,8,75,41,7 就可以使用  FIND_IN_SET(8,numbers)  查询记 ...

  7. html5中的progress兼容ie,制作进度条样式

    html5新增的progress标签用处很大,它可以制作进度条,不用像以前那样用css来制作进度条! 一.progress使用方法 progress标签很好使用,他有两个属性,value和max,va ...

  8. SQL Server 数据库内部版本号

    数据库还原或版本升级出现版本错误时可参考 可以利用SQL语句查看本机数据库版本:select @@VERSION 如果你不确定是源数据库的版本,下面的映射表的SQL Server版本的内部版本号,以便 ...

  9. [Bzoj3252]攻略(dfs序+线段树)

    Description 题目链接 Solution 可以想到,每次肯定是拿最大价值为最优 考虑改变树上一个点的值,只会影响它的子树,也就是dfs序上的一个区间, 于是可以以dfs序建线段树,这样就变成 ...

  10. 笔记-pytho-语法-yield

    笔记-python-语法-yield 1.      yield 1.1.    yield基本使用 def fab(max): n,a,b = 0, 0, 1 while n < max: y ...