1

これはSOに関する私の最初の投稿です。これを調査し続けるにはあまりにもイライラしてしまったので、自分の設定を投稿して、誰かが助けてくれるかどうかを確認します.

Apache をサービスとして (管理者として) 実行すると、最初に、ドキュメント ルートを使用して URL 経由でファイルにアクセスできます (クールではありませんが、Apache conf のドキュメント ルート設定であることはわかっているため、私の問題ではありません)。次に、127.0.0.1/blog/blog/ と入力すると、500 エラーがスローされ、Apache ログに次のように表示されます。

[Tue Sep 24 19:44:20 2013] [info] mod_wsgi (pid=2152): Create interpreter '127.0.0.1|/blog'.
[Tue Sep 24 19:44:20 2013] [info] mod_wsgi (pid=2152): Adding 'C:/Users/jdp/Documents/www/mysite.com' to path.
[Tue Sep 24 19:44:20 2013] [info] [client 127.0.0.1] mod_wsgi (pid=2152, process='', application='127.0.0.1|/blog'): Loading WSGI script 'C:/Users/jdp/Documents/www/mysite.com/mysite/wsgi.py'.
[Tue Sep 24 19:49:40 2013] [info] [client 127.0.0.1] (OS 10053)An established connection was aborted by the software in your host machine.  : core_output_filter: writing data to the network
[Tue Sep 24 19:49:40 2013] [error] [client 127.0.0.1] mod_wsgi (pid=2152): Exception occurred processing WSGI script 'C:/Users/jdp/Documents/www/mysite.com/mysite/wsgi.py'.
[Tue Sep 24 19:49:40 2013] [error] [client 127.0.0.1] IOError: failed to write data
[Tue Sep 24 19:49:48 2013] [info] [client 127.0.0.1] (OS 10053)An established connection was aborted by the software in your host machine.  : core_output_filter: writing data to the network
[Tue Sep 24 19:49:48 2013] [error] [client 127.0.0.1] mod_wsgi (pid=2152): Exception occurred processing WSGI script 'C:/Users/jdp/Documents/www/mysite.com/mysite/wsgi.py'.
[Tue Sep 24 19:49:48 2013] [error] [client 127.0.0.1] IOError: failed to write data
[Tue Sep 24 19:52:10 2013] [info] [client 127.0.0.1] (OS 10053)An established connection was aborted by the software in your host machine.  : core_output_filter: writing data to the network
[Tue Sep 24 19:52:10 2013] [error] [client 127.0.0.1] mod_wsgi (pid=2152): Exception occurred processing WSGI script 'C:/Users/jdp/Documents/www/mysite.com/mysite/wsgi.py'.
[Tue Sep 24 19:52:10 2013] [error] [client 127.0.0.1] IOError: failed to write data

ちなみに窓側。

最初に: http.conf:

WSGIPythonPath C:/Users/jdp/Documents/www/mysite.com

<VirtualHost *:80>
    ServerName 127.0.0.1
    ServerAlias randomserver.com
    ServerAdmin randomguy@example.com

    DocumentRoot C:/Users/usr/Documents/www/

    <Directory C:/Users/usr/Documents/www/>
    Order allow,deny
    Allow from all
    </Directory>

    WSGIPassAuthorization On

    WSGIScriptAlias /blog C:/Users/usr/Documents/www/mysite.com/mysite/wsgi.py


    <Directory C:/Users/usr/Documents/www/mysite.com/mysite>
    <Files wsgi.py>
    Order deny, allow
    Allow from all
    </Files>
    </Directory>
</VirtualHost>

もともと私はやろうとしていた:

WSGIPythonPath C:/Users/usr/Documents/www/mysite.com:C:/Users/jdp/Documents/site/env/Lib/site-packages

しかし、それはパス #1 で問題を引き起こし、mysite.settings をインポートできませんでした。私はそれを省略し、不足しているパッケージをルートの python ディレクトリにダウンロードしました。

C:/Users/usr/Documents/www/mysite.com/mysite/settings.py の設定は次のとおりです。

DEBUG = False
TEMPLATE_DEBUG = DEBUG

ADMINS = (
    # ('Your Name', 'your_email@example.com'),
)

MANAGERS = ADMINS

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'django_db',                      
        'USER': 'usr',
        'PASSWORD': '*******',
        'HOST': '127.0.0.1',                      
        'PORT': '0080',                      
    }
}

ALLOWED_HOSTS = ['*']


TIME_ZONE = 'America\New_York'


LANGUAGE_CODE = 'en-us'

SITE_ID = 1

USE_I18N = True

USE_L10N = True


USE_TZ = True


MEDIA_ROOT = r'C:\Users\usr\Documents\site\mysite\media'

MEDIA_URL = 'media/'

STATIC_ROOT = ''

STATIC_URL = '/static/'

STATICFILES_DIRS = (

)

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#    'django.contrib.staticfiles.finders.DefaultStorageFinder',
)

SECRET_KEY = '*********************************'

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
#     'django.template.loaders.eggs.Loader',
)

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    # Uncomment the next line for simple clickjacking protection:
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

ROOT_URLCONF = 'mysite.urls'

WSGI_APPLICATION = 'mysite.wsgi.application'

TEMPLATE_DIRS = (
    'C:/Users/usr/Documents/www/mysite.com/templates',
)

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
    'blog',
    'south',
    'django.contrib.markup',
)

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse'
        }
    },
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'django.utils.log.AdminEmailHandler'
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
    }

}

これが私の wsgi.py ファイルです。

import os

os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

と私の urls.py:

from django.conf.urls import patterns, include, url
from django.conf import settings

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'mysite.views.home', name='home'),
    # url(r'^mysite/', include('mysite.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    url(r'^admin/', include(admin.site.urls)),
    url(r'^blog/', include('blog.urls', namespace='blogs')),
)

他の情報が役立つかどうかはわかりません。どんな助けでも大歓迎です!少しの調整を試み、SO と mod_wsgi のドキュメントを検索するのに何時間も費やしましたが、ほとんど役に立ちませんでした。私はプログラミングに慣れていないので、噛むことができないほど噛んでいるのかもしれませんが、まだこのように立ち往生しているとは思いません.

4

2 に答える 2

1

プロジェクトのソース コードを DocumentRoot の下に置くべきではありません。

これにより、ソース コードにアクセスできなくなります。

500 エラーは、壊れたコードが原因であり、他の方法でエラーの詳細をログに記録するように Django を正しくセットアップしていなかった可能性があります。ロギング システムを使用してエラーをメールで送信しようとしているようですが、ADMINS を設定していないため、これらのメッセージが届かない可能性があります。

DEBUG モードを有効にすると、代わりにブラウザにエラーが表示されるようになりました。

FWIW、エラー:

IOError: failed to write data

これは、応答が書き戻される前にブラウザからの接続が切断されたためです。ページのリロードなどを強制した可能性があります。

于 2013-09-25T01:14:44.133 に答える