我想在 Apache2 服务器上运行多个 Django 项目。因此,如果我输入我的 URL:
localhost/OpenGMS
我的OpenGMS
项目将在 apache2 服务器中运行,如果我输入以下 URL:
localhost/my_other_site
我的其他项目将在 apache2 服务器中运行。
为此,我配置了/etc/apache2/sites-available/000-default.conf
。它看起来像这样:
<VirtualHost *:80>
ServerName OpenGMS.org
ServerAlias www.OpenGMS.org
ServerAdmin [email protected]
DocumentRoot /var/www/OpenGMS
WSGIScriptAlias / /var/www/OpenGMS/OpenGMS/wsgi.py
ErrorLog /var/www/logs/error.log
CustomLog /var/www/logs/custom.log combined
</VirtualHost>
并配置了/etc/apache2/apache2.conf
。我在文件末尾添加了一行。该行是
WSGIPythonPath /var/www/OpenGMS
我发现一个与此相关的问题这里. 它说
另一种方法需要做更多工作,但也有其他好处,即切换到使用 mod_wsgi 的守护进程模式来运行 Django 实例,并将每个实例委托给一组单独的进程。通过在单独的进程中运行 Django 实例,环境变量不可能从一个实例泄漏到另一个实例。
WSGIDaemonProcess project-2 WSGIScriptAlias /suburl
> /some/path/project-2/wsgi.py process-group=project-2
WSGIDaemonProcess project-1 WSGIScriptAlias /
> /some/path/project-1/wsgi.py process-group=project-1
然后我再次配置/etc/apache2/sites-available/000-default.conf
。它看起来像这样:
<VirtualHost *:80>
ServerName OpenGMS.org
ServerAlias www.OpenGMS.org
ServerAdmin [email protected]
DocumentRoot /var/www/OpenGMS
WSGIDaemonProcess my_other_site
WSGIScriptAlias /my_other_site /var/www/my_other_site/my_other_site/wsgi.py process-group=my_other_site
WSGIDaemonProcess OpenGMS
WSGIScriptAlias / /var/www/OpenGMS/OpenGMS/wsgi.py process-group=OpenGMS
ErrorLog /var/www/logs/error.log
CustomLog /var/www/logs/custom.log combined
</VirtualHost>
但是我没有配置该/etc/apache2/apache2.conf
文件。
现在,当我运行localhost/OpenGMS
或/和时localhost/my_other_site
,我收到内部服务器错误 500。
发生错误是因为我/etc/apache2/apache2.conf
在添加新站点后没有编辑/etc/apache2/sites-available/000-default.conf
,还是我做错了其他事情或者我不知道?
答案1
一个可能的解决方案是使用 /etc/hosts 文件中的条目。然后,您可以使用不同的名称引用 localhost,然后拥有不同的虚拟主机条目。
例如:
127.0.0.1 localhost host1 host2 host3 host4
您现在可以通过任何其他名称来引用 localhost
http://host1/
http://主机2/
然后为每个虚拟主机设置一个
<VirtualHost *:80>
ServerName host1
...
<VirtualHost *:80>
ServerName host2