将Django站点放在另一个Django si的子目录中

2024-04-16 09:54:27 发布

您现在位置:Python中文网/ 问答频道 /正文

该站点在本地主机上运行良好,但当我转到localhost/site2时,它只为根Django站点加载404页面。在

<VirtualHost *:80>
        ServerName localhost
        #site1.com
        #ServerAlias www.site1.com
        ErrorLog /var/www/virtualenv-2.7/django-error-log
        Alias /static/ /var/www/virtualenv-2.7/site1/mainapp/static/
        Alias /media/   /var/www/virtualenv-2.7/site1/media/
        WSGIDaemonProcess site1 python-path=/var/www/virtualenv-2.7/site1:/var/www/virtualenv-2.7/lib/python2.7/site-packages
        WSGIProcessGroup site1
        WSGIScriptAlias / /var/www/virtualenv-2.7/site1/site1/wsgi.py

        <Directory /var/www/virtualenv-2.7/site1>
                <Files wsgi.py>
                Allow from all
                </Files>
        </Directory>

        WSGIDaemonProcess site2 python-path=/var/www/virtualenv-2.7/site2:/var/www/virtualenv-2.7/lib/python2.7/site-packages
        WSGIProcessGroup site2
        WSGIScriptAlias /site2 /var/www/virtualenv-2.7/site2/site2/wsgi.py

        <Directory /var/www/virtualenv-2.7/site2>
                <Files wsgi.py>
                Allow from all
                </Files>
        </Directory>
</VirtualHost>

WSGISocketPrefix /var/run/wsgi
WSGIPythonPath /var/www/virtualenv-2.7/site1:var/www/virutalenv-2.7/lib/python2.7/site-packages:/var/www/virutalenv-2.7/site2:
WSGIPythonHome /var/www/virtualenv-2.7

Tags: pylocalhostwsgivirtualenv站点varlibpackages
2条回答

再想一想。您真正需要的是条件配置。在Apache2.4(sad,但在2.2中没有)中,可以使用<If>语句(docs here

所以你的配置将被转换成

<VirtualHost *:80>
        ServerName localhost
        #site1.com
        #ServerAlias www.site1.com
        ErrorLog /var/www/virtualenv-2.7/django-error-log




<If "%{QUERY_STRING} =~ ^/site1">
        Alias /static/ /var/www/virtualenv-2.7/site1/mainapp/static/
        Alias /media/   /var/www/virtualenv-2.7/site1/media/

        WSGIDaemonProcess site1 python-path=/var/www/virtualenv-2.7/site1:/var/www/virtualenv-2.7/lib/python2.7/site-packages
        WSGIProcessGroup site1
        WSGIScriptAlias / /var/www/virtualenv-2.7/site1/site1/wsgi.py

        <Directory /var/www/virtualenv-2.7/site1>
                <Files wsgi.py>
                Allow from all
                </Files>
        </Directory>
</If>
<Else>
        Alias /static/ /var/www/virtualenv-2.7/site2/mainapp/static/
        Alias /media/   /var/www/virtualenv-2.7/site2/media/

        WSGIDaemonProcess site2 python-path=/var/www/virtualenv-2.7/site2:/var/www/virtualenv-2.7/lib/python2.7/site-packages
        WSGIProcessGroup site2
        WSGIScriptAlias /site2 /var/www/virtualenv-2.7/site2/site2/wsgi.py

        <Directory /var/www/virtualenv-2.7/site2>
                <Files wsgi.py>
                Allow from all
                </Files>
        </Directory>
</Else>
</VirtualHost>

我没有用Apache2.4测试系统,所以可能会漏掉一些东西。在

不能在一个VirtualHost内运行两个站点或django应用程序。此配置有问题。在

您将需要两个不同的虚拟主机来执行此操作,如下所示:

<VirtualHost *:80>
        ServerName site1.com
        ServerAlias www.site1.com
        ErrorLog /var/www/virtualenv-2.7/django-error-log-from-site1

        Alias /static/ /var/www/virtualenv-2.7/site1/mainapp/static/
        Alias /media/   /var/www/virtualenv-2.7/site1/media/

        WSGIDaemonProcess site1 python-path=/var/www/virtualenv-2.7/site1:/var/www/virtualenv-2.7/lib/python2.7/site-packages
        WSGIProcessGroup site1
        WSGIScriptAlias / /var/www/virtualenv-2.7/site1/site1/wsgi.py

        <Directory /var/www/virtualenv-2.7/site1>
                <Files wsgi.py>
                Allow from all
                </Files>
        </Directory>
</VirtualHost>

<VirtualHost *:80>
        ServerName site2.com
        ServerAlias www.site2.com
        ErrorLog /var/www/virtualenv-2.7/django-error-log-from-site2

        Alias /static/ /var/www/virtualenv-2.7/site2/mainapp/static/
        Alias /media/   /var/www/virtualenv-2.7/site2/media/

        WSGIDaemonProcess site2 python-path=/var/www/virtualenv-2.7/site2:/var/www/virtualenv-2.7/lib/python2.7/site-packages
        WSGIProcessGroup site2
        WSGIScriptAlias /site2 /var/www/virtualenv-2.7/site2/site2/wsgi.py

        <Directory /var/www/virtualenv-2.7/site2>
                <Files wsgi.py>
                Allow from all
                </Files>
        </Directory>
</VirtualHost>

如果您要在本地系统上进行测试,那么根据您的操作系统,您可能需要执行以下配置来进行测试。在

  1. 在Windows中:C:\Windows\System32\Drivers\etc\hosts
  2. 在Linux/Mac中:/etc/hosts

在此文件中附加以下行:

^{pr2}$

如果您使用的是域名,那么让A Records指向所需的服务器IP。在

现在,当您在浏览器中打开site1.com时,首先将使用VH配置,site2.com也将使用VH配置作为URL。在

相关问题 更多 >