2015-11-01 2 views
0

Я новичок в разработке Django. Я создал приложение Django и протестировал его на сервере разработки, т. Е. 127.0.0.1:8080/mysite. Затем я решил запустить это приложение на сервере Apache 2.4.9. Как известно, лучший вариант - это настройка mod_wsgi. Моя проблема в том, сервер Apache никогда не работает после настройки как ниже:Настройка mod_wsgi для сервера wamp на окнах

  1. Держите mod_wsgi.so downloaded на 'C: \ WAMP \ Bin \ Apache \ apache2.4.9 \ Modules \'.
  2. Вставить "LoadModule wsgi_module модули/mod_wsgi.so" в httpd.conf
  3. Restart WAMP сервер

Я использую 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 file:

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

Thanx для ваших усилий. Нужно ли интегрироваться с проектом django? Я просто хочу установить mod_wsgi и правильно запустить Apache-сервер, который не преуспеет! S – Thesun

+0

Попробуйте использовать разные версии mod_wsgi, используйте только один сервер apache, а не wamp или xamp. – Serjik

+0

На этот раз у меня возникает следующая ошибка при попытке загрузить mod_wsgi только на сервере apache: httpd.exe: Ошибка синтаксиса в строке 72 в C:/Apache24 /conf/httpd.conf: Не удается загрузить modules/mod_wsgi.so в сервер: указанную процедуру не удалось найти. – Thesun

Смежные вопросы