解析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中的__SLOTS__属性使用示例
Feb 18 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
Apr 06 Python
python3.6使用pickle序列化class的方法
Oct 22 Python
python实现三维拟合的方法
Dec 29 Python
Python生成MD5值的两种方法实例分析
Apr 26 Python
Python opencv实现人眼/人脸识别以及实时打码处理
Apr 29 Python
python实现复制文件到指定目录
Oct 16 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
Jun 02 Python
Python astype(np.float)函数使用方法解析
Jun 08 Python
python通过opencv调用摄像头操作实例分析
Jun 07 Python
浅谈Python3中datetime不同时区转换介绍与踩坑
Aug 02 Python
python 学习GCN图卷积神经网络
May 11 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
我的论坛源代码(四)
2006/10/09 PHP
Fine Uploader文件上传组件应用介绍
2013/01/06 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
2017/08/03 PHP
PHP命名空间与自动加载机制的基础介绍
2019/08/25 PHP
dwz 如何去掉ajaxloading具体代码
2013/05/22 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
24款热门实用的jQuery插件推荐
2014/12/24 Javascript
JavaScript中使用concat()方法拼接字符串的教程
2015/06/06 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
2016/03/01 Javascript
Javascript对象字面量的理解
2016/06/22 Javascript
轻松实现js弹框显示选项
2016/09/13 Javascript
JavaScript对象引用与赋值实例详解
2017/03/15 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
JavaScript正则表达式简单实用实例
2017/06/23 Javascript
用JS实现简单的登录验证功能
2017/07/28 Javascript
写给vue新手们的vue渲染页面教程
2017/09/01 Javascript
浅谈Webpack 持久化缓存实践
2018/03/22 Javascript
微信小程序分享海报生成的实现方法
2018/12/10 Javascript
Vue项目打包部署到iis服务器的配置方法
2019/10/14 Javascript
JS实现滑动插件
2020/01/15 Javascript
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
[37:29]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.19
2020/11/19 DOTA
Python中random模块用法实例分析
2015/05/19 Python
Linux 下 Python 实现按任意键退出的实现方法
2016/09/25 Python
Python实现简单的HttpServer服务器示例
2017/09/25 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
2018/01/05 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
2018/04/10 Python
selenium + python 获取table数据的示例讲解
2018/10/13 Python
vscode 配置 python3开发环境的方法
2019/09/19 Python
利用pandas将非数值数据转换成数值的方式
2019/12/18 Python
关于CSS Tooltips(鼠标经过时显示)的效果
2013/04/10 HTML / CSS
浅谈CSS3 box-sizing 属性 有趣的盒模型
2019/04/02 HTML / CSS
html5的canvas方法使用指南
2014/12/15 HTML / CSS
存储过程和函数的区别
2013/05/28 面试题
餐厅采购员岗位职责
2014/03/06 职场文书
天地会口号
2014/06/17 职场文书