SAE部署Django應(yīng)用

最近研究了下Django,寫了個(gè)小應(yīng)用,部署到SAE的過程中發(fā)現(xiàn)有不少坑,網(wǎng)上的介紹要么已經(jīng)過時(shí),要么不夠精煉,這里簡單做下記錄。

按照正常步驟在SAE建立一個(gè)新的Python應(yīng)用,通過SVN導(dǎo)出到本地。

創(chuàng)建配置文件config.yaml

name: reading
version: 1

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

創(chuàng)建文件index.wsgi

import sae
from app_name import wsgi

application = sae.create_wsgi_app(wsgi.application)

將以上兩個(gè)文件通過SVN提交以后,就能在SAE應(yīng)用的首頁看到Django的歡迎頁了,萬里長征成功邁出第一步。

接下來將本地調(diào)試好的程序拷貝到config文件同級目錄,并上傳至SVN。為了讓本地的Django應(yīng)用在SAE上完美運(yùn)行,還需要再做兩件事情。

設(shè)置后臺靜態(tài)目錄

在SAE打開admin后臺時(shí),樣式完全亂掉,那是因?yàn)闆]有找到靜態(tài)文件。只需簡單兩步就能解決這個(gè)問題:
第一步:修改settings.py,設(shè)置STATIC_ROOT='static/'
第二步: 運(yùn)行python manage.py collectstatic,把后臺的靜態(tài)文件同步到工程目錄下的static文件夾,然后再通過SVN上傳到SAE。

同步MySQL

SAE的MySQL服務(wù)器不支持遠(yuǎn)程連接的,同時(shí)也不能在SAE上執(zhí)行syncdb命令,因此需要在本地搭建一個(gè)數(shù)據(jù)庫,再通過SQL來進(jìn)行同步。MySQL的搭建比較簡單,參見http://www.itdecent.cn/p/52f18a37f1e9

為了保證同一套代碼在本地及SAE上都能正常運(yùn)行,需要修改settings.py里的數(shù)據(jù)庫設(shè)置。

if 'SERVER_SOFTWARE' in os.environ:
  print "from sae"
  from sae.const import (
    MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASS, MYSQL_DB
  )
else:
  print "from locale"
  MYSQL_HOST = ''
  MYSQL_PORT = ''
  MYSQL_USER = 'root'
  MYSQL_PASS = 'password'
  MYSQL_DB  = 'db_name'

DATABASES = {
  'default': {
    'ENGINE':  'django.db.backends.mysql',
    'NAME':  MYSQL_DB,
    'USER':  MYSQL_USER,
    'PASSWORD': MYSQL_PASS,
    'HOST':  MYSQL_HOST,
    'PORT':  MYSQL_PORT,
  }
}

最后,我們可以通過phpMyAdmin來進(jìn)行數(shù)據(jù)的導(dǎo)入導(dǎo)出,這里要特別注意,不能使用WorkBench,WorkBench的dump文件在SAE里不能正常執(zhí)行。

本地搭建SAE環(huán)境

為了減少后期部署調(diào)試的工作量,應(yīng)盡量保持本地開發(fā)環(huán)境與SAE的一致性。SAE提供了相關(guān)的工具來幫助我們搭建本地開發(fā)環(huán)境。

$ git clone https://github.com/sinacloud/sae-python-dev-guide.git
$ cd sae-python-dev-guide/dev_server
$ python setup.py install

安裝完成后,通過以下命令啟動SAE版Django服務(wù):

    $ dev_server.py

瀏覽器里輸入http://localhost:8080 ,就可以訪問到Django應(yīng)用的首頁。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容