我正在運行一個ec2實例來承載一些Django網站。這些網站由Apache使用mod_wsgidjango,apache,mod_wsgi和python py-scrypt不能一起工作
由於幾天我試圖部署一個新的web平臺,我們正在開發,但我遇到了一個似乎不可能解決的問題。出於安全原因,我們使用scrypt 0.4來保護用戶的個人信息,如密碼。
在開發服務器上,一切都像一個魅力,但是當我們部署到我們的實時服務器時,我們得到一個500內部服務器錯誤。 Apache的日誌給了我以下消息腳本頭
過早結束:socialmarketingplatform.wsgi,引用者:
當我去掉其中scrypt模塊使用一切正常就行了。另外當我運行與Django一起交付的服務器時,scrypt啓用了一切在活動服務器上的作品。所以它是生成錯誤的mod_wsgi,django和scrypt的組合。
我使用下列WSGI文件:
import os
import sys
path = '/var/www/vhosts/[sub_domain]'
if path not in sys.path:
sys.path.append(path)
sys.path.append(path + '/socialmarketingplatform')
os.environ['DJANGO_SETTINGS_MODULE'] = 'socialmarketingplatform.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
而下面的虛擬主機配置:
<VirtualHost *:80>
#Basic setup
ServerAdmin [removed email]
ServerName luxdevelopment.net
ServerAlias [sub domain]
DocumentRoot /var/www/vhosts/[sub domain]/socialmarketingplatform/
Alias /media/admin /usr/lib/python2.6/site-packages/Django-1.3-py2.6.egg/django/contrib/admin/media
Alias /media /var/www/vhosts/[sub domain]/socialmarketingplatform/media
<Location media="">
SetHandler None
</Location>
LogLevel warn
ErrorLog /var/log/httpd/smp_error.log
CustomLog /var/log/httpd/smp_access.log combined
WSGIDaemonProcess luxdevelopment.net user=apache group=apache threads=25
WSGIProcessGroup luxdevelopment.net
WSGIScriptAlias//var/www/cgi-bin/socialmarketingplatform.wsgi
</VirtualHost>
我希望有人能幫助我解決這個問題。如果還有任何問題請告訴我。
唉!不要把你的代碼放在你的DocumentRoot中!特別是如果你關心安全。 – 2011-04-05 13:05:16
@ daniel-roseman:這就是爲什麼我的文檔根目錄是/ var/www/html /如果這還不夠安全,那麼你建議什麼?也許我誤解了你,我會看到如果我可以移動源文件夾外的來源。感謝您的建議。 – 2011-04-05 13:14:17
那麼我的意思是你把DocumentRoot設置到你的代碼的位置,在vhost配置中。不要這樣做。 – 2011-04-05 13:35:53