403 - Запрещено с Apache и Django в Windows с помощью mod_wsgi - PullRequest
0 голосов
/ 11 марта 2019

Я просмотрел множество руководств и постов, связанных с Apache и Django для Windows, чтобы попытаться решить мою проблему. Я могу запустить проект Django через сервер разработки и знаю, что моя установка Apache работает. Я знаю, что моя проблема заключается в конфигурации Apache, чтобы заставить его работать с Django. Моя конфигурация показана ниже. Я позаботился о том, чтобы папка проекта сервера была доступна для всех с правами на чтение и выполнение Я попытался установить пути с "C:" и без. Установка доступа к каталогу файловой системы сервера «Требовать все предоставлено» (не рекомендуется) не помогает. Чего мне не хватает?

Django settings.py

ALLOWED_HOSTS = ['*']
WSGI_APPLICATION = 'INDmain.wsgi.application'
STATIC_ROOT = os.path.join(BASE_DIR, "static/")

httdp.conf

Include conf/extra/httpd-vhosts.conf # "#" is removed from start of line.
LoadFile "c:/users/user/appdata/local/programs/python/python36/python36.dll"
LoadModule wsgi_module "c:/users/user/appdata/local/programs/python/python36/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "c:/users/user/appdata/local/programs/python/python36"

WSGIScriptAlias / "C:/INDmain/main/wsgi.py
WSGIPythonPath "C:/INDmain"
<Directory "C:/INDmain/main">
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>

HTTPD-vhosts.conf

<VirtualHost *:80>
    ServerName localhost
    ServerAlias localhost

    Alias "/" "C:/INDmain/main"
    <Directory "C:/INDmain/main">
        Require all granted
    </Directory>

    Alias "/static" "C:/INDmain/static"
    <Directory "C:/INDmain/static">
        Require all granted
    </Directory>

</VirtualHost>

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

После установки и запуска в контейнере Docker с Ubuntu я смог заставить работать свою версию Windows после копирования проекта в каталог в каталоге Apache и внесения некоторых изменений в конфигурацию для нового расположения.Окончательные файлы конфигурации приведены ниже.

Макет веб-сайта / проекта

\Apache24
--> www
    --> INDapp
        --> INDmain
            --> INDmain
            --> main
            db.sqlite3
            manage.py

Django settings.py

ALLOWED_HOSTS = ['<ip_address>']

# Application definition

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'main.apps.MainConfig',

WSGI_APPLICATION = 'INDmain.wsgi.application'
STATIC_ROOT = os.path.join(BASE_DIR, "static/")

httdp.conf

LoadFile "c:/users/rsloma/appdata/local/programs/python/python36/python36.dll"
LoadModule wsgi_module "c:/users/rsloma/appdata/local/programs/python/python36/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "c:/users/rsloma/appdata/local/programs/python/python36"

WSGIPythonPath C:/Apache24/www/INDapp/INDmain

httpd-vhosts.conf

<VirtualHost *:80>
    ServerName localhost
    ServerAlias localhost
    ServerAlias <ip_address>

    DocumentRoot C:/Apache24/www/INDapp

    Alias /static "C:/Apache24/www/INDapp/INDmain/main/static"  
    <Directory "C:/Apache24/www/INDapp/INDmain/main/static">
        Require all granted
    </Directory>

    <Directory "C:/Apache24/www/INDapp/INDmain/INDmain">
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    WSGIScriptAlias / C:/Apache24/www/INDapp/INDmain/INDmain/wsgi.py

</VirtualHost>
0 голосов
/ 11 марта 2019

Конечно, я реализую только в Linux, поэтому следующее может оказаться бесполезным, но мой стандартный подход будет состоять в создании файла sitename_co_uk.conf в /etc/apache2/sites-available

. Ниже приводится содержимое файла.:

<VirtualHost *:80>
    ServerAdmin webmaster@sitename.co.uk
    ServerName sitename.co.uk
    ServerAlias www.sitename.co.uk
    DocumentRoot /var/www/sitename
    WSGIDaemonProcess sitename python-path=/var/www/sitename python-home=/var/www/sitename/env
    WSGIProcessGroup sitename
    WSGIScriptAlias / /var/www/sitename/core/wsgi.py

    Alias /robots.txt /var/www/sitename/static/robots.txt
    Alias /favicon.ico /var/www/sitename/static/favicon.ico

    Alias /media/ /var/www/sitename/media/
    Alias /static/ /var/www/sitename/static/

    <Directory /var/www/sitename/static>
        Require all granted
    </Directory>

    <Directory /var/www/sitename/media>
        Require all granted
    </Directory>

    WSGIScriptAlias / /var/www/sitename/core/wsgi.py

    <Directory /var/www/sitename/core>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Это означает, что мой сайт фактически находится в каталоге /var/www/sitename'. This directory will contain a virtual environment in env and the manage.py file. My settings.py , wsgi.py etc are within the sub-directory core`.

Это включается с помощью a2ensite sitename_co_uk.conf.

. Должно работать в Windows аналогичным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...