解析Mac OS下部署Pyhton的Django框架项目的过程


Posted in Python onMay 03, 2016

一、安装软件包并创建项目

$sudo pip install django
$sudo python -c "import django;print django.VERSION"
(1, 7, 0, 'final', 0)
$sudo django-admin startproject cmdb #创建项目
$sudo django-admin startapp cmdb #创建应用

二、修改配置
1、修改settings.py,添加cmdb应用,以及其他设置

INSTALLED_APPS = (
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'cmdb',
)
DATABASES = {
 'default': {
  'ENGINE': 'django.db.backends.mysql',
  'NAME': 'cmdb',
  'USER': 'cmdb',
  'PASSWORD': 'cmdb',
  'HOST': 'localhost',
  'PORT': '3306',
 }
}
LANGUAGE_CODE = 'zh-cn'
TIME_ZONE = 'Asia/Shanghai'

2、修改urls.py和views.py
urls.py内容如下:

from django.conf.urls import patterns, include, url
from django.contrib import admin
urlpatterns = patterns('',
 # Examples:
 # url(r'^$', 'cmdb.views.home', name='home'),
 # url(r'^blog/', include('blog.urls')),
 url(r'^admin/', include(admin.site.urls)),
 url(r'^index/','cmdb.views.index'),
)

views.py内容如下:

from django.shortcuts import render
from django.http import HttpResponse
def index(req):
 return HttpResponse('<h1>hello welcome to django!</h1>')

3、测试
启动django

#sudo python manage.py runserver

访问:
http://localhost:8000/index

PS:gunicorn结合nginx来部署django应用
说明:gunicorn部署django程序,前端用nginx处理服务器请求,静态资源直接处理,动态资源转发到后端。

目录结构:

cmdb/

├── cmdb

│  └── migrations

├── device_manage

├── idcroom_manage

├── operation

│  └── migrations

└── static

  └── admin

    ├── css

    ├── img

    │  └── gis

    └── js

      └── admin

1、安装gunicorn和django

pip install gunicorn
pip install django

2、安装MySQLdb

wget https://pypi.python.org/packages/source/M/MySQL-python/MySQL-python-1.2.5.zip
cd MySQL-python-1.2.5
python setup.py install

3、用gunicorn启动django程序

[root@backup cmdb]# gunicorn --version
gunicorn (version 19.1.1)
gunicorn cmdb.wsgi:application --bind=127.0.0.1:8000 --daemon

gunicorn参数:

?bind指定侦听地址

?daemon放到后台运行

更多参数:gunicorn ?help

nginx反向代理:

server {
   listen 8080;
   server_name 192.168.3.21;
   location / {
    proxy_pass http://127.0.0.1:8000;
    proxy_next_upstream http_500 http_502 http_503 http_504 error timeout invalid_header;
    proxy_set_header X-Forwared-For $proxy_add_x_forwarded_for ;
    proxy_set_header Host $http_host ;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
   } 
 location /static {
alias /opt/wwwroot/cmdb/static;
 }
 access_log logs/cmdb.access.log;
  }
Python 相关文章推荐
Python标准库之sqlite3使用实例
Nov 25 Python
Python使用urllib2模块抓取HTML页面资源的实例分享
May 03 Python
django轻松使用富文本编辑器CKEditor的方法
Mar 30 Python
Python3安装Scrapy的方法步骤
Nov 23 Python
python+pyqt5实现KFC点餐收银系统
Jan 24 Python
selenium+python截图不成功的解决方法
Jan 30 Python
在django中,关于session的通用设置方法
Aug 06 Python
深入了解Python在HDA中的应用
Sep 05 Python
使用Django搭建一个基金模拟交易系统教程
Nov 18 Python
Python 跨.py文件调用自定义函数说明
Jun 01 Python
Python如何读写二进制数组数据
Aug 01 Python
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
Oct 16 Python
Python使用urllib2模块抓取HTML页面资源的实例分享
May 03 #Python
Python中字符串的格式化方法小结
May 03 #Python
Python实现约瑟夫环问题的方法
May 03 #Python
Python实现堆排序的方法详解
May 03 #Python
python web框架学习笔记
May 03 #Python
Python批量修改文本文件内容的方法
Apr 29 #Python
Python+Opencv识别两张相似图片
Mar 23 #Python
You might like
php array_walk() 数组函数
2011/07/12 PHP
PHP闭包定义与使用简单示例
2018/04/13 PHP
PHP的mysqli_ssl_set()函数讲解
2019/01/23 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
2019/09/18 PHP
为Extjs加加速(javascript加速)
2010/08/19 Javascript
对JavaScript的全文搜索实现相关度评分的功能的方法
2015/06/24 Javascript
javascript数据结构之二叉搜索树实现方法
2015/11/25 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
Bootstrap编写一个兼容主流浏览器的受众门户式风格页面
2016/07/01 Javascript
jQuery实现定位滚动条位置
2016/08/05 Javascript
概述javascript在Google IE中的调试技巧
2016/11/24 Javascript
js 轮播效果实例分享
2016/12/28 Javascript
微信小程序开发之入门实例教程篇
2017/03/07 Javascript
vue-cli webpack模板项目搭建及打包时路径问题的解决方法
2018/02/26 Javascript
利用nodeJs anywhere搭建本地服务器环境的方法
2018/05/12 NodeJs
axios使用拦截器统一处理所有的http请求的方法
2018/11/02 Javascript
关于layui 弹出层一闪而过就消失的解决方法
2019/09/09 Javascript
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
python生成lmdb格式的文件实例
2018/11/08 Python
Python 私有化操作实例分析
2019/11/21 Python
Python中Subprocess的不同函数解析
2019/12/10 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
2020/05/20 Python
基于python实现生成指定大小txt文档
2020/07/20 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
HTML5实现获取地理位置信息并定位功能
2015/04/25 HTML / CSS
The North Face北面英国官网:美国著名户外品牌
2017/12/13 全球购物
值传递还是引用传递
2015/02/08 面试题
高中生评语大全
2014/04/25 职场文书
信访维稳工作汇报
2014/10/27 职场文书
2014年班长个人工作总结
2014/11/14 职场文书
2015年高一班主任工作总结
2015/05/13 职场文书
魂断蓝桥观后感
2015/06/10 职场文书
2016机关干部作风建设心得体会
2016/01/21 职场文书
中学教代会开幕词
2016/03/04 职场文书
MySQL实战记录之如何快速定位慢SQL
2022/03/23 MySQL