Как настроить Apache для запуска панели инструментов CruiseControl.NET с помощью mod_aspdotnet
Я установил CruiseControl.NET и VisualSVN Server на моем сервере разработки. Вместо того, чтобы запускать CruiseControl.NET Web Dashboard из IIS, я бы хотел запустить его на Apache, который устанавливает VisualSVN Sever. Я наткнулся на этот вопрос на Stackru, и он очень помог.
У меня есть следующий конфиг в файле http-custom.conf в папке "C:\Program Files\VisualSVN Server\conf".
LoadModule aspdotnet_module bin/mod_aspdotnet.so
AddHandler asp.net asax ascx ashx asmx aspx axd config cs csproj licx rem resources resx soap vb vbproj vsdisco webinfo
<IfModule mod_aspdotnet.cpp>
AspNetMount /ccnet "C:/Program Files/CruiseControl.NET/webdashboard"
AliasMatch /ccnet/(.*\.aspx.*) "C:/Program Files/CruiseControl.NET/webdashboard/default.aspx"
Alias /ccnet/ "C:/Program Files/CruiseControl.NET/webdashboard/"
<Directory "C:/Program Files/CruiseControl.NET/webdashboard">
Options FollowSymlinks ExecCGI
# Order allow,deny
# Allow from all
DirectoryIndex default.aspx
</Directory>
AliasMatch /aspnet_client/system_web/(\d+)_(\d+)_(\d+)_(\d+)/(.*) "C:/Windows/Microsoft.NET/Framework/v$1.$2.$3/ASP.NETClientFiles/$4"
<Directory "C:/Windows/Microsoft.NET/Framework/v*/ASP.NETClientFiles">
Options FollowSymlinks
# Order allow,deny
# Allow from all
</Directory>
</IfModule>
Это работает нормально, за исключением того, что http://localhost/ccnet (обратите внимание на отсутствующую косую черту) не вызывает инструментальную панель CruiseControl.NET, а http://localhost/ccnet/ -.
Кроме того, мне пришлось закомментировать директивы Order и Allow в двух разделах Справочника. Служба VisualSVN не запускается, если я раскомментирую любую из этих 4 закомментированных директив.
Что с этим?
VisualSVN Server.exe (в действительности это httpd.exe) сообщает номер версии как 2.2.13.0, а mod_aspdotnet.so сообщает номер версии как 2.2.0.2006.
2 ответа
1/ Убедитесь, что вы используете последний мод. Его имя mod_aspdotnet-2.2.0.2006-setup-r2.msi
2/ Измените строку AliasMatch следующим образом
AliasMatch "^/(?i)aspnet_client/system_web/(\d+)_(\d+)_(\d+)_(\d+)/(.*)" \
"C:/Windows/Microsoft.NET/Framework/v$1.$2.$3/ASP.NETClientFiles/$4"
3/ Добавьте эту строку после Options FollowSymlinks ExecCGI
в разделе каталога вашей веб-панели
AspNet files
4/ Добавить Win32DisableAcceptEx on
линия... я помню, что одна машина включала его... но это было только на Xp, но не Server2003 или другой редакции.
Плохо использовать mod_aspdotnet, поскольку он не поддерживается три года и содержит некоторые критические ошибки. Еще одна плохая вещь: mod_aspdotnet скомпилирован с другими настройками и может быть несовместим с двоичными файлами VisualSVN Server.
Я рекомендую вам запустить CruiseControl.NET на IIS, а затем перевернуть запросы прокси-сервера с сервера VisualSVN на IIS. Все необходимые модули уже доступны в дистрибутиве VisualSVN Server. Просто добавьте следующие строки в ваш httpd-custom.conf (при условии, что вы используете IIS на порту 8080)
LoadModule proxy_module bin/mod_proxy.so
LoadModule proxy_http_module bin/mod_proxy_http.so
ProxyPass /ccnet http://localhost:8080/ccnet
ProxyPassReverse /ccnet http://localhost:8080/ccnet