在alwaysdata.com部署Django
我刚开始学习Django,试了这个方法,但我无法部署。请问我该怎么做呢?
#!/usr/bin/python
import sys
import os
base = os.path.dirname(os.path.abspath(__file__)) + '/..'
sys.path.append(base)
os.environ['DJANGO_SETTINGS_MODULE'] = 'myfirstapp.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
AddHandler fcgid-script .fcgi
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^(media/.*)$ - [L]
RewriteRule ^(adminmedia/.*)$ - [L]
RewriteCond %{REQUEST_URI} !(cgi-bin/myproject.fcgi)
RewriteRule ^(.*)$ mysite.fcgi/$1 [L]
3 个回答
我们现在有一篇英文文章,已经有几个月了: Django在alwaysdata.com上的介绍
祝好,
你正在尝试混合两种不同的网页服务器集成方法:fcgi(快速cgi)和wsgi。
你提供的第一个代码片段是用于wsgi接口的,这种方法是将Django与Apache集成的推荐方式。你可以在官方Django文档中找到很多很好的资源(包括示例),帮助你正确设置这一切,链接在这里:如何将Django与Apache和mod_wsgi一起使用,还有mod_wsgi的文档:与Django的集成。
第二个代码片段(包含AddHandler行)是用于fcgi的。这种接口通常用于将Django与lighttpd和nginx网页服务器连接起来。关于如何设置fcgi接口的资源可以在官方Django文档中找到,链接在这里:如何将Django与FastCGI、SCGI或AJP一起使用。
看起来alwaysdata.com只使用FastCGI(fcgi)接口,所以你只能使用这种方法。它们的维基页面上似乎有一些示例,链接在这里:部署一个Django应用,特别是你需要将你的第一个(wsgi)代码片段替换为这个:
#!/usr/bin/python
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")
这里有一个alwaysdata的维基页面,讲的是如何用fastcgi来设置Django。不过唯一的问题是:它是用法语写的。
我虽然不懂法语,但大概意思是:
- 在你的Django项目文件夹里,创建一个叫做
public
的文件夹。 在这个文件夹里,创建一个名为
django.fcgi
的文件,内容如下:#!/usr/bin/python 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")
接下来,在
public
文件夹里创建一个名为.htaccess的文件,内容如下:AddHandler fcgid-script .fcgi RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ django.fcgi/$1 [QSA,L]
如果你打算使用Django的管理界面,记得在
public
文件夹里创建一个符号链接:ln -s /usr/local/alwaysdata/python/django/1.1/django/contrib/admin/media/ media
最后,你的文件夹结构应该大致是这样的:
myproject/ __init__.py manage.py public/ django.fcgi .htaccess media/ settings.py urls.py myapp/ views.py models.py
希望这些信息对你有帮助。我和管理员聊过,他说很快会提供一个英文的维基页面。希望这能尽快实现。
更新:现在有一个英文维基文章了。