http://blog.csdn.net/agileclipse/article/details/12559867

正象之前所说的那样,我想要做一个自己的博客,同时又要少花钱,少做事(呵呵,太懒了吧),因此我选择了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"

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

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


10-05 01:02