#教程

# 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. ThinkPHP:create()方法有什么用呢?

    1.create方法可以对POST提交的数据进行处理(通过表中的字段名称与表单提交的名称对应关系自动封装数据实例),例如user表中有一个字段名叫"username",如果表单中有 ...

  2. 03-UI控件浏览

    UI控件浏览 可能用得上的UI控件 为了便于开发者打造各式各样的优秀app,UIKit框架提供了非常多功能强大又易用的UI控件 下面列举一些在开发中可能用得上的UI控件(红色表明最常用,蓝色代表一般, ...

  3. 使用phpExcel将数据批量导出

    if(isset($_POST['export']) && $_POST['export'] == '导出所选数据') { //此处为多选框已勾选的数据 $export_id=$_PO ...

  4. Vscode插件--微信小程序格式化以及高亮组件wxml-vscode

    wxml-vscode wxml-vscode 仓库 提问题 安装 通过 F1 或者 CMD + Shift + P 输入 install. 选择: Install Extension. 特性 格式化 ...

  5. 基于mybatis设计简单信息管理系统---jsp页面

    1.在设计编辑界面的时候需要有一个下拉的列表页,想要他指定到指定的值: <select id="categoryId" name="categoryId" ...

  6. Servlet学习笔记05——什么是jsp?

    1. jsp (java server page) (1)jsp是什么? sun公司制订的一种服务器端动态页面技术规范. 注: 因为虽然使用servlet也可以生成动态页面, 但是过于繁琐(需要使用o ...

  7. 什么是shell 是不是什么时候都可以使用shell

    因为Shell似乎是各UNIX系统之间通用的功能,并且经过了POSIX的标准化.因此,Shell脚本只要"用心写"一次,即可应用到很多系统上.因此,之所以要使用Shell脚本是基于 ...

  8. 再次写给VC++ Windows开发者

    距离我的上一篇文章--写给VC++ Windows开发的初学者已经4年多时间过去了,感慨于时光如梭之余,更感慨于这么多年来(从1998年我初学VC 算起吧)到如今其实我仍然还只是个初学者而已.看看之前 ...

  9. 【Hadoop/Hive/mapreduce】系列之如何删除HIVE 表格的分区

    今天的一个业务场景就是要把三年的数据从第一天不停的融合起来,每一天作为表格一个新的分区.由于空间有限,数据量很大,可能每天数据都是几十个G的大小.所以我需要做的一点就是在融合这一天之后,删除一天的分区 ...

  10. 学习python第十一天,函数3 函数的序列化和反序列化

    我们把变量从内存中变成可存储或传输的过程称之为序列化,序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上. 反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unp ...