在CentOS 7服务器上部署SVNManager,可以极大地简化Subversion(SVN)版本控制系统的管理,通过一个友好的Web界面,管理员可以轻松创建版本库、管理用户账户和分配访问权限,而无需频繁地手动编辑复杂的配置文件,本文将详细介绍在CentOS 7环境下搭建SVNManager的完整流程。
环境准备
SVNManager的运行依赖于LAMP(Linux, Apache, MySQL/MariaDB, PHP)架构,并需要Subversion本身的支持,在开始之前,请确保系统已更新,以下是所需的核心组件及其作用:
组件 | 作用 |
---|---|
Apache (httpd) | 提供Web服务,使SVNManager可通过浏览器访问 |
MariaDB/MySQL | 存储SVNManager的用户、组、权限及版本库信息 |
PHP | SVNManager的开发语言,负责业务逻辑处理 |
Subversion (svn, mod_dav_svn) | 核心版本控制系统,mod_dav_svn 模块让Apache能提供SVN服务 |
安装与配置依赖服务
通过YUM安装所有必需的软件包。
sudo yum install -y httpd mariadb-server mariadb php php-mysql php-mbstring php-xml subversion mod_dav_svn
安装完成后,启动并设置Apache和MariaDB服务开机自启。
sudo systemctl start httpd sudo systemctl enable httpd sudo systemctl start mariadb sudo systemctl enable mariadb
对MariaDB进行安全初始化,设置root密码并移除匿名用户等。
sudo mysql_secure_installation
为SVNManager创建一个专用的数据库和用户。
mysql -u root -p CREATE DATABASE svnmanager; CREATE USER 'svnuser'@'localhost' IDENTIFIED BY 'your_strong_password'; GRANT ALL PRIVILEGES ON svnmanager.* TO 'svnuser'@'localhost'; FLUSH PRIVILEGES; EXIT;
安装Subversion与SVNManager
Subversion已在第一步安装,我们需要创建一个目录来存放所有的SVN版本库。
sudo mkdir -p /var/svnrepos sudo chown -R apache:apache /var/svnrepos
下载SVNManager,可以从其官方SourceForge页面获取最新版本,并将其解压到Apache的Web根目录。
cd /tmp wget https://sourceforge.net/projects/svnmanager/files/svnmanager/1.10/svnmanager-1.10.tar.gz/download -O svnmanager-1.10.tar.gz tar -xzvf svnmanager-1.10.tar.gz sudo mv svnmanager-1.10 /var/www/html/svnmanager
配置Apache与SVNManager
配置SVNManager,复制并编辑配置文件。
sudo cp /var/www/html/svnmanager/config.php.linux /var/www/html/svnmanager/config.php sudo vi /var/www/html/svnmanager/config.php
修改以下关键配置项:
// 数据库连接信息 $dsn = "mysqli://svnuser:your_strong_password@localhost/svnmanager"; // SVNManager管理员账户(首次访问后创建) $admin_name = "admin"; $admin_password = "admin"; // SVN版本库父目录 $svn_repos_loc = "/var/svnrepos"; // SVN客户端和授权文件路径 $svn_cmd = "/usr/bin/svn"; $svnadmin_cmd = "/usr/bin/svnadmin"; $svn_config_dir = "/tmp";
配置Apache以支持SVNManager和SVN版本库访问,创建一个新的配置文件。
sudo vi /etc/httpd/conf.d/svnmanager.conf
<Directory "/var/www/html/svnmanager"> AllowOverride None Require all granted </Directory> # 配置SVN版本库访问 <Location /svn> DAV svn SVNParentPath /var/svnrepos AuthType Basic AuthName "SVN Repositories" AuthUserFile /var/svnrepos/conf/passwd AuthzSVNAccessFile /var/svnrepos/conf/authz Require valid-user </Location>
重启Apache服务使配置生效。
sudo systemctl restart httpd
初始化与访问
确保SELinux和防火墙允许HTTP流量。
sudo setsebool -P httpd_can_network_connect 1 sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload
在浏览器中访问 http://your_server_ip/svnmanager
,首次访问时,系统会提示创建数据库表,使用配置文件中设置的admin
账户登录,即可开始通过Web界面管理您的SVN服务器。
相关问答FAQs
问题1:我忘记了SVNManager的管理员密码,如何重置?
解答: SVNManager的管理员密码存储在MariaDB数据库的users
表中,您可以直接登录数据库进行重置,使用数据库客户端连接:mysql -u root -p
,选择SVNManager数据库:USE svnmanager;
,更新管理员用户的密码(假设用户名为admin
):UPDATE users SET password = MD5('new_password') WHERE name = 'admin';
,将new_password
替换为您的新密码即可。
问题2:我通过SVNManager创建了新仓库,但在客户端检出时出现权限错误,怎么办?
解答: 这通常涉及两个层面的权限问题,检查文件系统权限,确保Apache用户(apache
)对整个/var/svnrepos
目录及其子目录有读写权限,可以使用sudo chown -R apache:apache /var/svnrepos
和sudo chmod -R 775 /var/svnrepos
修复,检查Apache配置中AuthzSVNAccessFile
指向的授权文件(如/var/svnrepos/conf/authz
),确保该文件中已为相应仓库和用户分配了正确的读写(rw
)权限,SVNManager通常会自动管理此文件,但手动检查可以快速定位问题。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复