您好,登錄后才能下訂單哦!
如何在SAE上部署Python+Django應用,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
正象之前所說的那樣,我想要做一個自己的博客,同時又要少花錢,少做事(呵呵,太懶了吧),因此我選擇了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"
看完上述內容,你們掌握如何在SAE上部署Python+Django應用的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。