我已经按照django文档中的说明设置了一个django网站:https://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/
现在我想在同一台服务器上运行另一个版本的站点(不同的源目录,不同的数据库)。有活跃用户和使用应用#1的灵活应用,所以我想保持应用#1访问不变。我甚至不会更改urls.py甚至是app#2。
我在考虑app#2的不同端口
例如
http://192.168.1.1/load_book/123/将从应用#1加载图书
http://192.168.1.1:444/load_book/123/将从应用#2
我是Apache和WSGI的完全菜鸟......如何设置它?
答案 0 :(得分:3)
他们有相同的网址是什么意思?可能是相同的主机名吗?
假设您有2个应用:
这些都可以是由WSGI提供的Django应用程序,位于同一个Apache实例上。使用apache conf中的Directory
或Location
指令指定.wsgi
加载程序文件,如上面链接的django文档中所述:
<Location /your_app>
WSGIScriptAlias /your_app /path/to/mysite/apache/your_app/django.wsgi
...
</Location>
<Location /my_app>
WSGIScriptAlias /my_app /path/to/mysite/apache/my_app/django.wsgi
...
</Location>
唯一真正的问题是,您需要告诉your_app
和my_app
它们不再位于主机的文档根目录中。为此,请向base_url
添加settings.py
参数,并使用此参数为urls.py
中的所有条目添加前缀。这将确保当请求通过Apache时,您的python应用程序可以相应地路由它。
有关如何完成此操作的简单示例,请查看Django应用程序Bookworm的代码。
答案 1 :(得分:2)
您可以将wsgi应用程序附加到同一域下的不同子路径。如果你这样做,Django内部视图的路径仍然是相同的。您不必修改urls.py.在以下示例中,Django会将/site1
视为project1
的根。
查看http://code.google.com/p/modwsgi/wiki/InstallationInstructions以获取有关mod_wsgi的文档。
<VirtualHost *:80>
ServerName www.example.com
WSGIDaemonProcess example
WSGIProcessGroup example
WSGIScriptAlias /site1 /home/django/project1/deploy/wsgi.py
<Directory /home/django/project1/deploy>
Order deny,allow
Allow from all
</Directory>
WSGIScriptAlias /site2 /home/django/project2/deploy/wsgi.py
<Directory /home/django/project2/deploy>
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
现在,这两个站点将使用不同的python子解释器在同一个守护进程中运行。