【问题标题】:How should I add WSGIPython path in VirtualHost for Windows server?我应该如何在 VirtualHost for Windows 服务器中添加 WSGIPython 路径?
【发布时间】:2020-11-19 07:49:56
【问题描述】:

我正在尝试在VirtualHost 中添加WSGIPythonPath,但它给我一个错误:

/etc/httpd/conf/httpd.conf 第 549 行的语法错误:

WSGIPythonPath 不能出现在节内

我尝试通过以下方式解决它: Where should WSGIPythonPath point in my virtualenv?

但是,经过深入研究,我发现WSGIDaemonProcessWSGIProcessGroup 在Windows 上不受Why WSGIDaemonProcess isn't available on Windows? 支持。

那么,我应该如何添加WSGIPythonPath 以及在哪里可以在我的 Apache24 服务器上托管多个 Django 站点。

任何帮助都是有益的。

这是我的httpd.conf 文件:

LoadFile "c:/python37/python37.dll"
LoadModule wsgi_module "c:/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/python37"
WSGIPythonPath "E:/edukon/"
Listen 7020

<VirtualHost *:7020>
ServerName 000.000.000.000

# Django Project

WSGIScriptAlias / "E:/edukon/edukon/wsgi.py"


<Directory "E:/edukon/edukon">
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>

Alias /static "E:/edukon/static/"
<Directory "E:/edukon/static/">
    Require all granted
</Directory>

Alias /media "E:/edukon/media/"
<Directory "E:/edukon/media/">
    Require all granted
</Directory>
</VirtualHost>

【问题讨论】:

    标签: django apache


    【解决方案1】:

    我在设置两个 virt 时经历了一段艰难的旅程。 Windows 下使用 Apache mod_wsgi 的主机。所以这里的解决方案是针对 Apache/mod_wsgi 和 Windows 的。

    一般来说,我发现很难将 Windows 和 unix 的 Apache/mod_wsgi 分开,因为在许多文章中这两者混为一谈,或者根本没有明确提到正在讨论哪一个。

    1. 这里是 httpd-vhosts.conf 中 virt 主机定义的重要部分,因为在 Apache/mod_wsgi for Windows 中没有可用的 WSGIDaemonProcess/WSGIProcessGroup。
       <VirtualHost *:80>
                ServerName name1
                WSGIScriptAlias / "D:/....../wsgi.py" application-group=site1
                ......                                                                            
         </VirtualHost>
     
        <VirtualHost *:80>
                ServerName name2
                WSGIScriptAlias / "D:/....../wsgi.py" application-group=site2
                ......                                                                            
         </VirtualHost>
    

    如果您不添加“应用程序组...”,则只有在 Apache 重新启动后首次调用的虚拟主机将使用 wsgi.py 和 settings.py 进行初始化,然后将所有请求都发送到 virt。具有 WSGIScriptAlias 或换句话说由 mod_wsgi 处理的主机!据我了解,这是一个相当严重的错误,因为 virt 主机应该始终将自己的“线程”作为 Apache/mod_wsgi 的标准行为。顺便说一句,Site1 和 Site2 只是名称必须不同。

    1. 无法在 virt 中分配 WSGIPythonPath。主机部分。您需要将等效路径分配放在每个应用的 wsgi.py 文件中:
        sys.path.append('D:/........../xxxxx_project/xxxxx')
        os.environ['DJANGO_SETTINGS_MODULE'] = 'xxxxx.settings'
        application = get_wsgi_application()
    

    【讨论】:

    • 感谢您的帮助!为我节省了大量时间和资源。
    • 是的,虽然在 Ubuntu 服务器中由于 fork 支持很容易
    猜你喜欢
    • 2011-11-27
    • 2011-08-11
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多