Svn

Apache 別名在瀏覽器中工作,但在嘗試通過 svn 客戶端訪問時不起作用

  • October 9, 2014

我遇到了一個讓我發瘋的問題。我從頭開始安裝了 ubuntu 14.04 機器,安裝了 LAMP 堆棧和顛覆。我創建了一個新文件夾 /var/www/svn 並導入了我的各種 SVN 轉儲。確保它們都在 svnserve.conf 文件中設置為可以通過 svn:// 訪問,並確保 passwd 文件中有一個使用者可以訪問它。我將自己和 www-data 使用者添加到該目錄,以確保它在 Internet 上可用。為了不打擾太多屬性,我使用以下命令啟動了 svnserve svnserve -d

然後我繼續在我的 000-default.conf 添加一個 alias Alias /svn /var/www/svn,重新啟動 apache2 服務,它在瀏覽器中就像一個魅力。

現在對於我的實際問題,當我嘗試使用 tortoisesvn 訪問 repo 時,我收到錯誤消息,即該位置沒有 svn。在花了很長時間研究之後,我看到有人提到他在使用“完整”路徑時能夠訪問它。所以我嘗試了以下方法svn://mydomain.com/var/www/svn,它有效……

由於別名在瀏覽器中有效,但在 SVN 客戶端中無效,我完全驚呆了。

有任何想法嗎?


總結一下:當我使用 www.example.com/svn/myrepo 時它不起作用,而當我使用 www.example.com/var/www/svn/myrepo 時它會起作用。

完整的 000-default.conf:

<VirtualHost *:80>
   ServerName www.example.com
   ServerAlias example.com

   ServerAdmin my-email@example.com
   DocumentRoot /var/www/html

   <Directory />
           Options FollowSymLinks
           AllowOverride All
   </Directory>

   <Directory /var/www/html/>
           AllowOverride All
           Order allow,deny
           allow from all
   </Directory>

   Alias /svn /var/www/svn

   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

的輸出apachectl -S

VirtualHost configuration:*:80 www.example.com (/etc/apache2/sites-enabled/000-default.conf:1) ServerRoot: "/etc/apache2" Main DocumentRoot: "/var/www" Main ErrorLog: "/var/log/apache2/error.log" Mutex default: dir="/var/lock/apache2" mechanism=fcntl Mutex mpm-accept: using_defaults Mutex watchdog-callback: using_defaults Mutex rewrite-map: using_defaults PidFile: "/var/run/apache2/apache2.pid" Define: DUMP_VHOSTS Define: DUMP_RUN_CFG User: name="www-data" id=33 not_used Group: name="www-data" id=33 not_used

apache 配置文件僅在您使用http或訪問儲存庫時使用https。當您使用svn時,連接由svnserve一個完全獨立的程序處理。

svnserve 的文件可在SVN 書籍或手冊頁man svnserveman svnserve.conf. 您可以在呼叫它時設置根路徑,如下所示:

svnserve -r /var/www

使其開始在下/var/www而不是立即在/.

引用自:https://serverfault.com/questions/634649