解析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进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
Apr 25 Python
Python中关键字is与==的区别简述
Jul 31 Python
Python的迭代器和生成器
Jul 29 Python
全面理解Python中self的用法
Jun 04 Python
Windows下Anaconda的安装和简单使用方法
Jan 04 Python
python 实现将字典dict、列表list中的中文正常显示方法
Jul 06 Python
Django使用redis缓存服务器的实现代码示例
Apr 28 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
Dec 19 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
Dec 27 Python
python梯度下降算法的实现
Feb 24 Python
Python SQLAlchemy库的使用方法
Oct 13 Python
用python制作个音乐下载器
Jan 30 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
制作个性化的WordPress登陆界面的实例教程
2016/05/21 PHP
PHP使用phpunit进行单元测试示例
2019/09/23 PHP
通过js脚本复制网页上的一个表格的不错实现方法
2006/12/29 Javascript
jquery加载图片时以淡入方式显示的方法
2015/01/14 Javascript
JavaScript比较两个对象是否相等的方法
2015/02/06 Javascript
jQuery选择器源码解读(二):select方法
2015/03/31 Javascript
jQuery简单tab切换效果实现方法
2015/04/08 Javascript
JavaScript中判断数据类型的方法总结
2016/05/24 Javascript
浅谈Angular的$q, defer, promise
2016/12/20 Javascript
jquery.flot.js简单绘制折线图用法示例
2017/03/13 Javascript
JavaScrpt判断一个数是否是质数的实例代码
2017/06/11 Javascript
基于Two.js实现星球环绕动画效果的示例
2017/11/06 Javascript
vue+Element-ui实现分页效果实例代码详解
2018/12/10 Javascript
jQuery.parseJSON()函数详解
2019/02/28 jQuery
jQuery实现的导航条点击后高亮显示功能示例
2019/03/04 jQuery
独立部署小程序基于nodejs的服务器过程详解
2019/06/24 NodeJs
vue使用@scroll监听滚动事件时,@scroll无效问题的解决方法详解
2019/10/15 Javascript
JS常见内存泄漏及解决方案解析
2020/05/30 Javascript
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
python图像处理之镜像实现方法
2015/05/30 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
2018/04/10 Python
python批量获取html内body内容的实例
2019/01/02 Python
Python(PyS60)实现简单语音整点报时
2019/11/18 Python
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
汉米尔顿手表官网:Hamilton
2020/09/13 全球购物
PHP如何去执行一个SQL语句
2016/03/05 面试题
这段代码难道不该打印出56吗
2013/02/27 面试题
资深地理教师自我评价
2013/09/21 职场文书
致跳高运动员广播稿
2014/01/13 职场文书
弘扬雷锋精神活动演讲稿
2014/03/04 职场文书
市场营销专业自荐书
2014/06/10 职场文书
计划生育工作汇报
2014/10/28 职场文书
2015教师年度考核评语
2015/03/25 职场文书
素质教育培训心得体会
2016/01/19 职场文书
详解Python 3.10 中的新功能和变化
2021/04/28 Python
详解python字符串驻留技术
2021/05/21 Python