在多个 Apache 虚拟主机上提供一个 Django 应用程序
Serve one Django app on several Apache Virtualhosts
我们有一个由 Apache (mod-wsgi) 提供的 Django 应用程序,配置如下:
<VirtualHost vhost:80>
# ...
WSGIScriptAlias / /path/to/wsgi.py
</VirtualHost>
我们希望将单个应用程序提供给 2 个虚拟主机:vhost:80
和 vhost:443
... 客户端迁移所需的时间,最后只将其保留在 https 虚拟主机上。
是否可以将指令 WSGIScriptAlias / /path/to/wsgi.py
复制到第二个虚拟主机 (vhost:443
) 中,或者我们是否会遇到问题 运行 两次相同的应用程序和相同的数据库?
首先,您要确保您使用的是 mod_wsgi 的守护程序模式,而不是嵌入式模式。无论哪种方式,如果正在使用多进程配置,您将已经有多个应用程序实例访问同一个数据库。这通常不是问题。为 SSL 添加虚拟主机时,问题是进程数加倍。这就是守护进程模式的用武之地。典型的配置是:
<VirtualHost *:80>
ServerName sitename.example.com
# Define a daemon process group.
WSGIDaemonProcess sitename
# Specify WSGI application and delegate to daemon process group.
# As delegating here, don't need WSGIProcessGroup/WSGIApplicationGroup.
WSGIScriptAlias / /path/to/wsgi.py process-group=sitename application-group=%{GLOBAL}
# ... access control directives
</VirtualHost>
<VirtualHost *:443>
ServerName sitename.example.com
# ... SSL options
# Specify WSGI application and delegate to daemon process group.
# As delegating here, don't need WSGIProcessGroup/WSGIApplicationGroup.
#
# Note that we did not define a daemon process group in this virtual
# host. Instead we rely on fact that can reach across and use daemon
# process group defined in virtual host for port 80. This is possible
# as value of ServerName is the same.
WSGIScriptAlias / /path/to/wsgi.py process-group=sitename application-group=%{GLOBAL}
# ... access control directives
</VirtualHost>
如果需要调整容量和性能,请将 process=nnn
和 threads=nnn
选项添加到 WSGIDaemonProcess
。还要确保修改您可能想要在守护进程组上设置的超时选项。
我们有一个由 Apache (mod-wsgi) 提供的 Django 应用程序,配置如下:
<VirtualHost vhost:80>
# ...
WSGIScriptAlias / /path/to/wsgi.py
</VirtualHost>
我们希望将单个应用程序提供给 2 个虚拟主机:vhost:80
和 vhost:443
... 客户端迁移所需的时间,最后只将其保留在 https 虚拟主机上。
是否可以将指令 WSGIScriptAlias / /path/to/wsgi.py
复制到第二个虚拟主机 (vhost:443
) 中,或者我们是否会遇到问题 运行 两次相同的应用程序和相同的数据库?
首先,您要确保您使用的是 mod_wsgi 的守护程序模式,而不是嵌入式模式。无论哪种方式,如果正在使用多进程配置,您将已经有多个应用程序实例访问同一个数据库。这通常不是问题。为 SSL 添加虚拟主机时,问题是进程数加倍。这就是守护进程模式的用武之地。典型的配置是:
<VirtualHost *:80>
ServerName sitename.example.com
# Define a daemon process group.
WSGIDaemonProcess sitename
# Specify WSGI application and delegate to daemon process group.
# As delegating here, don't need WSGIProcessGroup/WSGIApplicationGroup.
WSGIScriptAlias / /path/to/wsgi.py process-group=sitename application-group=%{GLOBAL}
# ... access control directives
</VirtualHost>
<VirtualHost *:443>
ServerName sitename.example.com
# ... SSL options
# Specify WSGI application and delegate to daemon process group.
# As delegating here, don't need WSGIProcessGroup/WSGIApplicationGroup.
#
# Note that we did not define a daemon process group in this virtual
# host. Instead we rely on fact that can reach across and use daemon
# process group defined in virtual host for port 80. This is possible
# as value of ServerName is the same.
WSGIScriptAlias / /path/to/wsgi.py process-group=sitename application-group=%{GLOBAL}
# ... access control directives
</VirtualHost>
如果需要调整容量和性能,请将 process=nnn
和 threads=nnn
选项添加到 WSGIDaemonProcess
。还要确保修改您可能想要在守护进程组上设置的超时选项。