2012-08-28 65 views
2

如何在多个域上提供多个Django应用程序?一个服务器上的多个Django应用程序

例如,我有

djangoapp1.com和djangoapp2.com

然后我在两个不同的位置

两个单独的应用程序

/SRV /网络/ djangoapp1 /SRV /网络/ 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

回答

1

你可以在这里采取很多方法,而且没有简单的答案 - 这取决于你的要求和限制。

可能工作的最简单的事情很可能是@Hedde提出的方法 - 定义虚拟主机内每个站点的WSGI配置。

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

这涉及到一个更复杂的服务器环境来管理,但给你的能够单独管理你的应用程序的优势。

您可以一次对一个应用程序重新配置可用的工作人员,升级应用程序版本,对settings.py等进行更改,而无需重新启动单个单片进程。另外,尽管在同一个Apache进程中监视虚拟主机比监视单独的应用服务器实例更为复杂。

因人而异

0

请参阅如果这是在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 
有用

相关问题