2011-02-18 33 views
1

我有一個django應用程序,在django開發服務器下完美工作。現在我試圖使用mod_wsgi在apache2.2下運行它。
在Apache中的httpd.conf文件我已經添加了:

獲取從django開發服務器傳遞到apache服務器的無效模板

<IfModule wsgi_module> 
    WSGIScriptAlias /index my_path_to_wsgi_modules/django.wsgi 
</IfModule> 

和django.wsgi模塊包含了所有的Django文檔中闡述的基本配置:http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/
不幸的是,當我運行服務器並嘗試訪問主頁面我獲取模板頁面,但沒有可變數據。服務器日誌說:

[Fri Feb 18 13:50:33 2011] [error] [client 127.0.0.1] File does not exist: /usr/local/apache2/htdocs/api, referer: http://127.0.0.1/example/ 


正如我以前說過的奇怪的是,同樣的代碼工作完全在Django開發服務器。我是新編程的Web應用程序,請問任何人都可以幫忙嗎?

我django.wsgi文件看起來像這樣:

進口OS 進口SYS

從os.path中進口月

基本路徑=「/家庭/例子/工作臺/ examplews/SRC」

sys.path.append(基本路徑)
sys.path.append( '/家庭/示例/工作區/ examplews/SRC/examplews')

os.environ [ 'DJANGO_SETTINGS_MODULE'] = 'examplews.settings'

進口django.core.handlers.wsgi 申請= django.core.handlers.wsgi.WSGIHandler()

而我httpd.con文件,像這樣:

的ServerRoot 「的/ usr /本地/ Apache2的」

聽80

的LoadModule wsgi_module模塊/ mod_wsgi.so

用戶apache的
組阿帕奇

的ServerAdmin例如@域名。COM

的DocumentRoot 「在/ usr /本地/的Apache2/htdocs目錄」

<Directory />
有FollowSymLinks
的AllowOverride無
訂單拒絕,允許
所有
</Directory>

<Directory "/usr/local/apache2/htdocs">
拒絕期權指數FollowSymLinks

的AllowOverride無

訂購允許,拒絕
所有

</Directory>

<IfModule dir_module>
允許的DirectoryIndex index.html的index.php文件index.sh的Default.jsp
</IfModule>

<FilesMatch "^\.ht">
訂購允許,拒絕
所有
手託全部拒絕
</FilesMatch>

錯誤日誌 「日誌/ error_log中」

日誌級別警告

<IfModule log_config_module>
的LogFormat「%H%1%U% 「%\」%\「%\」%\「%{用戶代理}我\」「合併\「%s%b」共同

<IfModule logio_module>
的LogFormat 「%H%升%U%T \」 %r \」%>取值%B \ 「%{Referer的} I \」 \ 「%{用戶代理} I \」 %I %O」的combinedio
</IfModule>
的CustomLog 「日誌/訪問日誌」 共同

</IfModule>

<IfModule alias_module>
</IfModule>

<IfModule cgid_module>
</IfModule>

<IfModule wsgi_module>
WSGIScriptAlias /主/家庭/例子/工作臺/ examplews/src目錄/ examplews/apache_conf/Django的。WSGI
</IfModule>
<Directory "/home/example/WorkSpace/examplews/src/examplews/apache_conf">
訂購允許,拒絕
所有
</Directory>
DefaultType的文本允許/純

<IfModule mime_module>
TypesConfig的conf /的mime.types
將AddType應用程序/ x-壓縮.Z
AddType應用程序/ x-gzip .gz .tgz
</IfModule>

<IfModule ssl_module>
SSLRandomSeed啓動內置
SSLRandomSeed連接內置
</IfModule>

+0

確實存在`/ usr/local/apache2/htdocs/api`嗎?也許Apache中的其他內容配置錯誤。 – 2011-02-18 13:57:04

回答

0

最後我發現的錯誤。它沒有連接到httpd.conf文件,而是連接到django urls.py文件和模板的URL。
當我以這種方式安裝的myapp:

WSGIScriptAlias /myapp my_path_to_wsgi_module/django.wsgi 

我相信,在Django模板文件中指定的URL應進行初始的斜槓,像這樣: '/api/dir'
它的結果是,在這樣的應用程序只適用於Django的開發服務器,但不是在Apache。

相反,如果你使用的網址沒有初始的斜槓,如:
'api/dir'
該應用程序可以正常工作都Django開發服務器和Apache的!
這樣的:(r'^api/dir$', 'available_services')
,而不是像這樣:(r'^/api/dir$', 'available_services')

也許這就是專家的明顯的事情的Django用戶

您必須避免使用出發,即使在Django的urls.py文件的模式匹配斜槓但如果你像我這樣的新手,這可能會讓你失去一定的時間,因爲這是一個很難被發現的問題。