2015-11-01 64 views
0

我是Django開發中的新手。我創建了一個Django應用程序,並在開發服務器(即127.0.0.1:8080/mysite)中進行了測試。然後我決定在Apache服務器2.4.9上運行這個應用程序。我們知道最好的選擇是配置mod_wsgi。 我的問題是Apache服務器從來沒有像波紋管配置後運行:在windows上爲wamp服務器配置mod_wsgi

  1. 保持mod_wsgi.so downloaded在 'C:\ WAMP \ BIN \ apache的\ apache2.4.9 \模塊\'。
  2. 插入 「的LoadModule wsgi_module模塊/ mod_wsgi.so」 到的httpd.conf
  3. 重啓瓦帕服務器

我使用的32位的Python,Apache和mod_wsgi的的。 Python爲所有用戶安裝。請幫我 -

回答

0

首先模塊文件夾複製mod_wgi, 然後添加以下到httpd.conf中的模塊列表:

LoadModule wsgi_module modules/mod_wsgi.so 

注意,命名是很重要的(應_module後綴)

以下內容添加到你的httpd.conf

Include path_to_your_proj/django_wsgi.conf 

django_wsgi.conf文件:

WSGIScriptAlias path_to/django.wsgi 

<Directory project_path> 
    Allow from all 
    Order allow,deny 
</Directory> 

Alias /static path_to_static_files 

django.wsgi文件:

import os 
import sys 

#Calculate the path based on the location of the WSGI script. 
CURRENT_DIR = os.path.dirname(__file__).replace('\\','/') 
PROJECT_ROOT = os.path.abspath(os.path.join(CURRENT_DIR, os.pardir)) 
SETTINGS_DIR = os.path.join(PROJECT_ROOT,'proj_dir_name') 

if PROJECT_ROOT not in sys.path: 
    sys.path.append(PROJECT_ROOT) 
if SETTINGS_DIR not in sys.path: 
    sys.path.append(SETTINGS_DIR) 

os.chdir(SETTINGS_DIR) 
os.environ['DJANGO_SETTINGS_MODULE'] = 'proj_name.settings' 

import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 

如果您正在使用的virtualenv(我認爲),操作步驟如下:

httpd.conf文件:

# virtual env02 
<VirtualHost ip-adddress_or_dns:port_if_other_than_80> 
    ServerName just_a_name  # like : app01 
    ServerAlias just_an_alias # like : app01.mydomain.com 
    ErrorLog "logs/env02.error.log" 
    CustomLog "logs/env02.access.log" combined 
    WSGIScriptAlias/direct_path_to_you_wsgi_with_forward_slashes # like: C:/virtual/venv01/proj_name/wsgi.py 
    <Directory proj_dir_with_forward_slashed> 
     <Files wsgi.py> 
      Require all granted 
     </Files> 
    </Directory> 

    Alias /static path_to_static_folder_with_forward_slashes 
    <Directory path_to_static_folder_with_forward_slashes> 
     Require all granted 
    </Directory> 
</VirtualHost> 
# end virtual env02 

wsgi.py文件:

activate_this = 'c:/virtual/env02/scripts/activate_this.py' 
# execfile(activate_this, dict(__file__=activate_this)) 
exec(open(activate_this).read(),dict(__file__=activate_this)) 

import os 
import sys 
import site 
# Add the site-packages of the chosen virtualenv to work with 
site.addsitedir('c:/Organizer/virtual/env02/Lib/site-packages') 

# Add the app's directory to the PYTHONPATH 
sys.path.append('c:/virtual/proj_name') 
sys.path.append('c:/virtual/proj_name/default_app_name') 

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

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "default_app_name.settings") 

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

感謝您的努力。是否有必要與Django項目集成?我只想安裝mod_wsgi並正確運行未成功的Apache服務器! S – Thesun

+0

嘗試使用不同版本的mod_wsgi,僅使用apache服務器而不使用wamp或xamp – Serjik

+0

這次我嘗試在apache獨立服務器中加載mod_wsgi時出現以下錯誤:httpd.exe:C:/ Apache24第72行的語法錯誤/conf/httpd.conf:無法將 modules/mod_wsgi.so加載到服務器中:找不到指定的過程。 – Thesun