SVN+Apache httpd+Nginx实现svn的http请求和Nginx代理


1. 安装步骤

这里默认你已经安装完成 svn,并且将 svn 的数据仓库目录配置为/usr/local/svn/data。如果没有安装,可以参考之前的安装文档:CentOS7 环境下在线和离线安装 SVN(Subversion)

1.1 安装 httpd 组件和依赖

安装httpd执行命令yum -y install httpd
安装依赖组件mod_dav_svn执行命令yum -y install mod_dav_svn

1.2 创建仓库和配置用户和权限

  • 通过 svnadmin 命令创建仓库。
svnadmin create /usr/local/svn/data/repository
  • 通过htpasswd命令创建第一个用户adminhttpdPasswd文件。
htpasswd -c -m /usr/local/svn/data/repository/conf/httpdPasswd admin

Tips1:-c表示表示创建新文件httpdPasswd-m是强制使用MD5加密密码 admin可访问用户名
Tips2:后续再添加用户可以去掉-c,直接使用htpasswd -m /usr/local/svn/data/repository/conf/httpdPasswd otheruser

  • 修改httpdPasswd同级目录下的authz文件,添加组和给组添加权限
[groups]
mygroups=admin,user1,user2
[/]
@mygroups=rw

1.3 httpd 的相关配置

  • httpd默认监听端口是80,可以通过修改/etc/httpd/conf/httpd.conf文件中Listen对应的值。(如果无需修改端口,此步略过)

  • /etc/httpd/conf.d/目录,创建一个svn.conf文件,文件内容如下:

# 加入依赖模块
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /data>
   DAV svn
   SVNListParentPath on
   # 监控svn的父级目录data,data下有很多仓库
   SVNParentPath /usr/local/svn/data
   AuthType Basic
   AuthName "Authorization Realm"
   # httpdPasswd文件的路径
   AuthUserFile /usr/local/svn/data/repository/conf/httpdPasswd
   # authz文件的路径
   AuthzSVNAccessFile /usr/local/svn/data/repository/conf/authz
   Satisfy all
   Require valid-user
   SVNAutoversioning on
   ModMimeUsePathInfo on
</Location>
  • 重启 svn,重启 httpd 服务

svn 拉取地址:http://192.168.195.129:8088/data/repository

Tips:前置条件是在上面的操作中,修改了httpd监听的端口,由80修改为8088,如果没有去修改,则直接将上述地址中的端口去掉即可。

遇到的问题:从 svn 中拉取是正常的,但是提交出现 could not begin a transaction,解决方案就是执行下面的两个命令

chown -R apache:apache /usr/local/svn/data/
chcon -R -t httpd_sys_rw_content_t /usr/local/svn/data/

Tips:主要原因是权限问题。httpdapache提供的组件,在安装httpd的时候会创建一个apache用户和用户组,在提交内容的时候,apache需要对仓库内容进行写操作,由于在安装svn的时候,用的是root用户,导致apache没有写的权限导致的。

1.4 httpd 操作相关命令

httpd 安装成功后会自动注册到 service 里面,可以通过 service 相关命令来执行起停及查看状态,具体命令如下:

# 启动httpd
systemctl start httpd
# 停止httpd
systemctl stop httpd
# 重启httpd
systemctl restart httpd
# 将httpd加入到随系统自动启动
systemctl enable httpd

2. 通过 nginx 转发

配置信息如下:

http {

	server {
		listen       8088;
		server_name  localhost;
		client_max_body_size 2048m;
		location / {
			proxy_pass http://192.168.195.129:8088;
		}
	}
}

文章作者: 程序猿洞晓
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 程序猿洞晓 !
评论
 上一篇
jenkins打包部署配置详解(前端+后端) jenkins打包部署配置详解(前端+后端)
测试环境频繁的部署发包,如果使用原始的上传运行方式太麻烦,引入jenkins可以提高这个过程的效率,搞起来……
2023-08-12
下一篇 
k8s集群在centos环境中部署安装详细过程 k8s集群在centos环境中部署安装详细过程
k8s是一款开源容器集群系统,用于容器化应用程序部署、扩展和管理,目标是让容器简单高效。能够实现自我修复、弹性伸缩、服务发现、负载均衡、版本回退、存储编排等高端操作。
2023-07-12
  目录