私は似たような質問をたくさん見てきましたが、それでも私は失敗しています。XP、Apache 2.2、Django 1.4、Python 2.7、および mod_wsgi 3.3 を獲得しました。私がやろうとしているのは、バットファイルが実行され、こんにちはとエコーされるページにアクセスしたときだけです。これは、django 内部開発サーバーで実行すると機能します。しかし、Apacheに到達すると失敗し、error.logにメッセージが表示されます
システムは、指定されたデバイスに書き込めません。
システムは、指定されたデバイスに書き込めません。
システムは、指定されたデバイスに書き込めません。
システムは、指定されたデバイスに書き込めません。
システムは、指定されたデバイスに書き込めません。
他の多くの場所でそのエラーを見たことはありません。ほとんどの人は「許可が拒否されました」と表示されるようです。私はまだ許可が間違っていると思います。したがって、実行すると、コンソールに表示されるdjango内部サーバーになります。
モデルを検証しています...
0 個のエラーが見つかりました
Django バージョン 1.4、設定 'testsite.settings' を使用
開発サーバーは http://127.0.0.1:8000/ で実行され
ています CTRL-BREAK でサーバーを終了してください。C:\Sites\cprm>echo hi
hi
[2012/09/18 14:58:45] "GET / HTTP/1.1" 200 63
それは問題ないようです。/cprm ではなく、/testsite から実行しているという唯一の不満があります。私はただcdすることができました..前に。とにかく、内部サーバーではコンソールに書き込んでいるので、Apacheで同等のことをする必要があると思います。Apache コンソールがどこにあるかわかりません。エラーが生成される場所であるため、Apacheログファイルに権限を追加しようとしました。それが通常のコンソールと同等かどうかはわかりません。
私のApacheファイルは次のようになります(バックティックは無視してください):
<`VirtualHost *>
ServerName http://example.com:80
WSGIScriptAlias /cprm "C:/sites/cprm/wsgi.py"
WSGIScriptAlias /testsite "C:/sites/testsite/wsgi.py"
<Directory "C:/sites">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/logs">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
<`/VirtualHost>
私のビューは次のようになります。
from django.http import HttpResponse
import datetime, os
def home(request):
os.system('C:/Sites/testsite/testsite/test.bat')
now = datetime.datetime.now()
html = "<html><body>It is now %s.</body></html>" % now
return HttpResponse(html)
基本的には、私が試した簡単なテストです。
編集
ハイパチャ。返信ありがとうございます。私は今、このトピックについていくつか読んだことがあります。だから私はあなたが示した変更を加えました。私の wsgi.py ファイルは次のようになります。
os、sysのインポート
path = 'C:/Sites/testsite'
パスが sys.path にない場合:
sys.path.append(path)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testsite.settings")
sys.stdout = sys.stderr
print 'hi'
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
次に、error.log に移動すると、実際に「hi」が表示されます。それでいいです。ただし、echo hello を含む test.bat ファイルは実行されず、同じメッセージが表示されます。そして、許可のアドバイスをありがとう。現在、仮想を使用していません。私はまだその準備ができていません。私が試すことができる他のアイデアはありますか?