解析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中使用matplotlib模块绘制数据图的示例
May 04 Python
python数组复制拷贝的实现方法
Jun 09 Python
使用python装饰器计算函数运行时间的实例
Apr 21 Python
PyTorch快速搭建神经网络及其保存提取方法详解
Apr 28 Python
Flask Web开发入门之文件上传(八)
Aug 17 Python
Django添加KindEditor富文本编辑器的使用
Oct 24 Python
在mac下查找python包存放路径site-packages的实现方法
Nov 06 Python
python matplotlib如何给图中的点加标签
Nov 14 Python
Python2与Python3的区别详解
Feb 09 Python
python使用pymongo与MongoDB基本交互操作示例
Apr 09 Python
基于python模拟bfs和dfs代码实例
Nov 19 Python
一小时学会TensorFlow2之基本操作2实例代码
Sep 04 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 preg_replace替换实例讲解
2013/11/04 PHP
PHP同时连接多个mysql数据库示例代码
2014/03/17 PHP
PHP的switch判断语句的“高级”用法详解
2014/10/01 PHP
YII2 实现多语言配置的方法分享
2017/01/11 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
JScript 脚本实现文件下载 一般用于下载木马
2009/10/29 Javascript
JS 图片缩放效果代码
2010/06/09 Javascript
jquery ui resizable bug解决方法
2010/10/26 Javascript
8个超棒的学习 jQuery 的网站 推荐收藏
2011/04/02 Javascript
jQuery表格列宽可拖拽改变且兼容firfox
2014/09/03 Javascript
JS实现网站菜单拖拽移位效果的方法
2015/09/24 Javascript
jquery验证手机号是否正确实例讲解
2015/11/17 Javascript
深入浅析JavaScript系列(13):This? Yes,this!
2016/01/05 Javascript
让图片跳跃起来  javascript图片轮播特效
2016/02/16 Javascript
js编写一个简单的产品放大效果代码
2016/06/27 Javascript
js基于cookie记录来宾姓名的方法
2016/07/19 Javascript
angularjs 源码解析之scope
2016/08/22 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
vue2项目使用sass的示例代码
2017/06/28 Javascript
详解vue-router 路由元信息
2017/09/13 Javascript
js 提取某()特殊字符串长度的实例
2017/12/06 Javascript
基于vue中keep-alive缓存问题的解决方法
2018/09/21 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
2018/09/26 Javascript
基于JS实现web端录音与播放功能
2019/04/17 Javascript
用Vue编写抽象组件的方法
2019/05/06 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
python基本语法练习实例
2017/09/19 Python
python实现远程通过网络邮件控制计算机重启或关机
2018/02/22 Python
详解将Django部署到Centos7全攻略
2018/09/26 Python
StubHub智利:购买和出售您的门票
2016/11/23 全球购物
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
20世纪40年代连衣裙和复古服装:The Seamstress Of Bloomsbury
2018/07/24 全球购物
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
低碳生活的宣传标语
2014/06/23 职场文书
大学生先进个人主要事迹材料
2015/11/04 职场文书
MySQL创建管理RANGE分区
2022/04/13 MySQL