20190624记录
本来想用Nginx直接搞subversion,然后发现nginx不支持,好像是缺少对dav什么的支持
于是用apache搞,然后再用nginx反向代理
安装不再记了,电脑自带nginx和apache,subversion用apt都能装
操作系统Kali2
一、配置Subversion
首先配置subversion,至少svn协议能跑起来再说下一步
我把库建在/srv/svn目录下
一个项目准备放在/srv/svn/demo1里面 建立目录不说了
建完之后 命令 svnadmin create /srv/svn/demo1
其他选项我用不到 用这个就够了
然后修改配置,添加用户,设置权限
1、vi /srv/svn/demo1/conf/svnserve.conf
anon-access = none 这个是设置匿名用户权限 默认是read 也就是只读 设置成none就是禁止访问
auth-access = write 这个是设置认证用户的权限 肯定要设置成write 就是可以写入password-db = passwd 这个是设置认证方式 一般密码认证就够了 这个密码明文保存在文件里 也就是同目录下的passwd文件
authz-db = authz 这个是设置权限 跟上面一样
2、vi /srv/svn/demo1/conf/passwd
在[users]下面添加记录 一个用户一行 格式为 <用户名> = <密码>
3、vi /srv/svn/demo1/conf/authz
我承认我很懒 我在最下面添加的一个
[/]
admin = rw
* = r
意思就是根目录权限
admin用户 权限为读写
其他用户 权限为只读
这里的用户在passwd里面必须要有
配置完了之后 启动svnserve
命令 svnserve -d -r /srv/svn/demo1
-d 后台运行 -r 指定目录
如果有防火墙要开放3690端口
然后软件通过svn://<你的IP地址>/ 访问 不要用浏览器 浏览器不支持svn协议
输入用户名和密码 如果成功了 就可以做下一步了
二、配置Apache2
我的系统自带apache2,但是不自带svn支持,需要下载
apt install libapache2-mod-svn
装完之后在apache2的目录下 /etc/apache2 的mods-enabled里面 应该有几个文件
authz_svn.load
dav_svn.conf
dav_svn.load
如果没有的话去mods-available里面看看 如果有的话建立软链接过来
然后编辑dav_svn.conf
注意 这里我只列出了我修改的地方 即解除注释或者添加<Location /svn> DAV svn SVNParentPath /srv/svn SVNListParentPath on 注意 这行是我添加的 AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd 注意 这个文件需要自己创建 AuthzSVNAccessFile /etc/apache2/dav_svn.authz 注意 这个文件需要自己创建 Require valid-user</Location>以下也是我添加的<Directory "/srv/svn"> AllowOverride None Options None Order allow,deny Allow from all Satisfy all</Directory>
改完之后保存
然后配置用户
htpasswd -c /etc/apache2/dav_svn.passwd <用户名>
然后会让你输入两次密码
如果再加用户就不用-c选项
htpasswd /etc/apache2/dav_svn.passwd <用户名>
这样就可以
配置权限
vi /etc/apache2/dav_svn.passwd
[demo1:/]admin = rw* = r
其实这里和subversion的权限一样
因为我在apache2里面配置的svn是根目录 不是那个demo1 所以没有直接写[/]
到这里apache2的配置也完成了
重启apache2服务
service apache2 restart
如果没报错 则配置正确
浏览器打开http://localhost:81/svn
认证之后应该会显示
Collection of Repositories
- demo1/
Powered by version 1.10.4 (r1850624).
到这里apache2的配置就完成了
三、配置Nginx转发Apache
因为我觉得还是nginx用的顺手 80也给nginx用的 于是就把apache的端口换成了81
apache端口在/etc/apache/ports.conf里面配置
修改 Listen 81
修改Nginx的配置文件
vi /etc/nginx/sites-enabled/default
在server段的里面添加
location /svn {
proxy_pass http://localhost:81; }要注意 我的default文件是默认的 没有修改过
他的网站根目录在/var/www/html
他监听80端口
他的server_name是_ 对 就是个下划线
启动nginx服务
service nginx restart
然后再用浏览器访问http://localhost/svn
如果和刚才81端口访问的效果一样 那么配置完成