自从工作后,发现之前的代码开发太随便啦,于是经过不到两年的工作积累,打算在自己开发软件的过程中好好管理自己的项目。于是打算搭建自己的项目服务器,去年搭建过一次,但是由于没有记录,现在需要再来一遍,好多步骤忘记,同时又遇到了些新问题,在网上搜集很多资料,现在一步一步记录下搭建的过程,都是自己验证OK,需要的可以参考参考。
一 安装环境准备
1. 安装以下用户包:
$ sudo apt-get install subversion apache2 libapache-svn
(注意:如果不安装libapache-svn, 在配置apache2时,DAV svn会出现错误,提示没有dav模块)
完成以上安装后,可以直接访问apache的主页,在浏览器地址中输入:http://服务器IP/, 即可看到“It Works”界面,说明安装正常。
二 配置svn
1. 创建版本库
$sudo mkdir /home/svn
$sudo chmod 770 /home/svn
$sudo chown lxm:subversion –R /home/svn
$sudo chmod –R g+rws /home/svn
$svnadmin create /home/svn/repos
此时可看到/home/svn/repos目录下svn版本库所有文件夹及配置文件:
创建subversion用户组,并把apache运行用户www-data和自己的用户加入到subversion用户组中
$sudo addgroup subversion
$sudo usermod –G subversion –a www-data lxm
接下来导入项目文件:
进入你的项目源文件根目录下,如我的,/home/lxm/test
导入项目到版本库:
$svn import /home/lxm/test file:///home/svn/repos/test –m “inital import”
2. 配置权限访问等
1)添加svn 用户
$htpasswd -c /home/svn/repos/conf/passwd lxm //然后会提示你输入密码,当然第一次创建svn用户,需要通过参数-c,然后第二次创建svn用户就不需要,这里要注意。
(可选)$htpasswd /home/svn/repos/conf/passwd test2 //创建第二个svn用户
这时看到/repos/conf目录下的passwd文件变成加密的内容
2)用户权限配置
由于我是配置为自己用,权限都配置为我自己访问:
$ vim /home/svn/repos/authz
Code[group] admin = admin develop = lxm [/] @admin = rw @develop = rw
$vim /home/svn/repos/svnserve.conf
将以下代码前面的#去掉(注意代码前面没有空格额)
auth-access = write 设置有权限用户得权限
password-db = passwd 指定查找用户名和密码得文件,这样设置即为本目录下得passwd
authz-db = authz 制定各用户具体权限得文件,这样设置即为本目录下得authz
三 apech2配置
$sudo vim /etc/apache2/mods-enabled/dav_svn.conf
修改以下内容:
Code<Location /svn>
DAV svn
SVNPath /home/svn/repos
AuthzSVNAccessFile /home/svn/repos/conf/authz
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /home/svn/repos/conf/passwd
Require valid-user
</Location>
备注:此配置文件是告诉apache关于svn的访问路径已经相关配置文件,这里注意f访问的根目录
重启apache服务器:
$sudo /etc/init.d/apache2 restart
四 功能测试
到此,所有配置完成,下面一步一步验证:
1. apache访问验证
在浏览器地址栏中输入:http://服务器IP/svn/
即可看到访问到svn版本的根目录,下面有你之前导入的项目文件夹,说明apache配置完成并正常工作
2. svn验证
在自己pc或其他pc中导出svn测试,前提是其他pc也要能访问服务器额
我在windows下安装tortoiseSVN客户端,导出svn版本库正常,在导出地址填:http://服务器IP/svn/,需要填写账号和密码,即之前添加的账号和密码。
导出完毕后,修改项目中某个文件,检查提交有没有问题,我测试过一切正常。