CollabNet Subversion Edge是一个Subversion服务器分发版,包括Apache、Subversion和ViewVC的完整软件栈,以及一个功能强大的基于web的服务器管理控制台。
Subversion Edge的优势
直接使用Subversion,需要配置Apache以及http方式的插件,对于很多运维新手来说非常麻烦,另外如何通过浏览器更好的浏览代码,也需要自行组装ViewVC等工具。而使用Subversion Edge,则可以直接如下等诸多功能:
- 提供整体的Web页面对用户/权限进行统一管理
- 内嵌直接提供svn和http协议的访问方式
- 提供ViewVC的浏览器代码查阅方式
- 提供基本可用RestAPI可以通过API进行用户和仓库的管理
- 提供了简单的备份和恢复方式
- 提供了页面对于svn用户和组进行权限设定的页面
安装Subversion Edge
安装包下载:https://www.collab.net/downloads/subversion#Linux
参考:https://liumiaocn.blog.csdn.net/article/details/108174169一键安装。
#/bin/sh
error_handling() {
if [ $? -ne 0 ]; then
echo " ERROR: $@"
exit 1
fi
}
SVN_USER=svn
SVN_GROUP=svn
SVN_HOME_DIR=/opt/svn
CSVN_HOME_DIR=${SVN_HOME_DIR}/csvn
CSVN_CONF=data/conf/csvn.conf
CSVN_WEB_PORT=3343
SUDO_ETC=/etc/sudoers
SUDO_LINE="${SVN_USER} ALL=(ALL) NOPASSWD: ALL"
OPENJDK_PACKAGE=java-1.8.0-openjdk
SVN_INSTALL_TAR_GZ=CollabNetSubversionEdge-5.2.4_linux-x86_64.tar.gz
TMP_LOG=/tmp/log.$$
echo "# Step 1: install openjdk"
echo " please make sure jdk has been installed, eg: using the cmd as following"
echo " yum update -y && yum install java-1.8.0-openjdk -y"
echo " begin yum update ..."
echo " maybe very slow, please check ${TMP_LOG}"
yum update -y >${TMP_LOG} 2>&1
echo " begin install ${OPENJDK_PACKAGE}"
yum install ${OPENJDK_PACKAGE} -y >>${TMP_LOG} 2>&1
echo " Java Version: "
java -version
echo
echo "# Step 2: add ${SVN_USER} user and group"
groupadd ${SVN_USER}
useradd -g ${SVN_GROUP} ${SVN_USER}
id ${SVN_USER}
echo
echo "# Step 3: add ${SVN_USER} sudo priveleges"
cp -p ${SUDO_ETC} ${SUDO_ETC}.org
error_handling "cp -p ${SUDO_ETC} ${SUDO_ETC}.org failed."
grep "${SUDO_LINE}" ${SUDO_ETC} >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "${SUDO_LINE}" >>${SUDO_ETC}
else
echo " Skip: the follow content existed already..."
grep "${SUDO_LINE}" ${SUDO_ETC}
fi
diff ${SUDO_ETC} ${SUDO_ETC}.org
echo
echo "# Step 4: make dir using user ${SVN_USER} "
mkdir -p ${SVN_HOME_DIR}
chown -R ${SVN_USER}:${SVN_USER} ${SVN_HOME_DIR}
chmod o+wx ${SVN_HOME_DIR}
echo
echo "# Step 5: copy and extract install file"
if [ ! -f ${SVN_INSTALL_TAR_GZ} ]; then
echo " install file(${SVN_HOME_DIR}) does not exist..."
exit 1
else
cp ${SVN_INSTALL_TAR_GZ} ${SVN_HOME_DIR}
error_handling "cp ${SVN_INSTALL_TAR_GZ} ${SVN_HOME_DIR} failed"
fi
cd ${SVN_HOME_DIR}
error_handling "cd ${SVN_HOME_DIR} failed"
su -l ${SVN_USER} -c "cd ${SVN_HOME_DIR} && tar xvf ${SVN_INSTALL_TAR_GZ} >/dev/null 2>&1"
error_handling "tar xvpf ${SVN_INSTALL_TAR_GZ} failed"
echo
echo "# Step 6: install csvn and csvn-httpd"
su -l ${SVN_USER} -c "cd ${CSVN_HOME_DIR} && (sudo -E bin/csvn remove >/dev/null 2>&1;sudo -E bin/csvn install)"
error_handling "csvn install failed"
su -l ${SVN_USER} -c "cd ${CSVN_HOME_DIR} && (sudo -E bin/csvn-httpd remove >/dev/null 2>&1;sudo -E bin/csvn-httpd install)"
error_handling "csvn-httpd install failed"
echo
echo "# Step 7: starting service csvn and csvn-httpd"
su -l ${SVN_USER} -c 'SU_OPTS="-s /bin/bash";sudo service csvn start'
error_handling "csvn starting failed"
su -l ${SVN_USER} -c 'SU_OPTS="-s /bin/bash";sudo service csvn-httpd start'
error_handling "csvn-httpd starting failed"
echo
echo "# Step 8: setting firewalld port"
firewall-cmd --zone=public --add-port=${CSVN_WEB_PORT}/tcp --permanent
error_handling "setting port permanent failed"
firewall-cmd --reload
error_handling "load setting failed"
echo
rm ${SVN_HOME_DIR}/${SVN_INSTALL_TAR_GZ}

输入用户名密码:admin/admin之后即可登录。

Docker部署
参考:https://github.com/mamohr/docker-subversion-edge构建Subversion Edge(5.2.4)的镜像:
FROM mamohr/centos-java:jre8
RUN \
yum update -y && \
yum install -y epel-release && \
yum install -y net-tools python-setuptools hostname inotify-tools yum-utils && \
yum clean all && \
easy_install supervisor
ENV FILE https://www.collab.net/sites/default/files/downloads/CollabNetSubversionEdge-5.2.4_linux-x86_64.tar.gz
RUN wget -q ${FILE} -O /tmp/csvn.tgz && \
mkdir -p /opt/csvn && \
tar -xzf /tmp/csvn.tgz -C /opt/csvn --strip=1 && \
rm -rf /tmp/csvn.tgz
ENV RUN_AS_USER collabnet
RUN useradd collabnet && \
chown -R collabnet.collabnet /opt/csvn && \
cd /opt/csvn && \
./bin/csvn install && \
mkdir -p ./data-initial && \
cp -r ./data/* ./data-initial
EXPOSE 3343 4434 18080
ADD files /
VOLUME /opt/csvn/data
WORKDIR /opt/csvn
ENTRYPOINT ["/config/bootstrap.sh"]
容器需要暴露以下端口:
3343 - HTTP CSVN Admin Sites
4434 - HTTPS CSVN Admin Sites (If SSL is enabled)
18080 - Apache Http SVN
同时将/opt/csvn/data
挂载出来。
docker run -d -p 3343:3343 -p 4434:4434 -p 18080:18080 \
-v /srv/svn-data:/opt/csvn/data --name svn-server mamohr/subversion-edge
配置及使用
权限设置:https://liumiaocn.blog.csdn.net/article/details/108232312
备份与数据迁移:https://liumiaocn.blog.csdn.net/article/details/109363473
关于其他配置及使用可参考https://blog.csdn.net/liumiaocn/category_10323590.html?spm=1001.2014.3001.5482
网友评论