第一個Django項目及部署到Sina App Engine

Sina App Engine簡稱SAE,是個比較好的網站託管平臺,目前說是全面免費,其實就是每一個人分配很小的資源配額,在必定的使用範圍內不用消耗雲豆(SAE計費方式),對於我的學習和研究足夠了,同類的還有GAE(google app engine)以及BAE(baidu app engine),gae身在國內就不用想太多了,除非愛折騰,bae也還不錯,不過要用就要花錢,最低的配置只要幾毛錢一天,也還算便宜。固然,若是資金富裕或者流量到了必定程度,能夠考慮雲服務器。mysql

目前,在SAE上部署了一個Django項目,步驟記錄以下:sql

打開eclipse,選擇建立一個PyDev Django Project
輸入項目名稱,選擇Interpreter
進入Django Settings
這裏能夠設定數據庫類型以及配置,我這裏選擇mysql,而且因爲個人root用戶沒有設置密碼,因此留空,若是設置了密碼,則須要填入密碼
這樣一個Django項目就創建起來了,由於部署到apache時候須要樣式,因此在src下添加static文件夾,將Python27\Lib\site-packages\django\contrib\admin\static下的文件複製到新添加的static文件夾中,更改httpd.conf文件
 1 Alias /static D:/Workspace/Python/HelloDjango/src/static
 2 <Directory D:/Workspace/Python/HelloDjango/src/static >
 3     AllowOverride None
 4     Options None
 5     Order allow,deny
 6     Allow from all
 7 </Directory>
 8  
 9 WSGIScriptAlias /django "D:\Workspace\Python\HelloDjango\src\HelloDjango\wsgi.py"
10 WSGIPythonPath  "D:\Workspace\Python\HelloDjango\src"
11  
12 <Directory "D:\Workspace\Python\HelloDjango\src\HelloDjango">
13     Order allow,deny
14     Allow from all
15 </Directory>     

 

 
SAE:
SAE使用svn上傳文件
checkout後,將上面項目的src下的文件夾都複製到簽出的文件夾下的版本1中
目前sae下的django版本最高爲1.5,若是須要1.8,則須要本身把1.8版本的django文件夾上傳到sae中去,修改config.yaml
libraries:
- name: "django"
  version: "1.5" 
須要注意空格
修改index.wsgi文件
 1 import sys
 2 import os.path
 3   
 4 os.environ['DJANGO_SETTINGS_MODULE'] = 'hello.settings'
 5 sys.path.append(os.path.join(os.path.dirname(__file__), 'hello'))
 6 
 7 import sae
 8 from hello import wsgi
 9 
10 application = sae.create_wsgi_app(wsgi.application)

 

 
若是須要查看django版本,則註釋上面的代碼,在index.wsgi中添加
 1 #coding=utf-8
 2 import sae
 3  
 4  
 5 import django
 6  
 7 def application(environ, start_response):
 8     start_response('200 ok', [('content-type', 'text/plain')])
 9     s=str(django.VERSION)
10     return s

 

這樣就會打印出django的版本了
若是使用了Mysql,因爲SAE上的sql是不能從本地鏈接的,因此在本地和在SAE上的MySQL鏈接配置是不同的,能夠考慮在settings.py中作以下配置
 1 debug= not environ.get("APP_NAME", "")
 2 if debug:
 3     #local
 4     MYSQL_DB = "app_lsblog"
 5     MYSQL_USER = "root"
 6     MYSQL_PASS = "root"
 7     MYSQL_HOST_M = "127.0.0.1"
 8     MYSQL_PORT = "3306"
 9 else:
10     import sae.const
11     MYSQL_DB = sae.const.MYSQL_DB
12     MYSQL_USER = sae.const.MYSQL_USER
13     MYSQL_PASS = sae.const.MYSQL_PASS
14     MYSQL_HOST_M = sae.const.MYSQL_HOST
15     MYSQL_PORT = sae.const.MYSQL_PORT
16     MYSQL_HOST_S = sae.const.MYSQL_HOST_S
17 
18 DATABASES = {
19     'default': {
20         'ENGINE': 'django.db.backends.mysql',
21         'NAME': MYSQL_DB,
22         'USER':MYSQL_USER,
23         'PASSWORD':MYSQL_PASS,
24         'HOST':MYSQL_HOST_M,
25         'PORT':MYSQL_PORT,        
26     }
27 }
相關文章
相關標籤/搜索