在alwaysdata免费空间部署Django | Guobudong Online
折腾Django有段时间了,一直是在test server上测试来测试去。一个偶然的场合上,得知alwaysdata有免费的空间可以用,而且也符合我的要求(支持Django+PostgreSQL+apache),所以忙活了一个晚上,搬了上来。在这里做个记录,一来备忘,二来方便有兴趣的朋友查看。
首先要在alwaysdata上注册个账号,这个就不细说了。唯一需要提醒的是选择“Pack gratuit (10 Mo)”套餐,因为这是gratuit(免费)的。
打开http://admin.alwaysdata.com/login/,用你注册的mail地址及密码登录,如果看不懂法文的话,可以在左上角选择语言Chinese。进入之后,设置python, Django版本,开启ssh(默认是关闭的),设置ftp,ssh。到此为止,准备工作基本上完成了。
用ftp工具登录到ftp.alwaysdata.com, 把你的Django程序上传到www目录下,顺便提醒下,你的程序的组织结构最好是标准的,这样第一次部署会轻松点。如下:
- yourproject/
- yourapp1/
- yourapp2/
- __init__.py
- manage.py
- settings.py
- urls.py
- README
再用ssh工具(如secureCRT, putty),设置协议ssh2,端口22, 登录到ssh.alwaysdata.com, 在yourproject目录下,mkdir public, 在public目录下,创建文件django.fcgi,.htaccess(这2个文件最好在ssh中创建,如果在windows中创建的话,容易出现编码格式不兼容问题),内容如下:
django.fcgi
- import os, sys
- _PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
- sys.path.insert(0, _PROJECT_DIR)
- sys.path.insert(0, os.path.dirname(_PROJECT_DIR))
- _PROJECT_NAME = _PROJECT_DIR.split('/')[-1]
- os.environ['DJANGO_SETTINGS_MODULE'] = "%s.settings" % _PROJECT_NAME
- from django.core.servers.fastcgi import runfastcgi
- runfastcgi(method="threaded", daemonize="false")
.htaccess
- AddHandler fcgid-script .fcgi
- RewriteEngine On
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteRule ^(.*)$ django.fcgi/$1 [QSA,L]
如果需要使用Django admin控制面板的话,还需要在public目录下做个链接文件,注意不要与public中现有文件重名:
- ln -s /usr/local/alwaysdata/python/django/1.1/django/contrib/admin/media/ media
在alwaysdata admin中create一个新的PostgreSQL数据库yourdatabase作为你的站点数据库, 设置用户名yourname及密码yourpassword,并在settings.py中作相应设置:
- DATABASE_ENGINE = 'postgresql_psycopg2'
- DATABASE_NAME = 'yourdatabase'
- DATABASE_USER = 'yourname'
- DATABASE_PASSWORD = 'yourpassword'
- DATABASE_HOST = 'postgresql.alwaysdata.com'
另外所有meida文件,如js, css, pic等都需要放在public目录下,并在settings.py中做相应设置(具体参数视你的程序组织结构而定):
- MEDIA_ROOT = join(myblog_path, 'public', 'resources', 'static')
- ADMIN_MEDIA_ROOT = join(myblog_path, 'public', 'media')
- MEDIA_URL = ROOT_URL + 'resources/'
此外对django.fcgi 添加可执行属性:chmod +x django.fcgi.
最后还剩下一件事:同步数据库文件:
- python manage.py syncdb
- python manage.py migrate
到此为止,全部设置完成。
在firefox中运行<yourname>.alwaysdata.net,看看效果吧。
法文原文Wiki,介绍在alwaysdata上部署Django的,请猛击。