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,如需转载请自行联系原作者



相关文章
|
1月前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
60 19
|
1月前
|
应用服务中间件 Linux nginx
部署使用 CHAT-NEXT-WEB 基于 Deepseek
本文介绍如何在阿里云轻量服务器上部署基于 `Deepseek` 的 `CHAT-NEXT-WEB` 项目。首先,准备一台 Linux 服务器并安装 Docker,确保防火墙允许特定端口访问。接着,通过阿里云容器镜像服务解决国内网络限制问题,将镜像推送到私有仓库并拉取到本地。配置并启动 `chat-next` 项目,使用 Deepseek API 进行优化。最后,安装 Nginx 和 Certbot 配置 HTTPS 访问,确保安全性和自动续签。整个过程需严格遵循官方文档,以避免因网络问题导致的安装失败。
|
24天前
|
SQL 分布式计算 Apache
Apache Doris 3.0.4 版本正式发布
该版本持续在存算分离、湖仓一体、异步物化视图等方面进行改进提升与问题修复
|
2月前
|
SQL 存储 分布式计算
Apache Doris 2.1.8 版本正式发布
该版本持续在湖仓一体、异步物化视图、查询优化器与执行引擎、存储管理等方面进行改进提升与问题修复,进一步加强系统的性能和稳定性,欢迎大家下载体验。
|
5月前
|
前端开发 Java API
Apache Seata(incubating) 首个版本重磅发布!
2.1.0 是 Seata 进入 Apache 基金会的第一个 Release Version。此次发布将 io.seata 包名更改为 org.apache.seata。除了按原有的 Roadmap 技术演进外,2.1.0 进行了大量兼容性工作,实现了 API、数据和协议的兼容。用户无需修改原有的 API 和配置,即可实现到 Apache 版本的平滑升级。
167 20
Apache Seata(incubating) 首个版本重磅发布!
|
4月前
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。
329 10
|
3月前
|
SQL 存储 Apache
Apache Doris 3.0.3 版本正式发布
亲爱的社区小伙伴们,Apache Doris 3.0.3 版本已于 2024 年 12 月 02 日正式发布。该版本进一步提升了系统的性能及稳定性,欢迎大家下载体验。
|
4月前
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
4月前
|
SQL 存储 Java
Apache Doris 2.1.7 版本正式发布
亲爱的社区小伙伴们,**Apache Doris 2.1.7 版本已于 2024 年 11 月 10 日正式发布。**2.1.7 版本持续升级改进,同时在湖仓一体、异步物化视图、半结构化数据管理、查询优化器、执行引擎、存储管理、以及权限管理等方面完成了若干修复。欢迎大家下载使用。
|
5月前
|
存储 SQL 缓存
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
从 3.0 系列版本开始,Apache Doris 开始支持存算分离模式,用户可以在集群部署时选择采用存算一体模式或存算分离模式。基于云原生存算分离的架构,用户可以通过多计算集群实现查询负载间的物理隔离以及读写负载隔离,并借助对象存储或 HDFS 等低成本的共享存储系统来大幅降低存储成本。
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化