您的位置:首页 > 其它

生产环境中版本控制和文件分发

2012-05-05 17:25 302 查看
总体如下图


svn服务器也是程序的开发测试服务器,文件分发服务器从svn服务器上拿到文件然后分发到线上各个web服务器(具体视公司服务器架构而定)。
##svn服务器的搭建##
在这里模拟开发测试环境(依据实际情况不同),测试后需要分发的文件都提交的svn服务器上,由文件分发服务器来取然后分发到各个在线服务器。yum -y install xinetd
yum -y install subversion
cd /etc/xinetd.d vim subversion ,添加如下内容
service svn
{
disable = no
port = 3690
socket_type = stream
protocol = tcp
wait = no
user = svn
server = /usr/bin/svnserve
server_args = -i -r /opt/svnroot
}
建立svn仓库
mkdir -p /opt/svnroot
svnadmin create /opt/svnroot/www.gaby.com
cd /opt/svnroot/www.gaby.com/confvim svnserve.conf ,修改如下内容
anon-access = none
auth-access = write
password-db = passwd
#authz-db = authz
realm = My First Repositoryps:#authz-db = authz这项不要开,不然会报认证失败错误
vim passwd ,修改如下内容
[users]
# harry = harryssecret
# sally = sallyssecret
gaby = redhat然后执行下面两条命令
chmod 400 passwd
service xinetd restart###同步分发服务器设置###yum -y install xinetd
yum -y install rsync
yum -y install subversion
cd /etc/xinetd.dvim rsync,修改内容如下service rsync
{
disable = no
flags = IPv6
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
设置rsync密码文件
vim /etc/rsyncd.pwd,添加redhat注意,rsync服务器端只需要一个密码文件,并且密码文件里不能有用户账户如果写成gaby:redhat会报如下错误(@ERROR: auth failed on module gabyhtml
rsync error: error starting client-server protocol (code 5) at main.c(1530) [sender=3.0.6]
),权限是600
service xinetd restart
分发同步脚本(可以根据实际情况,进行不同修改)wwwdir=/data0/htdocs/www/www.gaby.com
website="192.168.2.100"
[ $1 = gaby ] || exit 10
[ $2 = html ] || exit 11
if [[ $3 = -r ]];then
#回滚功能
svn up $3 $4 $svndir --username gaby --password redhat
svn export --force $svndir $wwwdir
chown -R www:www $wwwdir
chmod -R 700 $wwwdir
find /data0/htdocs/www/*gaby.com -name "Thumbs.db" -exec rm -rf {} \;
else
svn up $svndir --username gaby --password redhat
svn export --force $svndir $wwwdir
chown -R www:www $wwwdir
chmod -R 700 $wwwdir
find /data0/htdocs/www/*gaby.com -name "Thumbs.db" -exec rm -rf {} \;
fi
for I in $website;do
rsynchtml=gaby@$website::gabylinuxhtml
rsync -avz --delete --password-file=/etc/rsyncd.pwd $svndir/ $rsynchtml
echo "the sever $website is rsynced."
done注意为了使这个分发脚本正常运行,需要做下面工作website="192.168.2.65" ,有多台服务器只需要把ip添加到这里website="192.168.2.100,192.168.2.101"
把svn的内容拿的本地来/data0/htdocs/svn.www
mkdir -p /data0/htdocs/svn.www
mkdir -p /data0/htdocs/www/www.gaby.com
svn co svn://192.168.2.65/www.gaby.com --username gaby --password redhat脚本使用方法如下:更新
./upload.sh gaby html回滚
./upload.sh gaby html -r n(n表示版本号)###web上rsync客户端配置###yum -y install xinetd
yum -y install rsync
vim rsync,修改内容如下service rsync
{
disable = no
flags = IPv6
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
设置rsync配置文件和密码文件
vim /etc/rsyncd.conf 添加如下内容uid=root
gid=root
max connections=4
use chroot=no
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
#auth users=root
secrets file=/etc/rsyncd.pwd

[gabyhtml]
path=/www/www.gaby.com
#comment =
ignore errors
read only = no
list = no
auth users = gabyvim /etc/rsyncd.pwd添加如下内容gaby:redhatchmod 400 /etc/rsyncd.pwd到此一个完整的同步分发加版本控制应用实现。

本文出自 “面对自己” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: