我是一名开发人员,而不是系统管理员:)我一直在不同的端口上并行运行多个虚拟主机,但这次有些东西干扰了。
我有一个 vhost,它运行基于 python 的 django web 应用程序,该应用程序使用 wsgi。另一个是普通的 php 应用程序。它们需要交互,我正在测试它。每个配置都在不同的文件中(基于 ubuntu)。
php应用程序:
<VirtualHost *:8778>
ServerAdmin webmaster@localhost
ServerName lochost.localdomain
DocumentRoot /home/projects/df/htdocs
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/projects/df/htdocs>
Options Indexes FollowSymLinks MultiViews
#AllowOverride None
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
python/django应用程序:
WSGIScriptAlias / /home/projects/dfp/wsgi/wsgi.py
WSGIPythonPath /home/projects/dfp/newapp
<VirtualHost *:9988>
ServerAdmin webmaster@localhost
ServerName localhost.local
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]
RewriteCond /home/projects/dfp/etc/httpd/maintenance-mode-on -f
RewriteCond %{REQUEST_URI} !^/media/.*$
RewriteRule ^.* /media/maintenance.html [L,PT]
Alias /media /home/projects/dfp/newapp/media
<Directory /home/projects/dfp/newapp/media>
Allow from all
AllowOverride All
Order allow,deny
</Directory>
<Location "/media">
SetHandler None
#ExpiresActive on
#ExpiresDefault "access plus 1 week"
FileETag MTime Size
EnableSendfile Off
</Location>
Alias /adminmedia /home/projects/dfp/administrative/media
<Directory /home/projects/dfp/administrative/media/>
Allow from all
AllowOverride All
Order allow,deny
</Directory>
<Location "/adminmedia">
SetHandler None
#ExpiresActive on
#ExpiresDefault "access plus 1 week"
FileETag MTime Size
</Location>
<Directory /home/projects/dfp/newapp>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
</VirtualHost>
由于这个配置,当我转到 python 应用程序(localhost:9988)时一切正常,但访问 php 应用程序(localhost:8778)时,我被重定向到另一个应用程序以获取内容,虽然它没有出现 css,但地址栏仍然显示 localhost:8778。
哪里出了问题?我怀疑是WSGIScriptAlias / /home/projects/dfp/wsgi/wsgi.py
Python 应用程序配置顶部的指令导致了混乱。无论如何,我可以让两个应用程序并行运行,同时仍然使用 WSGI?谢谢
答案1
根据评论,将答案正式化:
只需将 WSGI 指令放置在 django 应用程序 VirtualHost 定义内。