|
本次试用的linux发行版是Ubuntu 12.04.5 LTS
1
2
3
4
5
6
| yaoliang@node2:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.5 LTS
Release: 12.04
Codename: precise
|
需要安装的环境:
apache2
subversion
libapache2-svn
1、安装svn
1
| yaoliang@node2:~$ sudo apt-get install subversion
|
2、创建仓库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| yaoliang@node2:~$ sudo mkdir /srv/svn
yaoliang@node2:~$ cd /srv/svn
yaoliang@node2:/srv/svn$ sudo svnadmin create repos
yaoliang@node2:/srv/svn$ sudo tree -L 2
.
└── repos
├── conf
├── dav
├── db
├── format
├── hooks
├── locks
└── README.txt
6 directories, 2 files
|
3、修改配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| yaoliang@node2:/srv/svn$ cd repos/conf/
yaoliang@node2:/srv/svn/repos/conf$ ls
authz passwd svnserve.conf
yaoliang@node2:/srv/svn/repos/conf$ sudo vim svnserve.conf
[general]
anon-access = none # 匿名用户权限改为none
auth-access = write
password-db = passwd
authz-db = authz
realm = My First Repository
yaoliang@node2:/srv/svn/repos/conf$ sudo vim passwd
[users]
admin = admin # 使用明文的方式存放账号和密码
yaoliang@node2:/srv/svn/repos/conf$ sudo vim authz
[groups]
admin = admin # 将admin用户加到admin组中
[/]
@admin = rw # admin组的权限为读写
* = r # 其他权限为只读
|
4、测试
1
2
3
| yaoliang@node2:/srv/svn/repos/conf$ sudo svnserve -d -r /srv/svn
yaoliang@node2:/srv/svn/repos/conf$ sudo netstat -antp | grep svn
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 13900/svnserve
|
发现3690端口已启动。
-d:以守护进程的形式运行
-r: 指明仓库所在的目录
通过TortoiseSVN查看并上传文件进行测试
5、安装apache2和libapache2-svn
1
| yaoliang@node2:~$ sudo apt-get install apache2 libapache2-svn
|
6、配置apache2
1
2
3
4
| yaoliang@node2:~$ cd /etc/apache2
yaoliang@node2:/etc/apache2$ ls
apache2.conf conf.d httpd.conf mods-available ports.conf sites-enabled
apache_ssl_pass.sh envvars magic mods-enabled sites-available
|
7、权限修改
1
2
3
4
5
| yaoliang@node2:/etc/apache2$ sudo useradd svnuser
yaoliang@node2:/etc/apache2$ sudo groupadd subversion
yaoliang@node2:/etc/apache2$ sudo groupadd svnuser subversion
yaoliang@node2:/etc/apache2$ sudo chown -R root:subversion /srv/svn
yaoliang@node2:/etc/apache2$ sudo chown -R www-data.www-data /src/svn
|
8、修改配置文件
将mods-enabled中的dav_svn.load和dav_svn.conf全部注释掉,重写一个新的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| yaoliang@node2:/etc/apache2$ sudo vim conf.d/subversion.conf
# 导入模块
LoadModule dav_svn_module /usr/lib/apache2/modules/mod_dav_svn.so
LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so
<Location /svn/>
DAV svn
SVNParentPath /srv/svn
SVNListParentPath on
AuthType Basic
AuthName 'SVN Authentication'
AuthUserFile /etc/apache2/svn.passwd
AuthzSVNAccessFile /etc/apache2/svn.authz
Require valid-user
</Location>
|
9、生成认证和密钥文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| # 生成密钥文件
yaoliang@node2:/etc/apache2$ sudo htpasswd -c -m svn.passwd admin # 首次创建加 -c
yaoliang@node2:/etc/apache2$ tail svn.passwd
admin:$apr1$ZAA6soA3$8zZ5aApEP9WAN/KajN4rw1
# 生成配置文件
yaoliang@node2:/etc/apache2$ sudo vim svn.authz
[groups]
admin = admin
[/]
@admin = rw
* = r
[repos:/]
@admin = rw
* = r
|
10、重启apache和svn
1
2
3
| yaoliang@node2:/etc/apache2$ sudo pkill svnserve
yaoliang@node2:/etc/apache2$ sudo svnserve -d -r /srv/svn
yaoliang@node2:/etc/apache2$ sudo /etc/init.d/apache2 restart
|
11、通过TortoiseSVN进行测试
|
|
|
|
|
|
|