文档章节

SAE上部署Python+Django应用

晴风晓月
 晴风晓月
发布于 2013/05/27 14:13
字数 1239
阅读 5.1K
收藏 4

正象之前所说的那样,我想要做一个自己的博客,同时又要少花钱,少做事(呵呵,太懒了吧),因此我选择了Python+Django,经过了几天的折腾,终于基本完成,甚至都还没有完善,就迫不及待地将其部署到了SAE,现在就把这个部署过程分享一下。

1、准备工作

准备工作中最最重要的当然准备好自己的应用代码了,废话少说,代码最重要,但我却要略过,不了解的朋友可以参考Django向导(又废话了吧),一步步做就行了。其实在准备阶段我觉得最重要的还是SAE上的一些配置。

首先,你需要在SAE上建立自己的应用,并将其用SVN下载到本机,如果你希望在本机使用模拟的SAE环境,还需要下载安装SAE本地开发包。然后将自己的代码根目录下的所有内容拷贝到SVN目录下的1目录。具体操作命令如下:

svn co https://svn.sinaapp.com/your_app_name

以上是下载应用代码,假设你本机的代码根目录为mysite,则你需要如下操作:

cp mysite/* your_app_name/1

这样的话,准备工作就做完了,前面说了一大堆,其实就只有这么两句话有用。

2、配置文件编写

SAE的配置文件主要有两个:config.yaml和index.wsgi。我们所要做的就是在根目录下建立这两个文件,然后再根据应用的实际情况对其进行编辑。

好了,不说了,上代码。

首先是index.wsgi,这是标准的SAE模板,除了将应用名称改为你自己的,没什么复杂的东东。

import sys
  import os.path
  
  os.environ['DJANGO_SETTINGS_MODULE'] = 'YOUR_APP_NAME.settings'
  sys.path.append(os.path.join(os.path.dirname(__file__), 'YOUR_APP_NAME'))
  
  import sae
  from YOUR_APP_NAME import wsgi
  
  application = sae.create_wsgi_app(wsgi.application)

注意:只需要简单地将其中的YOUR_APP_NAME替换成你的应用的名称就行了,不要加其他任何符号

接下来再来看看config.yaml,这个文件的配置相对要复杂一些,不过也没有太复杂的东西,只要你理解了其中每个配置选项的含义,一切都好办了,如果有什么不清楚,可以参考SAE应用程序配置文档。先来看看我们初始的配置文件吧。

name: YOUR_APP_NAME
 version: 1
 
 libraries:
 - name: django
   version: "1.5"

呵呵,还是简单地做一些替换吧,YOUR_APP_NAME还是简单地替换成你的应用的名称;另外就是多了个引用库的配置,我的应用中用到了django框架,因此需要引入,同时我用的版本是1.5的,因此千万记得,将其版本设为1.5,如果你用的是1.4版,千万设置成1.4版,不然……呵呵,当然就是可以报一大堆错误了。

配置文件就到这里了,So easy!!!不是吗?

3、静态文件处理

静态文件处理起来,说麻烦也麻烦,但真的做起来,如果只要简单的能用就行,那也真是简单。本人就基于能用就行,简单地进行静态文件的处理。

首先,请确认你没有修改应用中的setting文件中与静态文件有关的设置,说简单点就是所有以STATIC开始的设置都没有改动。

接下来就是执行django的静态文件搜集命令了,只需要在你的应用根目录下执行如下命令就行了。

./manage.py collectstatic

其中会有一个提示信息,也就是让你确认,输入"yes"即可。

最后,再次打开config.yaml文件,添加如下代码:

handlers:
- url: /static/
  static_path: ./

 

4、数据库设置

 我实在难以想象,在现在的环境下,一个应用没有数据库的支持,将会是什么样子。不管别人怎样,我的应用就要用数据库,当然还是要用MySQL。数据库的配置很简单,而且配置好后基本就不用动了。呵呵,傻笑什么呢,还不动手。

首先,打开settings.py文件,在原有的DATABASES配置前加上如下代码:

if 'SERVER_SOFTWARE' in os.environ:
     from sae.const import (
         MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASS, MYSQL_DB
     )
 else:
      MYSQL_HOST = 'localhost'
      MYSQL_PORT = '3306'
      MYSQL_USER = 'root'
      MYSQL_PASS = '******'
      MYSQL_DB   = 'YOUR_DATABASE_NAME'

然后将原有的DATABASES配置改成如下代码:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': MYSQL_DB,                      # Or path to database file if using sqlite3.
        # The following settings are not used with sqlite3:
        'USER': MYSQL_USER,
        'PASSWORD': MYSQL_PASS,
        'HOST': MYSQL_HOST,                      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
        'PORT': MYSQL_PORT,                      # Set to empty string for default.
    }
 }

最后别忘了在SAE中启用MySQL数据库支持哦。这样你就既可以在SAE环境中运行应用,也可以在本机不用SAE模拟环境里运行了。

 

OK,大功告成,现在执行如下命令:

svn add *
svn ci -m "Deploy app into SAE"

一切搞定,赶快在浏览器里输入应用的地址试试吧

写得不好勿喷,欢迎热烈讨论 。

本文转载自:http://lifelog.junchee.net/show/2/

晴风晓月

晴风晓月

粉丝 22
博文 3
码字总数 0
作品 0
成都
高级程序员
私信 提问
加载中

评论(4)

y
yangyane

报错

Execute 'application' failed
Traceback (most recent call last):

File "/home/admin/runtime/modules/bae/core/wsgi.py", line 72, in __call__
return self.app(environ, start_response)

File "/home/bae/app/deps/django/core/handlers/wsgi.py", line 187, in __call__
self.load_middleware()

File "/home/bae/app/deps/django/core/handlers/base.py", line 46, in load_middleware
for middleware_path in settings.MIDDLEWARE_CLASSES:

File "/home/bae/app/deps/django/conf/__init__.py", line 54, in __getattr__
self._setup(name)

File "/home/bae/app/deps/django/conf/__init__.py", line 49, in _setup
self._wrapped = Settings(settings_module)

File "/home/bae/app/deps/django/conf/__init__.py", line 132, in __init__
% (self.SETTINGS_MODULE, e)

ImportError: Could not import settings 'blog.settings' (Is it on sys.path? Is there an import error in the settings file?): cannot import name settings
y
yangyane
怎么部署到 百度上啊
晴风晓月
晴风晓月 博主
确实没有注意,可能写的时候忽略了,谢谢了0
叫我花生
叫我花生
settings.py 开头要加上 'import os' 不然会报错
weblogic能部署python+Django开发的web应用吗?

公司现在要用python+django开发web应用,但标配的服务器是weblogic, 在网上看到的大部分都是讲weblogic部署j2ee、asp.net应用,python写监控脚本的... 想请教一下各位,weblogic能不能部署p...

skye212
2015/06/04
716
1
基于SAE轻量级PHP开发框架--Mini2SAE

Mini2SAE: Mini–核心文件只有15K, 2–to, SAE–Sina App Engine(新浪应用引擎) 基于SAE快速、简单的、轻量级PHP开发框架…… 遵循BSD开源协议的免费开源框架…… 为采用SAE结合第三方开放...

感染源
2010/06/08
2.6K
0
在sae中使用jfinal框架开发web工程遇到的问题

sae使用总结 一、部署应用后访问报错 web应用在本地开发完成,部署使用无问题,在部署到sae上后访问应用,报以下错误 经定位,原因在在于jfinal中的JFinalFilter类中。 本地开发时,在JFina...

HeAntai
2013/09/16
750
1
新浪携手VMWare 全新打造Ruby云平台

【IT168 现场报道】2012年3月28日,Cloud Foundry云开发者大会正式在北京拉开帷幕,为企业开发人员提供了近距离了解世界第一个开源开放式的云服务平台的机会,畅游云间无阻拦。Cloud Foundry...

作者:皮丽华
2012/03/28
0
0
在 SAE 上部署羊驼!CMS

羊驼是一款非常灵活的轻量级!CMS ,可用于构架各种网站。 并可作为php应用开发的基础平台。 但是羊驼本身并不支持 Sina App Engine 的部署。 因此需要做以下调整: 1. 羊驼暂不支持 SAE 的文...

BatM3
2012/04/08
2.5K
11

没有更多内容

加载失败,请刷新页面

加载更多

Java中的原生关键字是什么?

在玩这个谜题 (这是Java关键字琐事游戏)时,我遇到了native关键字。 Java中的native关键字用于什么? #1楼 实现本机代码的函数被声明为本机。 Java本机接口(JNI)是一个编程框架,使在Jav...

技术盛宴
今天
54
0
博通与苹果达成150亿美元协议,覆盖未来3年苹果产品

  据外媒报道,芯片供应商博通(Broadcom)宣布已与苹果公司签署了一份协议,为其提供“高性能的无线组件和模块”,博通表示,这些芯片将在未来 3 年半的时间内用于自 2020 年 1 月份以后发...

水果黄瓜
今天
95
0
《算法》笔记 17 - 数据压缩

读写二进制数据 基因组数据的压缩 游程编码 位图 霍夫曼压缩 前缀码和单词查找树 构造前缀码的单词查找树 写入和读取单词查找树 使用前缀码压缩 使用前缀码展开 LZW压缩 LZW的单词查找树 LZ...

zhixin9001
今天
55
0
#技术分享# 再论DDD之【实体】建模

2020年春节第一天,早早醒来,出去晨跑一下,目前武汉以及周边的疫情处于红色报警状态,今年春节宅家是最安全的做法。闲暇之余,还需要探索技术,跑步中忽然想到了【忒修斯之船】的小故事,感...

边缘行者
今天
88
0
工作自由--2020年开篇,开启一个项目:工作自由 worksolo.cn

新年伊始,我突发奇想,也是很多人敢想而不敢做的事情,下面我以一个多年软件开发从业者的角度去思考,去设计这个项目,当然希望看到这篇文章的你可以给我更多思路: 项目名称:工作自由 域名...

_aron_
今天
51
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部