解析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 相关文章推荐
TensorFlow中权重的随机初始化的方法
Feb 11 Python
tensorflow创建变量以及根据名称查找变量
Mar 10 Python
pandas groupby 分组取每组的前几行记录方法
Apr 20 Python
python按时间排序目录下的文件实现方法
Oct 17 Python
Python函数中不定长参数的写法
Feb 13 Python
python实现列表中最大最小值输出的示例
Jul 09 Python
python实现连连看辅助(图像识别)
Mar 25 Python
pandas实现DataFrame显示最大行列,不省略显示实例
Dec 26 Python
python实现简单坦克大战
Mar 27 Python
Django-imagekit的使用详解
Jul 06 Python
python3排序的实例方法
Oct 20 Python
pytorch实现手写数字图片识别
May 20 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_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
2014/07/22 PHP
PHP命名空间和自动加载类
2016/04/03 PHP
php求今天、昨天、明天时间戳的简单实现方法
2016/07/28 PHP
javascript 定义新对象方法
2010/02/20 Javascript
jquery 多行滚动代码(附详细解释)
2010/06/17 Javascript
浅析jQuery1.8的几个小变化
2013/12/10 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
jQuery1.9+中删除了live以后的替代方法
2016/06/17 Javascript
前端弹出对话框 js实现ajax交互
2016/09/09 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
常用jQuery选择器汇总
2017/02/02 Javascript
vue实现百度搜索下拉提示功能实例
2017/06/14 Javascript
JS图片延迟加载插件LazyImgv1.0用法分析【附demo源码下载】
2017/09/04 Javascript
vue实现移动端悬浮窗效果
2018/12/01 Javascript
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
Node.js 多线程完全指南总结
2019/03/27 Javascript
开源一个微信小程序仪表盘组件过程解析
2019/07/30 Javascript
JS精确判断数据类型代码实例
2019/12/18 Javascript
JS实现前端动态分页码代码实例
2020/06/02 Javascript
[52:31]VP vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
2019/06/03 Python
python flask中动态URL规则详解
2019/11/22 Python
细说CSS3中的选择符
2008/10/17 HTML / CSS
Ibatis的核心配置文件都有什么
2014/09/08 面试题
法学专业本科生自荐信范文
2013/12/17 职场文书
会计电算化个人求职信范文
2014/01/24 职场文书
关于工作经历的证明书
2014/10/11 职场文书
会议开幕致辞怎么写
2016/03/03 职场文书
Redis IP地址的绑定的实现
2021/05/08 Redis
利用js实现简单开关灯代码
2021/11/23 Javascript
【海涛解说】史上最给力比赛,挑战DOTA极限
2022/04/01 DOTA
GPU服务器的多用户配置方法
2022/07/07 Servers