总体如下图
svn服务器也是程序的开发测试服务器,文件分发服务器从svn服务器上拿到文件然后分发到线上各个web服务器(具体视公司服务器架构而定)。
##svn服务器的搭建##
##svn服务器的搭建##
在这里模拟开发测试环境(依据实际情况不同),测试后需要分发的文件都提交的svn服务器上,由文件分发服务器来取然后分发到各个在线服务器。
yum -y install xinetd
yum -y install subversion
cd /etc/xinetd.d
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
}
{
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/conf
svnadmin create /opt/svnroot/www.gaby.com
cd /opt/svnroot/www.gaby.com/conf
vim svnserve.conf ,修改如下内容
anon-access = none
auth-access = write
password-db = passwd
#authz-db = authz
realm = My First Repository
auth-access = write
password-db = passwd
#authz-db = authz
realm = My First Repository
ps:#authz-db = authz这项不要开,不然会报认证失败错误
vim passwd ,修改如下内容
vim passwd ,修改如下内容
[users]
# harry = harryssecret
# sally = sallyssecret
gaby = redhat
# harry = harryssecret
# sally = sallyssecret
gaby = redhat
然后执行下面两条命令
chmod 400 passwd
service xinetd restart
service xinetd restart
###同步分发服务器设置###
yum -y install xinetd
yum -y install rsync
yum -y install subversion
cd /etc/xinetd.d
yum -y install rsync
yum -y install subversion
cd /etc/xinetd.d
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
}
{
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
分发同步脚本(可以根据实际情况,进行不同修改)
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.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
把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
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
回滚
./upload.sh gaby html -r n
./upload.sh gaby html -r n
(n表示版本号)
###web上rsync客户端配置###
yum -y install xinetd
yum -y install rsync
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
}
{
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 = gaby
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 = gaby
vim /etc/rsyncd.pwd添加如下内容
gaby:redhat
chmod 400 /etc/rsyncd.pwd
到此一个完整的同步分发加版本控制应用实现。
转载于:https://blog.51cto.com/angus717/853593