0

同じサーバーにたくさんのプロジェクトがあります。このサーバーは、SVN リポジトリと実際の Web プロジェクトの両方をホストしています。私はこの構造を持ちたいです:

project1.server.com - with doc root to /var/www/html/project1/public
project2.server.com - with doc root to /var/www/html/project2/public
project3.server.com - with doc root to /var/www/html/project3/public

そして、この URL ですべての SVN リポジトリにアクセスできるようにします

svn.server.com/project1 - with repo root at /var/www/svn/project1/
svn.server.com/project2 - with repo root at /var/www/svn/project2/
svn.server.com/project3 - with repo root at /var/www/svn/project3/

私の現在の構成は次のとおりです。

<VirtualHost *:80>
        ServerName project1.server.com
        DocumentRoot "/var/www/html/project1/public"
        RewriteEngine off
        <Location />
                RewriteEngine on
                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteCond %{REQUEST_FILENAME} !-d
                RewriteRule !\.(js|ico|gif|jpg|png|css)$ /index.php
        </Location>
</VirtualHost>

# ... similar <VirtualHost> tags here for the other web subdomains

<VirtualHost *:80>
        ServerName svn.server.com
        <Location />
                Deny from all
        </Location>

        <Location /project1>
                Allow from all
                AuthType Basic
                AuthUserFile /etc/svn-auth-conf
                Require valid-user
                DAV svn
                SVNPath /var/www/svn/project1
                AuthName "Project 1 - Development Repository"
                AuthzSVNAccessFile /etc/svn-acl-conf
        </Location>

# ... similar <Location> tags for the other repos

</VirtualHost>

DocumentRoots を /var/www/html/project1-site/public のような別のものに変更すると、これはうまく機能するので、何が起こっているのかはかなり確信しています:

また、Web ルートにリポジトリ URL と同じ名前のオブジェクトがある可能性もあります。たとえば、Web サーバーのドキュメント ルートが /var/www で、Subversion リポジトリが /home/svn/repo にあるとします。次に、 http://server.com/myrepoでリポジトリを提供するように Apache を構成します。その後、ディレクトリ /var/www/myrepo/ を作成すると、301 エラーが発生します。

しかし、上で示したようなディレクトリ構造を維持したいと思います。それを機能させるにはどうすればよいですか?思いつくよりきちんとした構造なので、このようにしたいです。なのでアイデアも大募集!

4

2 に答える 2

1

SVN v-host のポートを変更してみてください (SVN は通常 を使用していると思います3690)。現在、両方のプロトコルに同じルート パス ( Location /) と同じポート ( 80) を使用しているため、Apache は 2 種類の要求を区別できません。

詳細はこちら: http://en.wikipedia.org/wiki/Apache_Subversion#Repository_access

SVN クライアントもこのポートを使用する必要があることに注意してください。それがあなたにとって大丈夫かどうかわかりません。

于 2012-05-31T06:51:23.420 に答える
0

リポジトリをドキュメント ルートに保持したい場合は、 http://<document_root_relative_path_to_repository> の代わりに
svn+ssh://<absolute_path_to_repository>という URL を使用してリポジトリにアクセスでき ます。ssh アクセスと資格情報が必要です。


于 2020-10-28T12:03:39.863 に答える