解析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中的进程分支fork和exec详解
Apr 11 Python
使用基于Python的Tornado框架的HTTP客户端的教程
Apr 24 Python
Python自动调用IE打开某个网站的方法
Jun 03 Python
Python3下错误AttributeError: ‘dict’ object has no attribute’iteritems‘的分析与解决
Jul 06 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
Nov 11 Python
Python列表推导式与生成器表达式用法示例
Feb 08 Python
Python查找两个有序列表中位数的方法【基于归并算法】
Apr 20 Python
Python中循环引用(import)失败的解决方法
Apr 22 Python
python二维键值数组生成转json的例子
Dec 06 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
Mar 23 Python
python退出循环的方法
Jun 18 Python
Python爬取微信小程序通用方法代码实例详解
Sep 29 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
PL-880隐藏功能
2021/03/01 无线电
新闻分类录入、显示系统
2006/10/09 PHP
php中获取指定IP的物理地址的代码(正则表达式)
2011/06/23 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
2014/08/19 PHP
2014最热门的24个php类库汇总
2014/12/18 PHP
PHP生成唯一订单号
2015/07/05 PHP
PHP yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
PHP中Cookie的使用详解(简单易懂)
2017/04/28 PHP
js prototype 格式化数字 By shawl.qiu
2007/04/02 Javascript
传智播客学习之java 反射
2009/11/22 Javascript
基于jQuery替换table中的内容并显示进度条的代码
2011/08/02 Javascript
关于JS字符串函数String.replace()
2013/04/07 Javascript
js 获取、清空input type=&quot;file&quot;的值示例代码
2014/02/19 Javascript
Jquery组件easyUi实现选项卡切换示例
2016/08/23 Javascript
微信小程序 SocketIO 实例讲解
2016/10/13 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
2016/11/09 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
2017/04/24 Javascript
iframe高度自适应及隐藏滚动条的实例详解
2017/09/29 Javascript
如何将你的AngularJS1.x应用迁移至React的方法
2018/02/01 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
2018/03/01 Javascript
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
vue组件详解之使用slot分发内容
2018/04/09 Javascript
微信小程序自定义prompt组件步骤详解
2018/06/12 Javascript
小程序实现列表多个批量倒计时
2021/01/29 Javascript
[05:37]DOTA2-DPC中国联赛 正赛 Elephant vs iG 选手采访
2021/03/11 DOTA
在DigitalOcean的服务器上部署flaskblog应用
2015/12/19 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
2020/01/04 Python
澳大利亚领先的睡衣品牌:Peter Alexander
2016/08/16 全球购物
La Senza官网:北美顶尖性感内衣品牌
2018/08/03 全球购物
机电工程学生自荐信范文
2013/12/07 职场文书
人事主管岗位职责
2014/01/30 职场文书
分公司总经理岗位职责
2014/08/03 职场文书
优秀班组申报材料
2014/12/25 职场文书
爱心助学感谢信
2015/01/21 职场文书
学习党史心得体会2016
2016/01/23 职场文书
Python爬虫之爬取二手房信息
2021/04/27 Python