#教程

# 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. node.js 练习2 (调用函数)

    1. 调用本地 函数 (1)  创建 n2-1.js ,并输入代码 (2) 运行localhhost:8000 (3)在浏览器中 查看 (4)在cmd中查看 2.调用外部 函数 (1) 创建n2-2. ...

  2. JS将unicode码转中文方法

    原理,将unicode的 \u 先转为 %u,然后使用unescape方法转换为中文. ? 1 2 3 4 <script type="text/javascript"> ...

  3. ckplayer插件播放视频

    官网:超酷网页视频 本篇介绍:插件播放视频,  添加插件(额外的功能),  视频格式之间的转换 PC端一般都是利用插件(Flash)来播放视频,可以支持很多格式.网上很多说这个插件的,这里只是做个记录 ...

  4. 开发必看 | iOS开发常用设计模式!

    ios开发学习中,经常弄不清楚ios的开发模式,今天我们就来进行简单的总结和探讨~(一)代理模式 应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现.优势:解耦合敏捷原则: ...

  5. MySQL如何计算重要的指标,来确定配置是否正确

    在调优MySQL数据库和监控数据库时,很多朋友不知道如何下手,怎么来确定是不是参数设置的合理,下面给出一些如何计算指标,来确定数据库参数是否设置合理,希望给大家一些方法,去做MySQL数据库优化,最好 ...

  6. laravel 安装excel扩展

    1,使用Composer安装依赖 在Laravel项目根目录下使用Composer安装依赖: composer require maatwebsite/excel ~2.1 ps:一定要加上~2.1! ...

  7. PHP 防止 E-mail 注入( PHP 过滤器)

    PHP 防止 E-mail 注入 防止 e-mail 注入的最好方法是对输入进行验证. 下面的代码与上一节类似,不过我们已经增加了检测表单中 email 字段的输入验证程序: <html> ...

  8. 如何删除hive表格的分区

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

  9. 1014-31-首页12-显示weibo未读数--后台运行---定时器

    /** *  当app进入后台时调用 */- (void)applicationDidEnterBackground:(UIApplication *)application{    /**     ...

  10. 笔记-python-语法-super

    笔记-python-语法-super 1.      super 1.1.    super起源 首先要理解类的继承和多继承,子类有时需要调用父类的方法, 非绑定方法: class C(B): def ...