Я установил Subversion как модуль Apache, он настроен и отлично работает. Единственная проблема в том, что я получаю все данные SVN (например, PROPFIND, OPTIONS и т. Д.) В том же файле .LOG, что и при обычном доступе к сети. Я пытаюсь понять, как заставить модуль SVN сообщать в настраиваемый файл журнала.
Вот часть моего файла конфигурации Apache, который загружает модуль SVN. Я попытался сделать это с помощью директивы CustomLog (как показано внизу), но это не сработало.
################################################
#Subversion modules
LoadModule dav_svn_module "C:/SVN/bin/mod_dav_svn.so"
LoadModule authz_svn_module "C:/SVN/bin/mod_authz_svn.so"
# Configure Subversion repository
# This configures Apache so that all your Subversion repositories
# are available at http://myserver/svn/[repositoryName]
# The access is restricted to known users/passwords.
<Location /svn/>
DAV svn
SVNIndexXSLT "/svnindex.xsl"
SVNParentPath "C:/SVNRep/Repository/"
SVNListParentPath on
# SVNPath "C:/SVNRep/Repository/" #for single repository
SVNPathAuthz off
# SVNMasterURI http://localhost/svn/ #for write-through proxying
AuthType Basic
AuthName "My Subversion repositories"
AuthUserFile "C:/SVNRep/passwd"
Require valid-user
AuthzSVNAccessFile "C:/SVNRep/acl"
</Location>
CustomLog "C:/Logs/Apache/SVN.log" "%t %u %{SVN-ACTION}e" env=SVN-ACTION
################################################
Любые идеи?
Спасибо много.
Ну я разобрался. После долгих поисков (в результате которых было обнаружено, что несколько человек спрашивают то же самое, но не так много, как я ожидал), я пришел к решению по интуиции. Во время просмотра шоу во время рекламы я задумался о том, что нужно сделать, чтобы полностью отделить Subversion от веб-сервера (как и для отдельного сервера в целом). Затем я задумался, почему записи Subversion наводняли журналы веб-сервера, а другие мои VirtualHosts - нет (они использовали свои собственные журналы по желанию). Затем меня осенило: у меня на главном веб-сервере настроен SVN, а не виртуальный хост! Вот и ответ.
Чтобы Subversion записывала журнал в свой собственный файл журнала и не наводняла основной файл журнала Apache, просто поместите директивы SVN (например, Location…) в отдельный выделенный виртуальный хост.
Таким образом, я могу подключиться к виртуальному хосту SVN с помощью клиента SVN, а также к веб сервер с веб-браузер. Ага. :) Так просто; Никаких хаков, никаких обходных путей, ничего. Любопытно, почему размещение SVN-местоположения на виртуальном хосте не встречается во многих примерах - я видел это только один! из пары десятков примеров.
(Конечно, основные файлы журнала по-прежнему будут содержать записи OPTIONS, PROPFIND и т. Д., Если вы попытаетесь подключиться к нему с помощью клиента SVN, но это правильное поведение.)
Вот пример:
<VirtualHost 127.200.200.200:80>
<Directory "C:/Subversion/Repositories/">
Options Indexes Includes
Order Deny,Allow
Allow from all
</Directory>
ServerName svn
ServerAdmin svn@blah.com
DocumentRoot "C:/Subversion/Repositories/"
ErrorLog "C:/Logs/SVN/error.log"
CustomLog "C:/Logs/SVN/access.log" common
CustomLog "C:/Logs/SVN/referer.log" referer
CustomLog "C:/Logs/SVN/agent.log" agent
LoadModule dav_svn_module "C:/SVN/bin/mod_dav_svn.so"
LoadModule authz_svn_module "C:/SVN/bin/mod_authz_svn.so"
<Location /svn/>
DAV svn
SVNParentPath "C:/Subversion/"
SVNListParentPath on
SVNPathAuthz off
AuthType Basic
AuthName "My Subversion Repositories"
AuthUserFile "C:/Subversion/passwd"
Require valid-user
AuthzSVNAccessFile "C:/Subversion/acl"
</Location>
</VirtualHost>
Вот и все. Теперь мне интересно, смогу ли я найти тех людей, которые задали этот вопрос ...
За исключением пути к журналу, отличного от * nix до Windows, у вас есть именно то, что я настроил и работает на разных серверах - возможно, SVN-ACTION не попадает в env в Windows? В качестве обходного пути вы можете попробовать:
SetEnvIf Request_URI "^/svn/*" mysvn
CustomLog "C:/Logs/Apache/SVN.log" combined env=mysvn
Очевидно, это будет не так удобно, как регистрация% {SVN-ACTION} e, но все запросы к / svn будут разделены в отдельный журнал.