从单个Python Web框架运行多个站点

Sea*_*ean 4 python frameworks

从单个常见的Python Web框架(即:Pylons,TurboGears等)运行多个站点的好方法(或至少是聪明的)是什么?我知道你可以根据域或路径进行重定向,重写URI以指向特定于站点的位置,我也看到了一些if site == 'site1' / elseif / elseif / etc我想避免的野蛮" .

Jim*_*Jim 8

Django内置了这个.请参阅站点框架.

作为一种通用技术,在数据库模式中包含一个"主机"列,该列附加到您希望特定于主机的数据,然后Host在检索数据时在查询中包含HTTP标头.


Gab*_*oss 6

使用带有mod_python的apache上的Django,我只需使用以下apache配置即可托管多个(不相关的)django站点:

<VirtualHost 1.2.3.4>
        DocumentRoot /www/site1
        ServerName site1.com
        <Location />
                SetHandler python-program
                SetEnv DJANGO_SETTINGS_MODULE site1.settings
                PythonPath "['/www'] + sys.path"
                PythonDebug On
                PythonInterpreter site1
        </Location>
</VirtualHost>

<VirtualHost 1.2.3.4>
        DocumentRoot /www/site2
        ServerName site2.com
        <Location />
                SetHandler python-program
                SetEnv DJANGO_SETTINGS_MODULE site2.settings
                PythonPath "['/www'] + sys.path"
                PythonDebug On
                PythonInterpreter site2
        </Location>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

不需要多个apache实例或代理服务器.为每个站点使用不同的PythonInterpreter指令(您输入的名称是任意的)使命名空间保持独立.