我有多个django项目,我想把它们托管在同一个域名下,例如:example.com/one<br>``example.com/one<br>
我已经搜索了各种解决方案,并找到了下面给出的链接,这对我帮助很大。Is it possible to host multiple django projects under the same domain?
从上面的阅读,我知道我需要这个mod_wsgi
,但我很困惑,在哪里安装这个mod_wsgi
-我需要安装在每个项目文件夹下(每个myenv分开)或它应该只安装一次。请帮助我在如何和在哪里安装这个mod_wsgi
,最后如何在同一域名下托管多个项目。
另一个用户尝试了一些代码,但遇到了相同的问题,但也无法正常工作
<VirtualHost *:80>
ServerAdmin admin@my_domain.com
ServerName my_domain.com
ServerAlias www.my_domain.com
DocumentRoot /var/www/my_domain.com
ErrorLog ${APACHE_LOG_DIR}/my_domain.com_error.log
CustomLog ${APACHE_LOG_DIR}/my_domain.com_access.log combined
# site_1
Alias /site_1_project/static /var/www/my_domain.com/site_1_project/static
<Directory /var/www/my_domain.com/site_1_project/static>
Require all granted
</Directory>
Alias /site_1_project/media /var/www/my_domain.com/site_1_project/media
<Directory /var/www/my_domain.com/site_1_project/media>
Require all granted
</Directory>
<Directory /var/www/my_domain.com/site_1_project/site_1_project>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess site_1_project python-path=/var/www/my_domain.com/site_1_project python-home=/var/www/my_domain.com/site_1_project/django_env_site_1
WSGIProcessGroup site_1_project
WSGIScriptAlias /site_1_project/ /var/www/my_domain.com/site_1_project/site_1_project/wsgi.py
# site_2
Alias /site_2_project/static /var/www/my_domain.com/site_2_project/static
<Directory /var/www/my_domain.com/site_2_project/static>
Require all granted
</Directory>
Alias /site_2_project/media /var/www/my_domain.com/site_2_project/media
<Directory /var/www/my_domain.com/site_2_project/media>
Require all granted
</Directory>
<Directory /var/www/my_domain.com/site_2_project/site_2_project>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess site_2_project python-path=/var/www/my_domain.com/site_2_project python-home=/var/www/my_domain.com/site_2_project/django_env_site_2
WSGIProcessGroup site_2_project
WSGIScriptAlias /site_2_project/ /var/www/my_domain.com/site_2_project/site_2_project/wsgi.py
#RewriteEngine on
#RewriteCond %{SERVER_NAME} =my_domain.com [OR]
#RewriteCond %{SERVER_NAME} =www.my_domain.com
#RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
2条答案
按热度按时间jobtbby31#
mod_wsgi
的安装取决于你的主机操作系统。查看说明。如果你使用的是CentOS或RedHat,我建议你看看IUS Community;它们提供了一个包含Python 3.6和mod_wsgi
的yum可安装包的存储库。您安装的mod_wsgi
版本必须根据您在虚拟环境中运行的Python版本进行编译。然后你需要正确地配置你的
VirtualHost
。如果你有一个主机在根目录,它必须在你的定义中排在最后。下面是一个例子:这个例子将在
/subsite/
和根/
分别托管一个站点。注意根站点最后出现。这也意味着你不能在根项目中使用路由/subsite/
,因为Apache会通过WSGIScriptAlias
定义将其转移到。这也适用于具有TLS的站点;你可能需要把
443
转换成80
,如果你不使用TLS的话,还需要删除SSLEngine On
。WSGIPassAuthorization
是Django REST框架的标记,你也可以删除它,但是我把它留给了一个更完整的例子。这是Apache 2.4+的语法,当他们转换到Require all granted
的时候。IUS社区(如果在RedHat/CentOS上):https://ius.io/
igetnqfo2#
我会告诉你我们在项目中是如何做的。我们有一个单独的Django项目,有不同的路由。例如
/players
,/tablet
。我们在两个Docker容器中托管我们的项目。我们有NGINX作为我们的反向代理。NGINX根据路由将请求重定向到适当的容器。NGINX是公开的。但是,我不确定它对你是否有用。