我想在Windows上的Apache上部署多个Django应用程序,但只知道如何部署一个。覆盖Wamp服务器的本地主机我可以部署应用程序没有问题,但我需要部署更多,不知道如何。我已经看到虚拟主机,并认为是好的,但不知道如何配置他们。有人知道我怎么做吗?提前感谢。
q1qsirdb1#
使用虚拟主机(vhosts)可以在Apache上托管多个django应用重要关注事项:1.在配置Apache期间,我建议从命令行以"httpd.exe"启动Apache,因为在XAMPP或WAMP中,您不会在error.log文件中看到一些初始启动错误消息。1.你可以只使用1 python版本甚至在不同virt.env为每个vhost作为apache模块mod_wsgi编译需要到fit到它并且是装载一次在apache的启动类似于httpd.conf中内容(由于您运行的是单个应用程序配置,因此应该已经有了这些内容):
LoadFile "c:/.../python/python38/python38.dll" LoadModule wsgi_module "c:/..../mod_wsgi.cp38-win_amd64.pyd"
1.如何设置virt.env和app文件夹路径:对于1个主机,您可以通过设置WSGIPythonHome和WSGIPythonPath指向httpd.conf中的应用程序文件夹来指向virt.env:
WSGIPythonHome "d:/..../django_project/env_folder" WSGIPythonPath "d:/..../django_project/app_name"
但是:您不能将WSGIPythonHome/WSGIPythonPath放在httpd-vhosts. conf中的虚拟主机声明内....这将导致错误消息解决方案:在www.example.com中动态设置路径,并从apache *. conf中删除WSGIPythonHome/WSGIPythonPath:wsgi.py dynamically and remove WSGIPythonHome/WSGIPythonPath from apache *.conf:一个二个一个一个1.下面是apache配置示例:(why虚拟主机:有一个apache的行为(奇怪或错误)...如果没有一个虚拟主机名匹配请求,那么apache会自动将请求发送到配置文件中的第一个vhost--不管那里定义了哪个服务器名。这可能会导致混乱,因为调用了完全错误的应用程序,并且肯定会从django内部弹出错误消息,并不表示错误发生在Apache配置级别上。一个带有简单index.html和错误消息的虚拟主机可以使此问题透明化)httpd-vhost.conf:
<VirtualHost *:80> ServerName Dumme_Host DocumentRoot "d:/WEBSPACES/Dummy_Host" <Directory d:/WEBSPACES/Dummy_Host> Require all granted </Directory> </VirtualHost> <VirtualHost *:80> ServerName xxxx1 WSGIScriptAlias / "d:/.... /wsgi.py" application-group=app_name1 Alias /media/ d:/.../media/ Alias /static/ d:/.../static/ <Directory d:/.../app_name1> Require all granted </Directory> <Directory d:/.../media> Require all granted </Directory> <Directory d:/.../static> Require all granted </Directory> </VirtualHost> <VirtualHost *:80> ServerName xxxx2 WSGIScriptAlias / "d:/.... /wsgi.py" application-group=app_name2 Alias /media/ d:/.../media/ Alias /static/ d:/.../static/ <Directory d:/.../app_name2> Require all granted </Directory> ..... </VirtualHost>
1条答案
按热度按时间q1qsirdb1#
使用虚拟主机(vhosts)可以在Apache上托管多个django应用
重要关注事项:
1.在配置Apache期间,我建议从命令行以"httpd.exe"启动Apache,因为在XAMPP或WAMP中,您不会在error.log文件中看到一些初始启动错误消息。
1.你可以只使用1 python版本甚至在不同virt.env为每个vhost作为apache模块mod_wsgi编译需要到fit到它并且是装载一次在apache的启动
类似于httpd.conf中内容(由于您运行的是单个应用程序配置,因此应该已经有了这些内容):
1.如何设置virt.env和app文件夹路径:
对于1个主机,您可以通过设置WSGIPythonHome和WSGIPythonPath指向httpd.conf中的应用程序文件夹来指向virt.env:
但是:您不能将WSGIPythonHome/WSGIPythonPath放在httpd-vhosts. conf中的虚拟主机声明内....这将导致错误消息
解决方案:在www.example.com中动态设置路径,并从apache *. conf中删除WSGIPythonHome/WSGIPythonPath:wsgi.py dynamically and remove WSGIPythonHome/WSGIPythonPath from apache *.conf:
一个二个一个一个
1.下面是apache配置示例:
(why虚拟主机:有一个apache的行为(奇怪或错误)...如果没有一个虚拟主机名匹配请求,那么apache会自动将请求发送到配置文件中的第一个vhost--不管那里定义了哪个服务器名。这可能会导致混乱,因为调用了完全错误的应用程序,并且肯定会从django内部弹出错误消息,并不表示错误发生在Apache配置级别上。一个带有简单index.html和错误消息的虚拟主机可以使此问题透明化)
httpd-vhost.conf: