3----svn版本控制部署+分发机

上图为web代码上线流程:
1,研发人员上传代码至内网svn
2,运维人员从内网svn拉取代码上传至外网svn
3,代码更改触发钩子脚本传至分发机
4,分发机部署rsync服务端
5,web1和web2可以使用计划任务去rsync服务端拉取代码

部署说明:
1,本文只部署外网svn+分发机rsync+web拉取
2,采用 svn+apache

192.168.9.168   Centos6.5 apache+svn+分发机rsync
192.168.9.176   Centos6.5 web1
前期准备:
机器初始化,见初始化文章
svn机器限制公司ip访问,rsync都走内网同步
[[email protected] ~]# vim /etc/sysconfig/iptables

# Generated by iptables-save v1.4.7 on Tue May 23 19:12:38 2017
*filter
:INPUT ACCEPT [2:80]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1:140]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -s 1.1.1.1 -m state --state NEW -m tcp -p tcp -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10050 -j ACCEPT
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -s 192.168.9.0/24 -m state --state NEW -m tcp -p tcp -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
#
COMMIT

[[email protected] ~]# service iptables start
[[email protected] ~]# chkconfig iptables on

一,安装apache+svn
1,安装apache
查看系统是否安装apr和apr-util包
[[email protected] ~]# rpm -qa | grep apr
[[email protected] ~]# rpm -qa | grep apr-util

有则卸载,无则跳过(系统自带影响apache使用)
[[email protected] ~]# rpm -e --allmatches apr-util --nodeps  
[[email protected] ~]# rpm -e --allmatches apr --nodeps

安装依赖包
[[email protected] ~]# yum install gcc -y

源码包下载
[[email protected] ~]# cd /usr/local/src/
[[email protected] src]# wget -c  http://mirror.bit.edu.cn/apache/apr/apr-1.5.2.tar.gz    
[[email protected] src]# wget -c  http://mirror.bit.edu.cn/apache/apr/apr-util-1.5.4.tar.gz
[[email protected] src]# wget -c http://mirror.bit.edu.cn/apache/httpd/httpd-2.4.18.tar.gz
[[email protected] src]# wget -c http://www.openssl.org/source/openssl-1.0.1k.tar.gz
[[email protected] src]# wget -c http://mirrors.hust.edu.cn/apache/subversion/subversion-1.9.3.tar.gz
[[email protected] src]# wget -c ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz

安装apr、apr-util
[[email protected] src]# tar zxvf apr-1.5.2.tar.gz
[[email protected] src]# cd apr-1.5.2
[[email protected] apr-1.5.2]# ./configure --prefix=/usr/local/apr
[[email protected] apr-1.5.2]# make
[[email protected] apr-1.5.2]# make install
[[email protected] apr-1.5.2]# ./apr-1-config --version
1.5.2

[[email protected] apr-1.5.2]# cd /usr/local/src/
[[email protected] src]# tar zxvf apr-util-1.5.4.tar.gz 
[[email protected] src]# cd apr-util-1.5.4
[[email protected] apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
[[email protected] apr-util-1.5.4]# make
[[email protected] apr-util-1.5.4]# make install
[[email protected] apr-util-1.5.4]# ./apu-1-config --version
1.5.4

安装pcre
[[email protected] src]# tar zxvf pcre-8.38.tar.gz
[[email protected] src]# cd pcre-8.38
[[email protected] pcre-8.38]# ./configure --prefix=/usr/local/pcre
[[email protected] pcre-8.38]# make 
[[email protected] pcre-8.38]# make install

安装apache
[[email protected] src]# tar zxvf httpd-2.4.18.tar.gz
[[email protected] httpd-2.4.18]# ./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-so --enable-dav --enable-maintainer-mode --enable-rewrite --enable-ssl --with-pcre=/usr/local/pcre/
[[email protected] httpd-2.4.18]# make
[[email protected] httpd-2.4.18]# make install

安装sqlite
[[email protected] src]# wget -c http://www.sqlite.org/2016/sqlite-autoconf-3110100.tar.gz
[[email protected] src]# tar zxvf sqlite-autoconf-3110100.tar.gz
[[email protected] src]# mv sqlite-autoconf-3110100 sqlite
[[email protected] src]# mv sqlite /usr/local/
[[email protected] src]# cd /usr/local/sqlite/
[[email protected] sqlite]# ./configure
[[email protected] sqlite]# make 
[[email protected] sqlite]# make install

2,安装svn
[[email protected] src]# tar zxvf subversion-1.9.3.tar.gz
[[email protected] src]# cd subversion-1.9.3
[[email protected] subversion-1.9.3]# mkdir -p ./sqlite-amalgamation
[[email protected] subversion-1.9.3]# cp /usr/local/sqlite/sqlite3.c ./sqlite-amalgamation/
[[email protected] subversion-1.9.3]# ./configure --prefix=/usr/local/subversion --with-apxs=/usr/local/apache/bin/apxs --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --with-zlib --enable-maintainer-mode
[[email protected] subversion-1.9.3]# make
[[email protected] subversion-1.9.3]# make install
[[email protected] ~]# /usr/local/subversion/bin/svnserve --version
svnserve,版本 1.9.3 (r1718519)
   编译于 Mar 20 2016,13:09:32 在 x86_64-unknown-linux-gnu
[[email protected] ~]# ls /usr/local/subversion/libexec/
mod_authz_svn.so  mod_dav_svn.so

3,svn和apache整合
配置subversion
创建版本库
[[email protected] ~]# mkdir -p /data0/svn
[[email protected] ~]# /usr/local/subversion/bin/svnadmin create /data0/svn/showyw
[[email protected] ~]# useradd svn -s /sbin/nologin 
[[email protected] ~]# chown -R svn.svn /data0/svn/showyw
htpasswd生成访问控制文件
[[email protected] ~]# /usr/local/apache/bin/htpasswd -c /data0/svn/conf/.htpasswd svnadmin
New password: 
Re-type new password: 
Adding password for user admin
[[email protected] ~]# /usr/local/apache/bin/htpasswd  /data0/svn/conf/.htpasswd test
New password: 
Re-type new password: 
Adding password for user test
编辑authz
[[email protected] ~]# grep -v ‘^#‘  /data0/svn/conf/authz  | grep -v ‘^$‘
[groups]
admin = svnadmin
yw = test
#######################################################
[showyw:/]
@admin = rw
@yw = r
配置apache
[[email protected] ~]# cd /usr/local/apache/
[[email protected] apache]# cp /usr/local/subversion/libexec/mod_authz_svn.so ./modules/
[[email protected] apache]# cp /usr/local/subversion/libexec/mod_dav_svn.so ./modules/
[[email protected] ~]# vim /usr/local/apache/conf/httpd.conf
更改用户:
User svn
Group svn
在LoadModules的末端,加上
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
然后在配置末尾加上
<Location /svn>
  DAV svn
  SVNParentPath /data0/svn/  #SVN仓库的父目录
  SVNListParentPath On
  SVNAutoversioning On
  SVNReposName "repos"
  AuthzSVNAccessFile /data0/svn/conf/authz  #前面生成的访问控制文件
  AuthType Basic
  AuthName "hello,welcome to my repos!"
  AuthUserFile /data0/svn/conf/.htpasswd  #用户文件
  Require valid-user
</Location>
检查语法
[[email protected] ~]# /usr/local/apache/bin/apachectl -t
启动并查看是否启动成功
[[email protected] ~]# /usr/local/apache/bin/apachectl -k start
[[email protected] ~]# ps auxf | grep apache
root     27995  0.0  0.1 228808  4920 ?        Ss   13:50   0:00 /usr/local/apache/bin/httpd -k start
www      27996  0.0  0.0 228556  2740 ?        S    13:50   0:00  \_ /usr/local/apache/bin/httpd -k start
www      27997  0.0  0.0 507768  3964 ?        Sl   13:50   0:00  \_ /usr/local/apache/bin/httpd -k start
www      27999  0.0  0.0 507768  3968 ?        Sl   13:50   0:00  \_ /usr/local/apache/bin/httpd -k start
www      28001  0.0  0.0 507768  3972 ?        Sl   13:50   0:00  \_ /usr/local/apache/bin/httpd -k start
[[email protected] ~]# netstat -anptu | grep 80
tcp        0      0 :::80                       :::*                        LISTEN      27995/httpd 
测试:
http://127.0.0.1/svn/showyw 

4,钩子脚本
[[email protected] ~]# vim post-commit

#!/bin/sh

#REPOS="$1"
#REV="$2"
Log="/data0/logs/svn"

chown -R svn /data0/web_root/web
/usr/local/subversion/bin/svn update /data0/web_root/web/ >> ${Log}/web-svn.log

if [ $? == 0 ]
then
  echo "----------------------------------" >> ${Log}/web-svn-update.log 2>&1
  echo "START:`date +‘%F %T‘`" >> ${Log}/web-svn-update.log 2>&1

  /bin/bash /data0/svn/bin/web-update.sh

  echo "END:`date +‘%F %T‘`" >> ${Log}/web-svn-update.log 2>&1
  echo "----------------------------------" >> ${Log}/web-svn-update.log 2>&1
fi

[[email protected] ~]# vim /data0/svn/bin/web-update.sh
#!/bin/bash
#client-->server

IP="127.0.0.1"
Auth_module="showyw"
Localdir="/data0/web_root/showyw"

/usr/bin/rsync -rutz --progress --exclude-from=/data0/svn/bin/exclude.list --delete ${Localdir} $IP::$Auth_module

[[email protected] ~]# cat /data0/svn/bin/exclude.list
.svn
**.gz
branches
docs
tags
.log

二、分发机rsync服务端
分发机rsync配置文件
[[email protected] ~]# vim /etc/rsyncd.conf
#list=yes
uid=root
gid=root
max connections=100
log file=/data0/logs/rsync/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsync.lock
hosts deny=*

############################
[showyw]
path=/data/web_root/showyw
comment=show
#ignore errors
read only=no
hosts allow=192.168.9.176 127.0.0.1 192.168.9.168

#/usr/bin/rsync --daemon --config=/etc/rsyncd.conf

三、web1机器rsync客户端拉取代码计划任务
[[email protected] ~]# crontab -l
/1 * * * * /bin/sh /home/maintain/crontab_rsync.sh > /dev/null 2>&1

[[email protected] ~]# cat  /home/maintain/crontab_rsync.sh 
#!/bin/sh
echo "showyw==================">>/data0/logs/rsync/rsync.error
date>>/data0/logs/rsync/rsync.error
/usr/bin/rsync -vaz --progress [email protected]::showyw /data0/web_root/showyw 2>>/data0/logs/rsync/rsync.error
时间: 2024-12-18 14:35:56

3----svn版本控制部署+分发机的相关文章

搭建SVN,部署社交网站

概述: 社交网站的第一个版本部署在LNMP平台之上,前段为Nginx服务器,通过fastcgi协议访问后端的PHP服务器.为了保证数据安全,要求搭建MySQL数据库主从集群. 项目介绍: 本项目案例结合SVN.LNMP和MySQL三种环境,部署一个社交网站,本社交网站采用PHP语言开发,搭建SVN服务器进行版本控制和集中管理PHP程序员开发的代码,以Nginx作为前端服务器,通过fastcgi协议访问后端的PHP服务器,调用PHP页面:为保证数据安全,搭建MySQL主从复制环境存储用户重要数据:

取消svn版本控制

http://www.cnblogs.com/lmllouk/archive/2010/10/11/1847649.html 删除项目中的版本控制,即删除项目文件夹下的所有.svn文件夹(在做项目的时候,有时候想把项目拷回去看看,但是文件太大了,而且压缩起来很慢.这主要是因为在项目中有大量的.svn文件夹.所以才想把.svn删除). 操作很简单,把下面的命令保存至文本文件中,然后把文本文件的后缀名改成"reg",即xxx.reg.执行此文件,完成后在你项目文件夹上点击鼠标右键,就可以看

搭建SVN版本控制服务器

搭建SVN版本控制服务器 一:实验目标 实战:搭建svn服务器+ apache版本控制服务器  二:实验环境                  系统版本: rhel-server-6.5-x86_64-dvd SVN+apache服务端:xuegod63.cn IP:192.168.1.63 客户端:xuegod64.cn IP:192.168.1.64 服务概述:     由于各个公司所对服务的需求不同,会安装各种不同版本的服务软件,所以管理起来会很困难.在此环境中,会出现代码冲突,项目不同版

apache下 使用svn自动部署代码

碰到一个问题 svn不能ftp ftp又不能svn有没有一个办法把两个联系起来呢? 其实不需要svn自带的hooks(钩子)功能足以满足你得需求 svn配置和设置可以网上直接找到.直接说怎么配置自动同步功能.在svn的目录下 /www/svn/repos/hooks  有的文件 post-commit.tmpl 这个就是需要修改的文件也就是在svn有commit的时候我们需要做的 1.设置需要更新的目录 直接在配置好的首页对应的目录里面checkout一下 2.修改 post-commit.tm

eclipse下安装和使用svn版本控制[详细图解]

eclipse下安装和使用svn版本控制[详细图解]

手把手教你如何使用svn版本控制工具

废话不多说,今天小编手把手教你使用svn版本控制工具,包括服务端和客户端的配置. 下载连接: 一.首先配置服务端: 1 安装服务端软件 如上图msi文件安装. 安装完成后,打开命令提示符 输入 svn  如下则成功,如不成功,则需在环境变量 path中配置svn安装文件bin目录 2 使用命令提示符创建仓库  如下表示 在e盘根目录 创建 名为 aa 的仓库 3 修改仓库中的配置文件: a  在svnserve.conf中修改password_db位置如图: b  在password文件中指定连

SVN版本控制推荐使用方法

SVN版本控制推荐使用方法 flyfish 2015-7-29 因为SVN的使用比较灵活,这里只是推荐使用的一种方式 目录结构 trunk/ branches/ tags/ 在branches中有按照每个人名字命名的文件夹,当做好自己的任务之后合并到trunk 发布时从trunk的中创建tag tags +release1.0(copy from trunk) 修复Bug 在使用软件的过程发现1.0版本有bug,需要修复,从tag的release1.0中创建branch  branches +

SVN版本控制与分支设置

原文来自http://blog.sina.com.cn/s/blog_56d8ea900100y9cf.htmlSVN版本控制与分支设置 (2011-10-18 09:54:36) 转载▼   分类: 开发辅助 使用SVN+Eclipse做软件版本控制. (2009年5月) 1,SVN目录结构 Trunk : 主干目录,此目录下的文件为基准文件Branches : 用于开发的分支目录Tags : 用于发布的版本目录 下图是基于eclipse svn repositores查看的目录结构 (图片1

SVN迁移部署

迁移svn并修改目录结构的方法 http://blog.csdn.net/jianxin1009/article/details/8220461 测试成功的命令: svnadmin –parent-dir 子目录  版本库路径 <dump文件 常用svn命令: http://blog.csdn.net/wzq9706/article/details/7319728 SVN版本控制与分支设置: http://blog.sina.com.cn/s/blog_56d8ea900100y9cf.html