Apache 別名在瀏覽器中工作,但在嘗試通過 svn 客戶端訪問時不起作用
我遇到了一個讓我發瘋的問題。我從頭開始安裝了 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 svnserve
和man svnserve.conf
. 您可以在呼叫它時設置根路徑,如下所示:svnserve -r /var/www
使其開始在下
/var/www
而不是立即在/
.