我有多个django项目,我想将它们托管在同一个域下
例如:example.com/one<br>
example.com/two
我搜索了各种解决方案,并找到了下面的链接,这些链接对我有很大帮助。 Is it possible to host multiple django projects under the same domain?
从上面的阅读中,我知道我需要为此mod_wsgi
,但是我很困惑mod_wsgi
的安装位置-我是否需要在每个项目文件夹下安装(每个文件夹都分开myenv),或者只能安装一次。
请帮助我了解如何安装此mod_wsgi
的方式和位置,以及最后如何在同一域名下托管多个项目。
答案 0 :(得分:0)
我会告诉您我们在项目中的工作方式。我们有一个带有不同路由的Django项目。例如/players
,/tablet
。我们将项目托管在两个Docker容器中。我们将NGINX作为我们的反向代理。 NGINX根据路由将请求重定向到适当的容器。 NGINX暴露于世界。但是,我不确定它是否对您有用。
答案 1 :(得分:0)
安装mod_wsgi
取决于您的主机操作系统。检查说明。如果您使用的是CentOS或RedHat,建议您查看IUS社区。它们为存储库提供了适用于Python 3.6和mod_wsgi
的yum可安装软件包。您安装的mod_wsgi
版本必须与您在虚拟环境中运行的Python版本进行编译。
然后,您需要正确配置VirtualHost
。如果您的主机是根主机,则它必须位于定义的最后。这是一个示例:
<VirtualHost *:443>
TimeOut 300
SSLEngine On
ServerName mysite.example.com
# Set to the lobal Application Group
WSGIApplicationGroup %{GLOBAL}
# Pass Authorizations through to the WSGI app for Django REST Framework Token Auth
WSGIPassAuthorization On
WSGIDaemonProcess subsite-develop-https python-home=/web/subsite-develop/venv request-timeout=300 user=apache group=apache
WSGIProcessGroup subsite-develop-https
WSGIScriptAlias /subsite /web/subsite-develop/config/wsgi.py process-group=subsite-develop-https
<Directory /web/subsite-develop/config>
Require all granted
</Directory>
Alias /subsite/static/ /web/subsite-develop/static/
<Directory /web/subsite-develop/static>
Header always set Access-Control-Allow-Origin "*"
Require all granted
</Directory>
WSGIDaemonProcess django-mysite-develop-https python-home=/web/django-mysite-develop/venv request-timeout=300 user=apache group=apache
WSGIProcessGroup django-mysite-develop-https
WSGIScriptAlias / /web/django-mysite-develop/config/wsgi.py process-group=django-mysite-develop-https
<Directory /web/django-mysite-develop/config>
Require all granted
</Directory>
Alias /static/ /web/django-mysite-develop/static/
<Directory /web/django-mysite-develop/static>
Header always set Access-Control-Allow-Origin "*"
Require all granted
</Directory>
Alias /media/ /var/media/mysite-www/
<Directory /var/media/mysite-www>
Require all granted
</Directory>
</VirtualHost>
此示例将在/subsite/
托管一个站点,在根/
托管另一个站点。请注意,根站点排在最后。这也意味着您将无法在根项目中使用路由/subsite/
,因为Apache将通过WSGIScriptAlias
定义将其转移到。
这也适用于具有TLS的网站;您可能必须将443
切换为80
,如果您不使用TLS,请删除SSLEngine On
。 WSGIPassAuthorization
用于Django REST Framework令牌,您也可以将其删除,但我将其作为一个更完整的示例。当他们切换到Require all granted
语法时,这适用于Apache 2.4 +。
IUS社区,如果在RedHat / CentOS上:https://ius.io/