【发布时间】:2012-02-24 21:00:40
【问题描述】:
我用 mod_wsgi 设置了 Trac,一切似乎都很好,只是我无法访问这些项目。登录后我可以成功看到项目列表,但是如果我尝试单击任何项目,Trac 将无限期挂起。
如果我在端口 80 上运行相同的 apache 设置,则一切正常。但是我不希望它通过端口 80。我还生成了我自己的证书,我正在使用它。我无法发现我的设置有什么问题?
以下是我采取的一般步骤:
cd /etc/apache2/sites-available
vi default-ssl
a2ensite default-ssl
/etc/init.d/apache2 restart
转到 https://www.myserver.com/trac 会显示我的 trac 项目列表。
单击其中任何一个都会导致 trac 挂起。即,https://www.myserver.com/trac/project1 挂起。
站点可用/默认 SSL:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
# Trac settings
WSGIScriptAlias /trac /var/lib/trac/apache/trac.wsgi
<Directory /var/lib/trac/apache>
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
# Trac authentication stuff
<Location /trac>
AuthName "Trac login"
AuthType Basic
AuthUserFile /var/lib/trac/.htpasswd
require valid-user
</Location>
# Trac mod_rewrite rules
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteLog "/var/lib/trac/logs/rewrite.log"
RewriteLogLevel 9
# Don't let DirectoryIndex mess with Trac installed in the root
RewriteCond %{REQUEST_URI} ^/$
RewriteRule . /trac [QSA,PT,L]
# Don't let Trac handle existing directories, files or aliases
RewriteCond /var/lib/trac%{REQUEST_FILENAME} !-d
RewriteCond /var/lib/trac%{REQUEST_FILENAME} !-f
# prepend /trac to URI and append Query String, Pass-Through to xxxAlias directives, Last rule.
RewriteRule ^(.*)$ /trac$1 [QSA,PT,L]
</IfModule>
....
</VirtualHost>
</IfModule>
使用 http 测试 trac 效果很好:
httpd.conf:
WSGIScriptAlias /trac /var/lib/trac/apache/trac.wsgi
<Directory /var/lib/trac/apache>
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
<Location /trac>
AuthType Basic
AuthName "Trac login"
AuthUserFile /var/lib/trac/.htpasswd
Require valid-user
</Location>
【问题讨论】: