Centos6.3下apache+svn部署web版本同步

简介:

     前段时间一直忙项目,所以项目初期的svn服务就一直没来得及更新,今天刚好忙完就将自己之前的配置重新总结了下,供大家参考。

     svn(subversion)作为一款开源的代码版本管理软件,目前普遍用在项目开发人员将本地的源代码上传到web测试服务器的一种同步软件。

     其存储版本数据有2种方式:BDB(一种事务安全型表类型)和默认的FSFS(一种不需要数据库的存储系统)。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式相对安全一些。

     本篇博文就是为了实现开发人员使用windows下的svn客户端将源代码上传到服务端svn版本库,并利用svn的hock脚本将库数据同步到apache目录,达到实时测试web页面的功能。


我的博客新站已经建好,更多新的内容即将在新站更新。。

欢迎访问     http://www.showerlee.com



解决方案:


一.环境部署


操作系统:        centos6.3 x64

SVN:              subversion-1.8.0

apache:           httpd-2.4.4


151834134.jpg


svn server(centos6.3 x64): 192.168.7.74  

svn client(win7 x64): 192.168.7.129    


1.关闭iptables和SELINUX

# service iptables stop

注:如需开启防火墙,则添加如下一条规则打开svn 3690端口

# iptables -A INPUT -p tcp  --dport 3690 -j ACCEPT

# setenforce 0

# vi /etc/sysconfig/selinux

---------------

SELINUX=disabled

---------------


2.同步时间

# ntpdate asia.pool.ntp.org


3.安装apache

传送门:http://showerlee.blog.51cto.com/2047005/1174141


4.关闭系统自带svnserve

# service svnserve stop

# chkconfig svnserve off

注:本文档为了与apache2.4.4配合不发生兼容问题,所以使用了最新编译版本的svn,这里关闭是为了保证与rpm的版本不冲突.


二.svn安装配置:

(svn server)


1.下载svn源码包并安装

# wget http://mirrors.tuna.tsinghua.edu.cn/apache/subversion/subversion-1.8.0.tar.bz2

# tar jxvf subversion-1.8.0.tar.bz2

# cd subversion-1.8.0

创建安装目录

# mkdir -p /usr/local/svn


2.安装svn依赖包并解压模块到svn根目录:

# yum install expat* -y

# wget http://www.sqlite.org/sqlite-amalgamation-3071501.zip

# unzip sqlite-amalgamation-3071501.zip

# mv sqlite-amalgamation-3071501 sqlite-amalgamation

之前未安装apache请看红字,若安装apache直接无视:

-------------------------------------------------

注:因为之前已经编译成功apache,所以apache下面的apr与apr-util组件已成功编译到系统,如果您的系统未装apache,则这里需要安装apr与apr-util组件并在编译svn时加上此组件的编译参数

假设apr与apr-util后来单独编译到/usr/local/apr与/usr/local/apr-util目录

安装apr:

# cd ..

# wget http://apache.fayea.com/apache-mirror//apr/apr-1.5.0.tar.gz

# tar zxvf apr-1.5.0.tar.gz

# cd apr-1.5.0

# ./configure --prefix=/usr/local/apr

# make && make install

# cd ..

安装apr-util:

# wget http://apache.fayea.com/apache-mirror//apr/apr-util-1.5.3.tar.gz

# tar zxvf apr-util-1.5.3

# cd apr-util-1.5.3

# ./configure --prefix=/usr/local/apr-util

# make && make install

# cd ..

编译svn:

# cd subversion-1.8.0

# ./configure --prefix=/usr/local/svn -with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/bin/apu-1-config

--------------------------------------------------

编译安装

# cd subversion-1.8.0

# ./configure --prefix=/usr/local/svn

# make && make install


测试安装是否成功

# /usr/local/svn/bin/svnserve --version

-----------------------------

svnserve,版本 1.8.0 (r1490375)

  编译于 Jun 29 2013,04:08:41 在 x86_64-unknown-linux-gnu

-----------------------------

注:centos6.3默认装有svn服务端,版本为为1.6.11,其中svn命令在/usr/bin/svn下被环境变量加载,本文档编译的版本为1.8.0,不推荐使用低版本svn指令执行以下操作,可能会有报错。这里为了区分建议直接全路径访问编译后的高版本svn指令执行以下操作。

之前未安装svnserve可执行如下命令加载环境变量:

# echo "PATH=$PATH:/usr/local/svn/bin;export PATH" >> /etc/profile

# source /etc/profile


3.配置svn

1).建立版本库目录(这个需安装目录区分开)

# mkdir -p /data/svndata/www.example.com


2).建立svn版本库

# svnadmin create /data/svndata/www.example.com

注:执行此命令后svn自动在/data/svndata/目录下添加必须的配置文件.

# ls /data/svndata/www.example.com

--------------------

conf db format hooks locks README.txt

--------------------

注:版本库不同于一般的文件夹, 直接在操作系统上新建文件无法被SVN识别, 必须使用import等命令将文件导入版本库.此为svn内部指令,create用于新建版本库。请使用svn help查看详细说明。


3).修改版本库配置文件

# vi /data/svndata/www.example.com/conf/svnserve.conf

修改如下配置

-------------------------------

[general]

# 使非授权用户无法访问

anon-access = none

# 使授权用户有写权限

auth-access = write

# 指明密码文件路径

password-db = passwd

# 访问控制文件

authz-db = authz

# 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。

realm = /data/svndata/www.example.com

--------------------------------


4).配置用户

# vi /data/svndata/www.example.com/conf/passwd

添加如下内容

-----------------

[users]


user01 = 123456

user02 = 123456

-----------------

注:可以添加多个svn账户,=前后为用户名和密码


5).配置权限

# vi /data/svndata/www.example.com/conf/authz

添加以下内容

-------------

[/]

user01 = rw

user02 = r

------------

注:列出对各用户的授权。包括只读r,读写rw。没有列出的用户,则不允许访问


6).启动svn服务

# /usr/local/svn/bin/svnserve -d -r /data/svndata/


注:此指令用于启动svn服务,-d指明以守护模式运行,svn自动在3690端口监听。3690是默认端口,可以使用“--listen-port=”或者“--listen-host=”来指定其它端口以及非本地主机。-r选项用来指定svn服务的根目录,这样用户就可以使用相对路径访问,而不用提供完整路径。


7).检查端口

# lsof -i:3690

----------------------------

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

svnserve 65371 root    3u  IPv4  82329      0t0  TCP *:svn (LISTEN)

----------------------------


8).设置开机启动

# echo "/usr/local/svn/bin/svnserve -d -r /data/svndata/" >> /etc/rc.local


到此svn初步搭建完毕


三.svn同步apache配置:

1.添加apache的svn模块

# cd ~/subversion-1.8.0

# cp ./subversion/mod_dav_svn/.libs/mod_dav_svn.so  /usr/local/apache2/modules/

# cp ./subversion/mod_authz_svn/.libs/mod_authz_svn.so  /usr/local/apache2/modules/

# vi /usr/local/apache2/conf/httpd.conf

末行添加如下内容:

---------------------

LoadModule dav_module modules/mod_dav.so

LoadModule dav_svn_module modules/mod_dav_svn.so

---------------------

重启apache服务:

# /usr/local/apache2/bin/apachectl restart


2.设置svn同步脚本

创建apache虚拟目录

# mkdir -p /usr/local/apache2/htdocs/www.example.com    

设置apache默认用户为该虚拟目录宿主

# chown -R daemon.daemon /usr/local/apache2/htdocs/www.example.com

创建脚本,将svn该版本库数据同步到apache虚拟目录

# cd /data/svndata/www.example.com/

# vi post-commit

------------------------

#!/bin/sh

export LANG=zh_CN.UTF-8

SVN=/usr/local/svn/bin/svn

WEB=/usr/local/apache2/htdocs/www.example.com

#默认无需输入账号密码

#USERNAME=user01

#PASSWORD=123456

# SVN update $WEB --username $USERNAME --password $PASSWORD --no-auth-cache

$SVN update $WEB

------------------------

注:该脚本会在客户端执行svn commit同时被触发,从而将版本库的数据同步到apache虚拟目录

设置脚本可执行权限

# chmod a+x post-commit


使用checkout建立一个工作复本

# /usr/local/svn/bin/svn co svn://localhost/www.example.com    /usr/local/apache2/htdocs/www.example.com/

按照提示操作

==============================================

认证领域: <svn://localhost:3690> /data/svndata/www.example.com/

“root”的密码: 123456

认证领域: <svn://localhost:3690> /data/svndata/www.example.com/

“user01”的密码: 123456


-----------------------------------------------------------------------

注意!  你的密码,对于认证域:


  <svn://localhost:3690> /data/svndata/www.example.com/


只能明文保存在磁盘上!  如果可能的话,请考虑配置你的系统,让 Subversion

可以保存加密后的密码。请参阅文档以获得详细信息。


你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-


passwords”为“yes”或“no”,

来避免再次出现此警告。

-----------------------------------------------------------------------

保存未加密的密码(yes/no)?yes

A    /usr/local/apache2/htdocs/www.example.com/1.txt

A    /usr/local/apache2/htdocs/www.example.com/2.txt

A    /usr/local/apache2/htdocs/www.example.com/3.txt

取出版本 3。


==============================================

svn认证成功,同步认证信息会保存在apache虚拟目录 ./www.example.com/.svn/ 

注:这里同步的3个txt文件为版本库已保存数据


3.重启svn服务:

# killall svnserve

# /usr/local/svn/bin/svnserve -d -r /data/svndata/


四.svn客户端配置

(svn client)

1.下载TortoiseSVN,并默认安装

http://sourceforge.net/projects/tortoisesvn/files/latest/download?source=dlp

2.创建版本库:

例如:

1).在F盘创建work文件夹并右键选择SVN Checkout,创建svn客户端版本库

184759283.png


2).输入svn远程版本库URL,以及本地版本库存放路径


143505338.png

3).输入该版本库用户名密码,默认该账户信息明文保存在/data/svndata/www.example.com/conf/passwd内

143506888.png


4).创建版本库完成,显示为第一个版本

184802530.png

3.同步版本库

例如:在windows客户端版本库里有新的文件更新,如何将数据同步到web端

1).首先,右键该版本库www.example.com目录,选择svn Update

相当于将svn服务器端的数据同步更新到本地,即获取数据。

142511538.png


2).显示更新到第四个版本

142512110.png

3).右键该版本库www.example.com目录,选择svn Commit

相当于将本地客户端的数据同步提交到svn服务端,即推送数据。

142514918.png


4).将需要推送的数据打钩,OK即可完成操作.

142516565.png

5).显示目前为第五个版本

142517205.png

查看是否成功将文件推送到apache虚拟目录

# cd /usr/local/apache/htdocs

# pwd

# ls -l

143223795.png


---------大功告成-----------




     本文转自 showerlee 51CTO博客,原文链接:http://blog.51cto.com/showerlee/1240955,如需转载请自行联系原作者



相关文章
|
9月前
|
Linux 应用服务中间件 nginx
在CentOS上部署Minikube教程
至此,您已成功在CentOS上部署并使用Minikube。您可以自由探索Kubernetes的世界,熟练配置和管理Kubernetes集群。
870 20
|
Oracle 关系型数据库 MySQL
Centos7下图形化部署单点KFS同步工具并将Oracle增量同步到KES
Centos7下图形化部署单点KFS同步工具并将Oracle增量同步到KES
Centos7下图形化部署单点KFS同步工具并将Oracle增量同步到KES
|
存储 Linux 开发者
虚拟机centos7.9一键部署docker
本文介绍了如何在 CentOS 7.9 虚拟机上安装 Docker 社区版 (Docker-ce-20.10.20)。通过使用阿里云镜像源,利用 `wget` 下载并配置 Docker-ce 的 YUM 仓库文件,然后通过 `yum` 命令完成安装。安装后,通过 `systemctl` 设置 Docker 开机自启并启动 Docker 服务。最后,使用 `docker version` 验证安装成功,并展示了客户端与服务器的版本信息。文中还提供了列出所有可用 Docker-ce 版本的命令。
2824 0
虚拟机centos7.9一键部署docker
|
监控 应用服务中间件 nginx
详细解释容器以及虚拟机centos7.9容器化部署基础服务(容器化部署nginx)
容器是一种轻量级、可移植的软件打包和隔离技术,将应用程序及其依赖项打包,确保在任何环境中一致运行。容器共享主机操作系统内核,相比虚拟机更高效、轻量,具有快速启动和高资源利用率的特点。容器的关键技术包括命名空间(如 PID、NET 等)、控制组(cgroups)和联合文件系统(UnionFS)。使用容器可以提高开发和部署效率,简化管理,确保环境一致性。例如,在 CentOS 7.9 上部署 Nginx 时,可以通过 Docker 下载和运行 `nginx:1.20` 镜像,并通过端口映射使外部请求访问 Nginx 服务。此外,还可以将测试页面复制到容器中,进一步验证容器的功能。
451 0
|
4月前
|
人工智能 数据处理 API
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
Apache Flink Agents 是由阿里云、Ververica、Confluent 与 LinkedIn 联合推出的开源子项目,旨在基于 Flink 构建可扩展、事件驱动的生产级 AI 智能体框架,实现数据与智能的实时融合。
806 6
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
|
存储 Cloud Native 数据处理
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
本文整理自阿里云资深技术专家、Apache Flink PMC 成员梅源在 Flink Forward Asia 新加坡 2025上的分享,深入解析 Flink 状态管理系统的发展历程,从核心设计到 Flink 2.0 存算分离架构,并展望未来基于流批一体的通用增量计算方向。
456 0
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
|
6月前
|
SQL 人工智能 数据挖掘
Apache Flink:从实时数据分析到实时AI
Apache Flink 是实时数据处理领域的核心技术,历经十年发展,已从学术项目成长为实时计算的事实标准。它在现代数据架构中发挥着关键作用,支持实时数据分析、湖仓集成及实时 AI 应用。随着 Flink 2.0 的发布,其在流式湖仓、AI 驱动决策等方面展现出强大潜力,正推动企业迈向智能化、实时化的新阶段。
802 9
Apache Flink:从实时数据分析到实时AI
|
6月前
|
SQL 人工智能 API
Apache Flink 2.1.0: 面向实时 Data + AI 全面升级,开启智能流处理新纪元
Apache Flink 2.1.0 正式发布,标志着实时数据处理引擎向统一 Data + AI 平台迈进。新版本强化了实时 AI 能力,支持通过 Flink SQL 和 Table API 创建及调用 AI 模型,新增 Model DDL、ML_PREDICT 表值函数等功能,实现端到端的实时 AI 工作流。同时增强了 Flink SQL 的流处理能力,引入 Process Table Functions(PTFs)、Variant 数据类型,优化流式 Join 及状态管理,显著提升作业稳定性与资源利用率。
718 0
|
5月前
|
人工智能 运维 Java
Flink Agents:基于Apache Flink的事件驱动AI智能体框架
本文基于Apache Flink PMC成员宋辛童在Community Over Code Asia 2025的演讲,深入解析Flink Agents项目的技术背景、架构设计与应用场景。该项目聚焦事件驱动型AI智能体,结合Flink的实时处理能力,推动AI在工业场景中的工程化落地,涵盖智能运维、直播分析等典型应用,展现其在AI发展第四层次——智能体AI中的重要意义。
1921 27
Flink Agents:基于Apache Flink的事件驱动AI智能体框架
|
存储 人工智能 大数据
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
902 33
The Past, Present and Future of Apache Flink