正象之前所说的那样,我想要做一个自己的博客,同时又要少花钱,少做事(呵呵,太懒了吧),因此我选择了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"
一切搞定,赶快在浏览器里输入应用的地址试试吧。
写得不好勿喷,欢迎热烈讨论 。