Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在alwaysdata.com上部署Django_Python_Django_Fastcgi - Fatal编程技术网

Python 在alwaysdata.com上部署Django

Python 在alwaysdata.com上部署Django,python,django,fastcgi,Python,Django,Fastcgi,我是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 appl

我是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() 


您正在尝试混合两种不同的web服务器集成方法:fcgi(FastCGI)和wsgi

您的第一个代码片段用于与web服务器的wsgi接口,是推荐的将Django与Apache集成的方法。可以在官方Django文档和mod_wsgi文档中找到帮助您正确设置的非常好的资源(包括示例)

第二个代码段(带有AddHandler行)是针对fcgi的。这种接口通常用于将Django与lighttpd和nginx web服务器连接起来。可以在Django官方文档中找到用于设置fcgi接口的资源

由于它看起来像是alwaysdata.com只使用FastCGI(fcgi)接口,所以您必须使用这种方法。他们的wiki页面上似乎有一些示例,特别是您需要用以下内容替换您的第一个(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")
下面是使用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")
    
    AddHandler fcgid-script .fcgi
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ django.fcgi/$1 [QSA,L]
    
  • 接下来,在
    public
    文件夹中创建一个.htaccess,其中包含以下内容:

    #!/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")
    
    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
    
  • 希望这有帮助。我和管理员谈过,他说他很快就会提供一个英文维基。让我们希望这一切很快就会发生


    更新:有一篇

    我们现在(几个月后)收到一篇英文文章:


    关于,

    您有错误吗?您在第5行中缺少了a+,您的意思是“../”而不是“/..”?+1,用于提供有关系统的答案,该系统的文档是用您不会说的语言编写的。也许应该有一个新的徽章,只是不知道它会被称为什么。多语言非翻译的野驴猜测黑客?不,太长了。:-)一直以来,数据每天都变得越来越国际化。我想如果你愿意为英语维基(这是一个维基,你可以贡献自己的力量)提供帮助,他们会非常高兴。如果文档是法语的,支持是世界级的:)这对我来说仍然不起作用。当我访问我的网站时,我只会得到一个总是数据的默认网页(~/www/index.html)。服务器如何知道运行Django/Python脚本?