bae上部署django的notes
Posted on 五 21 十一月 2014 in 日常
这个网站就部署在bae上的,正好自己在学python,所以就学了下使用django弄个网页。 本来很早就想写部署notes,因为官方的部署很不全,自己遇到好多坑,现在把还记得的重要过程记录一下。
这里的说明先假设在项目的根目录下创建创建了一个django的项目,名为blog,所有他的文件也就包含在/blog下面。
修改index.py
需要把项目的setting放入DJANGO_SETTINGS_MODULE
变量中。
#-*- coding:utf-8 -*-
import os
import sys
from django.core.handlers.wsgi import WSGIHandler
from bae.core.wsgi import WSGIApplication
# settings放入变量中
os.environ['DJANGO_SETTINGS_MODULE'] = 'blog.settings'
#将项目目录加入到path中
path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'blog').replace('\\','/')
if path not in sys.path:
sys.path.insert(1, path)
修改app.conf
app.conf主要是用来控制后端WEB server的处理逻辑的,可以参考bae技术博客
它可以直接处理静态请求,然后把动态请求都转发给后端的webServer。
handlers:
# 静态请求直接返回静态资源
- url : /static/(.*)
script : /blog/blog/static/$1
# 动态请求转发给index.py
- url : /.*
script: index.py
- expire : .jpg modify 10 years
- expire : .swf modify 10 years
- expire : .png modify 10 years
- expire : .gif modify 10 years
- expire : .JPG modify 10 years
- expire : .ico modify 10 years
数据库连接
使用数据库以及django自带的管理模块admin
,需要将python目录下的/Lib/site-packages/django/contrib/admin
文件夹拷贝到上面设置的静态文件路径下/blog/blog/static/
。
settings.py
需要修改下数据库连接设置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DBNAME',
'USER': 'USERID',
'PASSWORD': 'PWD',
'HOST': 'sqld.duapp.com',
'PORT': '4050',
}
}
本地运行与上线发布
上线发布需要把settings.py
设置为生成模式,debug=False
。
因为装bae的本地开发环境比较麻烦,所以我在本地运行时,都是直接用runserver方式开启调试模式的,这时就需要设置静态文件的目录,以便获取静态文件
settings.py
修改设置:
......
DEBUG=True
......
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')
STATIC_URL = '/static/'
import os
STATICFILES_DIRS = (
('css', os.path.join(STATIC_ROOT, 'css').replace('\\', '/')),
('img', os.path.join(STATIC_ROOT, 'img').replace('\\', '/')),
('js', os.path.join(STATIC_ROOT, 'js').replace('\\', '/')),
)