上的多个Django应用程序

2024-09-28 22:07:15 发布

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

如何在多个域上提供多个Django应用程序?

例如我有

djangoapp1.com和djangoapp2.com

然后我在两个不同的位置有两个独立的应用程序

/srv/www/djangoapp1 /srv/www/djangoapp2

我用mod_wsgi运行Apache2,目前在其httpd.conf中有以下内容

WSGIScriptAlias / /srv/www/app1/app1/wsgi.py
WSGIPythonPath /srv/www/app1

<Directory /srv/www/app1/system>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>

很明显,我还有虚拟主机,我得到了django默认安装页面,但现在我想提供我的第二个应用程序,有人能告诉我正确的方法吗?

Django五号:1.4.1


Tags: djangopycommod应用程序wsgiwwwfiles
3条回答

这里有很多方法,没有简单的答案——这取决于您的需求和约束。

最简单的可能工作方式是@Hedde建议的方法-在virtualhost中定义每个站点的WSGI配置。

第二种可能更灵活的方法是在它自己包含的应用服务器中运行每个Django应用程序,例如gunicorn(希望在virtualenv中隔离特定于应用程序的依赖关系),然后使用Apache甚至Nginx作为应用程序流量的代理。

这需要一个更复杂的服务器环境来管理,但它给了您能够单独管理应用程序的优势。

您可以一次为一个应用程序重新配置可用的工作线程、升级应用程序版本、更改settings.py等,而不必重新启动单个单片进程。

此外,尽管这是当然可能的,但是在同一个Apache进程中监视virtualhost要比单独监视单个应用服务器实例复杂得多。

YMMV公司

请看这是否有用

在apache2.conf或htppd.conf中

# Virtual hosts setup
NameVirtualHost *
<VirtualHost *>
    ServerName example1.com
    ............    
    WSGIScriptAlias / /..../path/to/wsgi1.py
</VirtualHost>

<VirtualHost *>
    ServerName example2.com
    ............    
    WSGIScriptAlias / /..../path/to/wsgi2.py
</VirtualHost>
in wsgi1.py

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings1' # or projectnaame.settings1
in wsgi2.py

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings2' # or projectname.settings2
In settings1.py & settings2.py you can make necessary databases and other configurations

您可以使用Apache的VirtualHosts

Django有很多例子,例如here

相关问题 更多 >