为了做自己项目的版本控制,搭建一个简单的Subversion的版本控制服务器。
好久没有搭建和使用版本控制服务器,最近使用经验还停留在微软的TFS状态,这次选择Subversion。网上看到了很多关于Subverion和git比较的文章,这里不在重复,后续考虑使用git,最近为了把项目跑西来,并且简单实用,还是选择了Subversion入手。由于本人多年不从事开发项目(常做项目实施),所以很多需要补充学习。
安装过程给大家借鉴,也参考很多网上其他文章,主要参考:http://wangxc.javaeye.com/blog/665962 这里特地声明
当然也有相应的改动适应我搭建的Ubuntu服务器环境,言归正传,搭建开始。
环境说明:
Ubuntu Server 10.4
已经安装SSH
已经安装LAMP
搭建目标:
安装SVN 支持svn://方式访问
安装SVNManager 支持 https://方式访问
1.安装svn
单独安装 如果只实现第一个目标
apache集成安装 如果想实现两个目标
2.目录文件 配置
创建svn目录 我今后svn项目保存的目录
编辑dev-svn站点文件,建立一个空文件,使apache可以访问
建立密码和授权文件,空文件
sudo touch / etc / apache2 / dav_svn.authz
sudo chmod 777 /etc/apache2/dav_svn.authz
3.安装PHP支持类库: 我安装时最新版本为0.3.4 sudo -i 获得root授权,懒得敲sudo了,呵呵
pear install - a VersionControl_SVN - 0.3 . 4
手动下载svnmanager
http://sourceforge.net/projects/svnmanager/files/
4.修改config.php文件内容
$htpassword_cmd = " /usr/bin/htpasswd " ;
$svn_cmd = " /usr/bin/svn " ;
$svnadmin_cmd = " /usr/bin/svnadmin " ;
$svn_repos_loc = " /XXX/svn " ;
$svn_passwd_file = " /etc/apache2/dav_svn.passwd " ;
$svn_access_file = " /etc/apache2/dav_svn.authz " ;
$svn_trash_loc = "" ;
$svnserve_user_file = "" ;
$smtp_server = " smtp.mailserver.net " ;
$dsn = " mysql://yourdatabase:yourpassword@localhost/svnmanager " ;
$admin_name = " admin " ;
$admin_temp_password = " admin " ;
?>
其中dsn中的数据库需要你提前在mysql中建立,其它目录文件请参考前面建立情况对应调整
数据库创建参考
Mysql > create database svnmanager;
Mysql > grant all privileges on svnmanager .* to ' svnmanager ' @ ' localhost ' identified by 'password ' ;
Mysql > FLUSH PRIVILEGES;
Mysql > quit;
5.安装SSL
apt - get install ssl - cert
a2enmod ssl
创建apache下的ssl目录:
创建证书相关文件
进入/etc/apache2/ssl目录,创建私鈅,需要输入两次相同的关键字:
openssl genrsa - des3 - out my - server.key 1024
apache重启自动验证
sudo openssl rsa - in my - server.key.org - out my - server.key
sudo / etc / init.d / apache2 restart
创建ssl站点文件 svnmanager管理工具使用
文件主要内容
< VirtualHost *:443 >
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/my-server.crt
SSLCertificateKeyFile /etc/apache2/ssl/my-server.key
< Location /svn >
DAV svn
SVNParentPath /XXX/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /etc/apache2/dav_svn.authz
SVNListParentPath On
Require valid-user
</ Location >
Alias /svnmanager "/opt/svnmanager-1.08/"
< Directory "/opt/svnmanager-1.08/" >
SSLRequireSSL
</ Directory >
</ VirtualHost >
启动后,https 站点 svnmanager目录可以访问,可以创建管理svn了,同时打开了https连接svn的方式
6.打开svn://访问方式
以上ssl方式可以不需要,直接操作此步可以,但需要通过svn命令行方式创建版本控制库。
我将此命令添加到了服务器启动文件中rc.local,这样就可以自动启动此服务了。
默认情况下svn://连接方式用户名密码和https并不是在一起的,需要单独维护,他会在你的库目录下的conf目录中看到passwd文件维护
至此搭建完成
当然为了服务器的正常访问,我还调整了路由器的配置等,那些就不在这里阐述了,保证局域网的畅通就好了。
附加 MySQL root 密码恢复,由于本人长时间没有管理Ubuntu中的LAMP,所以MySQL密码忘记,呵呵!
Stop the MySQL Server.
sudo service mysql stop
Start the mysqld configuration.
Login to MySQL as root.
Replace YOURNEWPASSWORD with your new password!
Start the MySQL Server