第一个Django项目及部署到Sina App Engine
Sina App Engine简称SAE,是个比较好的网站托管平台,目前说是全面免费,其实就是每个人分配很小的资源配额,在一定的使用范围内不用消耗云豆(SAE计费方式),对于个人学习和研究足够了,同类的还有GAE(google app engine)以及BAE(baidu app engine),gae身在国内就不用想太多了,除非爱折腾,bae也还不错,不过要用就要花钱,最低的配置只要几毛钱一天,也还算便宜。当然,如果资金富裕或者流量到了一定程度,可以考虑云服务器。
目前,在SAE上部署了一个Django项目,步骤记录如下:
打开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 }