我一直在尝试在一台服务器上配置两个单独的 Django 应用程序,以便可以通过不同的 URL 访问它们......使用下面的配置,我可以访问第一个应用程序,但我不知道如何包括第二个应用程序的设置。管理媒体也根本没有加载
NameVirtualHost *:8032
服务器名称本地主机 ServerAdmin webmaster@example.com
DocumentRoot "/usr/local/www/djcode/test"
<Directory "/usr/local/www/djcode/test">
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>
Alias /site_media "/usr/local/www/djcode/test/site_media/"
Alias /media "/usr/local/www/djcode/test/site_media/media/"
WSGIDaemonProcess test user=www group=www processes=2 threads=5
WSGIProcessGroup test
AddHandler wsgi-script .wsgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /test.wsgi/$1 [QSA,L]
服务器名称本地主机 服务器别名本地主机 DocumentRoot "/usr/local/www/apache22/data"
最佳答案
在/etc/apache2/sites-available 文件夹中制作两个配置文件。根据您的站点给它们适当的逻辑名称(例如 example1.com 、 example12.com 等)。使用 a2ensite 命令启用它们并重新启动您的 apache 服务器。
你的每个配置文件应该看起来像这样:
<Virtualhost *:8032>
ServerName localhost
ServerAdmin webmaster@example.com
DocumentRoot "/usr/local/www/djcode/test"
<Directory "/usr/local/www/djcode/test">
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>
Alias /site_media "/usr/local/www/djcode/test/site_media/"
Alias /media "/usr/local/www/djcode/test/site_media/media/"
WSGIDaemonProcess test user=www group=www processes=2 threads=5
WSGIProcessGroup test
AddHandler wsgi-script .wsgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /test.wsgi/$1 [QSA,L]
</Virtualhost *:8032>
您还需要添加一些指令来提供静态内容。从 apache 提供静态内容会产生开销,因此最好使用一些轻量级 Web 服务器(例如 Lighttpd 或 Nginx)来提供它,并使用反向代理连接到 apache 以提供基于 django 的内容。 Here's a tutorial on using NginX
由于您使用的是 mod_wsgi,因此您也可以以不同的用户身份运行每个站点,这样他们中的两个就不会访问彼此的数据。如果这两个站点属于不同的利益相关者,这将很有用。
关于django - 在一台服务器上设置多个 Django 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1138827/