天天看點

Windows環境下,将Django部署到Apache Web Server

在Windows上部署Django(用mod_wsgi)會出現各種奇怪的問題,現簡單記錄下配置過程及遇到的錯誤及解決方法。

環境搭建                                                   

windows 7

python 2.7.3 (注意最好是32位的,因為Apache目前對64位支援非常不友善,嘗試了好多次,64位的太高大上,衆多不相容)

Apache2.2.10 (直接下載下傳apache_2.2.10-win32-x86-no_ssl.msi就行)

Django-1.6.1 (官網下載下傳)

配置思路                                                   

1、配置apache的httpd.conf檔案

2、配置django相關配置檔案

配置過程                                                   

其實配置生效針對不同的環境有不同的細節需要處理,網上的方案(包括本篇)都不是一定通用的,隻是在某種環境下有效,但總體思路就是配置上述提及的兩個配置檔案。

部署django項目常用的兩個方式是使用mod_python和mod_wsgi兩種部署方式,這裡我使用的是mod_wsgi。

1、先去網上下載下傳個名叫這個的東西:mod_wsgi-3.4.ap22.win32-py2.7,裡面有個檔案是mod_wsgi.so,然後把這個copy到apache安裝目錄的modules檔案下(預設安裝目錄是:C:\Program Files (x86)\Apache Software Foundation\Apache2.2\modules)

下面兩個配置中涉及路徑的很容易搞錯,如果是絕對路徑的話要檢查自己是否正确。

2、在Django項目根目錄下建立兩個檔案:

django.wsgi:

#coding=utf-8

import os
import sys
import django.core.handlers.wsgi

os.environ['DJANGO_SETTINGS_MODULE'] = 'appops.settings'
app_apth = "D:/OPSAPP/appops"
sys.path.append(app_apth)
application = django.core.handlers.wsgi.WSGIHandler()
      

apache_django_wsgi.conf:

#Alias / D:/OPSAPP/appops
Alias /favicon.jpg D:/OPSAPP/appops/static/images/favicon.jpg

#WSGIScriptAlias /api "D:/OPSAPP/appops/appapi/handler.py"  #注意,這裡在httpd.conf中寫過的話這裡就不用寫了。
WSGIScriptAlias / "D:/OPSAPP/django.wsgi"

WSGIPassAuthorization On

<Directory "D:/OPSAPP/appops/appops">
Order Deny,Allow
Allow from all
</Directory>

Alias /static/ D:/OPSAPP/appops/static/

<Directory  D:/OPSAPP/appops/static/ >
Order deny,allow
Allow from all
IndexOptions FancyIndexing
</Directory>

<Directory  D:/OPSAPP/appops/ >
Order deny,allow
Allow from all
IndexOptions FancyIndexing
</Directory>

<Directory "D:/OPSAPP"> 
Allow from all
</Directory>
      

目錄結構如下:

Windows環境下,将Django部署到Apache Web Server
Windows環境下,将Django部署到Apache Web Server

3、編輯apache的配置檔案httpd.conf(C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\httpd.conf)

中間加上一句:

LoadModule wsgi_module modules/mod_wsgi.so

檔案結尾新增下列配置:

Alias /static D:/OPSAPP/appops/static     #這是為了可以通過url來通路static檔案
<Location "/static/">
       SetHandler None
</Location>


<VirtualHost *:80>                       #配置虛拟目錄
ServerName app.ops.test.com
#ServerName 192.168.18.74

DocumentRoot D:/OPSAPP
WSGIScriptAlias / D:/OPSAPP/django.wsgi

<Directory />
Order deny,allow
Allow from all
</Directory>
<Directory /apache>
Allow from all
</Directory>
</VirtualHost>


<Directory "D:/OPSAPP/appops/static/">    #這個一定需要,不然網頁樣式錯誤,css沒有起作用
Order Deny,Allow
Allow from all
</Directory>
      

重新開機下apache服務基本就OK了。

常見錯誤                                                     

通路失敗時的錯誤會記錄在apache日志裡(C:\Program Files (x86)\Apache Software Foundation\Apache2.2\logs),

 1、靜态資源不能通路,如css樣式錯亂等,需要在httpd.conf檔案裡增加配置:

<Directory  D:/OPSAPP/appops/static/ >
Order deny,allow
Allow from all
IndexOptions FancyIndexing
</Directory>
      

2、出現找不到子產品的錯,如no module named XXX等,主要有兩個原因:

1)、路徑錯了

2)、檔案命名跟Django或python内部子產品沖突了

參考:

http://www.cnblogs.com/zhengyun_ustc/archive/2006/11/20/django_apache_win32.html http://www.server110.com/apache/201309/1873.html

作者:

zhoujie

出處:

http://www.cnblogs.com/zhoujie/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,不然我擔心部落格園找你算賬

如果您覺得本文對你有幫助,請豎起您的大拇指右下角點推薦,也可以關注我