搭建svn独立服务器以及自动部署

2024-09-06 11:48

本文主要是介绍搭建svn独立服务器以及自动部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

常识:

svn存储版本数据也有2种方式:BDB和FSFS。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。 


一,下载工具

wget http://subversion.tigris.org/downloads/subversion-1.6.17.tar.gz

wget  http://subversion.tigris.org/downloads/subversion-deps-1.6.17.tar.gz

注意:

版本要一样,都是必须下载的,否则单独下载第一个包编译时就会提示缺少模块。


二,解压缩

tar xfvz subversion-.6.17.tar.gz
tar xfvz subversion-deps-.6.17.tar.gz

注意:

这两个包下载解压后会解压到同一个目录下,不需要特别指定。


三,编译

cd subversion-.6.17

//prefix指定安装的目录,without-berkeley-db表明不使用berkeley数据库

编译 ./configure --prefix=/opt/svn -without-berkeley-db -with-zlib

这里只是搭建svn独立服务器,没有依赖apache的,所以不需要编译关于apache的相关参数

总结编译后会出现的问题:

1,编译后,报错:configure: error: invalid variable name: `prefix'

解决prefix 前面的小横线“-”打错了,应该是 "--" .

2,报错:configure: error: no XML parser was found: expat or libxml 2.x required

其一:错误提示需要安装expat

 Yum install expat
其二:   configure: error: no XML parser was found: expat or libxml 2.x required

  configure failed for neon

  解决办法:

 #yum install libxml2 libxml2-devel  RedHat 和 Fedora 安装 
<span style="color: rgb(51, 51, 51);font-size:12px;"> # aptitude install libxml2-dev         </span><span style="color: rgb(51, 51, 51);font-size:12px;">ubuntu</span>

3,其次编译,报错:

configure: error: We require OpenSSL; try --with-openssl
configure failed for serf

解决:

此时先检查本机有没有装 openssl 和 openssl-devel 
最简单的方法就是找一下有没有opensslv.h这个文件

find / -name opensslv.h

如果能找到,就在configure命令之后添加 --with-openssl= ...(此处是opensslv.h所在的目录) 

如果找不到,就执行

yum install openssl
yum install openssl-devel

进行安装,安装之后找到opensslv.h所在的目录加到configure命令之后

例如:
./configure -–prefix=/usr/local/svn -–without-berkeley-db --with-openssl=/usr/include/openssl

4,编译报错:configure: error: --with-zlib requires an argument.

解答:安装zlib,其实下载的subversion-deps-.6.17.tar.gz包里会有

在svn的安装目录下有个zlib目录,说明是已经安装的了。

编译的时候不报这个错误,下面的步骤是不需要操作的:

# cd ../software/subversion-1.6.6/zlib/  
# ./configure –shared  
# make 
完成zlib的make,再次完成编译的时候,需要指定刚才安装的zlib路径

例如:

./configure --prefix=/opt/svn -without-berkeley-db -with-zlib=/tmp/subversion-1.6.17/zlib/

当然在安装svn前,也可以先安装zlib,如下所示:

tar -zxvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure && make && make install

编译成功提示:


如果最后出现下面WARNING,我们直接忽略即可。因为不使用BDB存储。(这个warning是编译的时候没有编译berkeley-db这个导致的,恩恩


四,安装

make clean
make && make install  
会安装在 编译 --prefix 指定的目录

安装完提示:

test -d /opt/svn/include/subversion-1 || \/usr/bin/install -c -d /opt/svn/include/subversion-1
(subversion/svnversion/svnversion . ||  \svnversion . ||                        \echo "unknown";                                    \) > /opt/svn/include/subversion-1/svn-revision.txt

安装会需要很多基本包,有的时候非常有必要判断这些基本包是否已经安装,可以用此命令

Rpm -qa | grep xxx

可以查看expat,libxml,neon,openssl,zlib


五,检测svn是否安装成功

在svn安装目录的bin目录下,运行命令:

#svnserve --version

如果出现svn的版本号,说明已经安装成功。


六,添加svn环境变量

#export PATH=$PATH:/opt/svn/bin

#echo $PATH

这样在任何位置运行,svnserve --version 都可以成功


七,创建svn版本库

mkdir -p /opt/svndata/repos1

加上参数P,是如果没有父目录则自动创建

  注意: /opt/svndata在这里将是所有仓库的根目录,repos1是其中的一个仓库

建立svn版本库

svnadmin create /opt/svndata/repos1

运行完,repos1目录下就会出现很多文件。


八,配置svn版本库

1修改svn版本库配置文件版本库1:

vi /opt/svndata/repos1/conf/svnserve.conf

内容修改为:

[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = repos1

2,修改用户密码文件

文件格式如下:

文件格式如下:
[users]
<用户1> = <密码1>
<用户2> = <密码2>
其中,[users]是必须的。下面列出要访问svn的用户,每个用户一行。

示例:
[users]
svntest = svntest
配置svn用户访问权限vi /opt/svn/conf/authz

为了简化配置,所有版本库可共用1个权限配置文件/opt/svn/conf/passwd。如有必要,也可以分开。文件中定义用户组和版本库目录权限。

注意:对用户配置文件的修改立即生效,不必重启svn。


3,修改权限控制文件

用户组格式:
[groups]
<用户组名> = <用户1>,<用户2>
其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。
版本库目录格式:
[<版本库>:/项目/目录]
@<用户组名> = <权限>
<用户名> = <权限>
其中,方框号内部分可以有多种写法:
/,表示根目录及以下。根目录是svnserve启动时指定的,我们指定为/opt/svndata。这样,/就是表示对全部版本库设置权限。
repos1:/,表示对版本库1设置权限
repos2:/abc, ,表示对版本库2中的abc项目设置权限
repos2:/abc/aaa, ,表示对版本库2中的abc项目的aaa目录设置权限
权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。
示例:
[groups]
admin = alan
[/]
@admin = rw
[repos1:/abc/aaa]
king = rw
[repos2:/pass]
king =

注意:

* 权限配置文件中出现的用户名必须已在用户配置文件中定义。
* 对权限配置文件的修改立即生效,不必重启svn。


九,启动svn

建立启动svn的用户

useradd svn
passwd svn
根据提示为用户svn设置密码


允许用户svn访问版本库chown -R svn:svn /opt/svndata
chown -R svn:svn /opt/data
启动命令:

[root@FirstPro repos1]# su - svn -c "svnserve -d --listen-port 9999 -r /opt/svndata"

没有指定监听端口,默认是3690

其中:
su - svn表示以用户svn的身份启动svn
-d表示以daemon方式(后台运行)运行
–listen-port 9999表示使用9999端口,可以换成你需要的端口。但注意,使用1024以下的端口需要root权限

-r /opt/svndata指定根目录是/opt/svndata

到此,svn服务器配置完成!


十,运行svn

服务器端初次检出到网站:[svn@FirstPro web]$ svn co svn://192.168.61.128/repos1/ ./web1

可以输入用户名和密码,选择yes,记住密码

本地检出:


说明防火墙没有配置让svn的端口通行,配置一下防火墙,重启ok

 

十一,配置钩子文件-自动部署

把svn版本库中的代码,自动同步到服务器上网站目录下。需要配置post-commit钩子

cp post-commit.tmpl post-commit 
chmod 755 post-commit

post-commit 中内容:

EPOS="$1"  //svn版本库跟目录
REV="$2"    //svn更新的版本号#mailer.py commit "$REPOS" "$REV" /path/to/mailer.confDIR="/var/www/html/web1"
//以下信息是保证编码一致
export LC_ALL=en_US.UTF-8
export LANG=zh_CN.UTF-8
CURDATE=`date`
echo "Code Deployed By at $CURDATE,$REPOS,$REV" >> /var/www/log/svn_look.log .log/opt/svn/bin/svn co svn://192.168.61.128/repos1 $DIR --username svntest --passw
ord svntest >> /var/www/log/svn_look.log 2>&1

或者改为:

/opt/svn/bin/svn up  $DIR --username svntest --password svntest >> /var/www/log/svn_look.log 2>&1

注意:

Svn在服务器上首次需要检出

Svn co svn://192.168.61.128/repos1 网站跟目录


//标准输出和错误输出都输出到日志文件

Svn_look.log 中记录内容:

U    /var/www/html/web1/1.txt  //版本库检出的文件

Checked out revision 17.   


这样svn独立服务器搭建完成。













这篇关于搭建svn独立服务器以及自动部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1141921

相关文章

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

redis群集简单部署过程

《redis群集简单部署过程》文章介绍了Redis,一个高性能的键值存储系统,其支持多种数据结构和命令,它还讨论了Redis的服务器端架构、数据存储和获取、协议和命令、高可用性方案、缓存机制以及监控和... 目录Redis介绍1. 基本概念2. 服务器端3. 存储和获取数据4. 协议和命令5. 高可用性6.

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

nginx部署https网站的实现步骤(亲测)

《nginx部署https网站的实现步骤(亲测)》本文详细介绍了使用Nginx在保持与http服务兼容的情况下部署HTTPS,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录步骤 1:安装 Nginx步骤 2:获取 SSL 证书步骤 3:手动配置 Nginx步骤 4:测

JavaWeb-WebSocket浏览器服务器双向通信方式

《JavaWeb-WebSocket浏览器服务器双向通信方式》文章介绍了WebSocket协议的工作原理和应用场景,包括与HTTP的对比,接着,详细介绍了如何在Java中使用WebSocket,包括配... 目录一、概述二、入门2.1 POM依赖2.2 编写配置类2.3 编写WebSocket服务2.4 浏

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型