在Linux下配置SVN服务器以同时支持Apache的HTTP和svnserve独立服务器两种协议,可以按照以下步骤进行,本文假设你使用的是Subversion 1.8或更高版本。
安装必要的软件
确保你已经安装了subversion
、apache2
及其相关模块,以及svnserve
,你可以使用包管理器(如apt
或yum
)来安装这些软件。
对于Debian/Ubuntu系统:
sudo apt-get update sudo apt-get install subversion apache2 libapache2-mod-svn
对于CentOS/RHEL系统:
sudo yum install subversion httpd mod_dav_svn
配置Apache HTTP访问
编辑Apache配置文件(通常是/etc/apache2/sites-available/default
或/etc/httpd/conf/httpd.conf
),添加如下内容:
启用DAV模块 LoadModule dav_module /usr/lib/apache2/modules/mod_dav.so LoadModule dav_svn_module /usr/lib/apache2/modules/mod_dav_svn.so 设置SVN父目录 <Location /svn> > DAV svn SVNParentPath /path/to/your/repos AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd Require valid-user </Location>
请将/path/to/your/repos
替换为你的实际仓库路径,并将/etc/apache2/dav_svn.passwd
替换为你的认证文件路径。
创建认证文件并设置权限:
sudo htpasswd -cm /etc/apache2/dav_svn.passwd yourusername
然后重启Apache服务:
sudo systemctl restart apache2 # For Debian/Ubuntu sudo systemctl restart httpd # For CentOS/RHEL
配置svnserve独立服务器
创建一个svnserve.conf
文件,通常位于/etc/subversion
目录下:
[general] anon-access = none auth-access = write password-db = /etc/subversion/svnserve.passwd realm = MyRepoRealm
创建认证文件并设置权限:
sudo htpasswd -cm /etc/subversion/svnserve.passwd yourusername
启动svnserve服务:
svnserve -d -r /path/to/your/repos
防火墙配置
确保你的防火墙允许HTTP和自定义端口(例如3690,用于svnserve)的流量,你可以使用ufw
或firewalld
来管理防火墙规则。
对于ufw
:
sudo ufw allow 'Apache Full' sudo ufw allow 3690/tcp
对于firewalld
:
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-port=3690/tcp sudo firewall-cmd --reload
测试配置
现在你可以通过两种方式访问你的SVN仓库:
HTTP:http://yourserverip/svn
svnserve:svn://yourserverip/yourreponame
使用相应的客户端工具进行测试,以确保两种协议都能正常工作。
通过以上步骤,你可以在Linux下配置一个同时支持Apache HTTP和svnserve独立服务器的SVN服务器,根据需求,你可以选择不同的协议来进行操作。