字数:1579
需求
在用Axure做原型时,想保留一下历史版本,同时公网作业,于是利用其svn管理功能,但是svn://协议一直有问题,于是想用http方式,在本机用visulsvn搭建没有问题。但是远程ubuntu的主机上如何支持http方式?本篇就是解决这个问题的。
使用过程
(1)之前已经安装过nginx和svnserver,就不重复介绍,用httpwd生成http控制用户和密码也不介绍了。
(2)安装apache
安装apach2:sudo apt install apache2
安装lib:sudo apt install libapache2-svn
重启:sudo /etc/init.d/apache2 restart
访问:crul -X GET http://localhost/
,能返回一个html页面
配置dav:sudo vim /etc/apache2/mods-available/dav_svn.conf
在末尾增加配置如下:
<Location /svn>
DAV svn
# 这个是svn库所在目录,里面有很多个库
SVNParentPath /home/ubuntu/program/svn_repository
SVNAdvertiseV2Protocol Off
AuthType Basic
AuthName "Subversion Repository"
# 这个是http验证用户名及密码信息,git也用的这个。注意此用户名和密码同样需要配置到svn库里的conf/passwd中
AuthUserFile /etc/nginx/passwd
# 这个是访问svn库文件权限配置
AuthzSVNAccessFile /home/ubuntu/program/svn_repository/axure/conf/authz
Require valid-user
</Location>
注意:Apache引用的passwd中的用户,要添加到svn库的
passwd
配置文件,并在authz
配置文件中授权repository的相关权限。
附:安装htpasswd就能生成Http Basic Authentication的用户密码,安装方法参考这里,步骤:
- sudo apt search htpasswd # 查找哪些包含这个工具
- sudo apt-get install apache2-utils # 安装
- htpasswd -bdc htpasswd.kibana username password # 生成密钥
(3)让nginx接上apache,在80端口的server里配置以下内容,url中包括svn
字样的走反向代理到apache
location ~ /svn(/.*) {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8099;
}
(4)验证
访问 http://roadl.com/svn/axure/ 就能看到之前建的axure工程qindu了,url中,svn是apache/nginx配置的内容,axure是svn repository,它位于/home/tao/svn_repository
,这个目录是库合集: