sae 上部署django 1.8

原先在sina app engine部署django=1.8,真不是一件容易的事,主要是因为sae不直接支持最新版的django。要想使用django 1.8,只有使用 site-packages。而sae通常使用 svn 部署代码,而如果加上一个25M的 site-packages ,其代码部署速度可想而知。幸好部署代码的方式不只一种,sae 还为我们提供网页上传代码压缩包的方式。

上传代码压缩包的网页是 sae 应用的控制面板

1. 先压缩

cd feat/2
tar -czf 2.tar.gz *

2.再上传

通过操作按钮上传对应版本的代码压缩包。需要注意的是压缩包中的内容须为本地版本号文件夹中的所有内容,不要将版本号根文件夹也上传了,否则上传后服务器中的代码将会多出一个版本号文件夹,文件结构就不对了。尽管上传完成后,sae 总是会提示上传失败,但是不用丧气,其实sae上面已经上传成功了,只需要稍等片刻上传的代码就会生效。

当然,sae 提供了工具 saecloud 部署代码(saecloud deploy)和安装第三方库(saecloud install package),但是部署速度仍然很慢,在此顺便一提。

创建第三方库 site-packages

cd feat/2
mkdir site-packages
cp -rf /usr/lib/python2.7/site-packages/django site-packages
saecloud install django_markdown

附:

  • 如何在SAE中使用site-packages
  • 使用SAE的预装模块

在SAE中使用site-packages

需要修改index.wsgi

修改版本号目录下的index.wsgi文件,以使site-packages目录在sys.path的首部。

import sae
import os
import sys

root = os.path.dirname(__file__)
sys.path.insert(0, os.path.join(root, "site-packages"))

def application(environ, start_response):
    start_response('200 ok', [('content-type', 'text/plain')])
    return testVersion()


from app import wsgi
application = sae.create_wsgi_app(wsgi.application)

上传site-packages

将第三方的package复制或安装到本地的site-packages目录中,再将本地的site-packages文件夹上传为SAE对应的版本号目录下的site-packages,并观察site-packages是否生效。

使用SAE的预装模块

如果待使用的模块在SAE的预装模块列表中,则可以不用site-packages目录。

修改应用目录下的应用程序配置文件config.yaml

libraries:
- name: "django"
  version: "1.8.3"

- name: PIL
  version: "1.1.7"

name为第三方模块的名称,version为需要使用的版本,这两个字段为必填字段。

参考新浪云支持文档

关于本文如您有任何想法和意见,欢迎与我们联系,邮箱地址zhi@uqugu.com
您对本文有什么看法,喜欢或者不喜欢都可以发表意见。