网站内容自动更新(()更新代码到外网测试服(组图))
优采云 发布时间: 2022-02-04 01:03网站内容自动更新(()更新代码到外网测试服(组图))
颠覆概述
概述
Subversion,简称SVN,是一个开源的版本控制系统。与RCS和CVS相比,它采用了分支管理系统。
网站更新拓扑
安装网络服务器(Nginx)
轻微地
安装 svn 独立服务器 -----> 本地测试服务器
安装颠覆服务器
yuminstall subversion �Cy
创建存储库
mkdir -pv/work/svndatasvnadmin create /work/svndata/web
将 网站 目录导入仓库
export LANG="zh_CN.UTF-8"svn import/data/wwwroot/htdocs/ file:///work/svndata/web -m "import"
创建用户密码
cat >/work/svndata/web/conf/passwd admin =Leerw2015> EOFcat >/work/svndata/web/conf/authz admin = rw> EOFcat >/work/svndata/web/conf/svnserve.conf anon-access =none> auth-access =write> password-db =/work/svndata/web/conf/passwd> authz-db =/work/svndata/web/conf/authz> EOF
启动svn服务器
svnserve -d -r /work/svndata/
添加启动
echo"svnserve -d -r/work/svndata/" >> /etc/rc.local
配置自动同步的钩子脚本
vim/work/svndata/web/hooks/post-commit#!/bin/bash# Author by:Tommy.Gandolf#exportLANG="zh_CN.UTF-8"SVN_PATH=/usr/bin/svnWEB_PATH=/data/wwwroot/htdocsUSER_NAME=adminUSER_PASSWD=Leerw2015 $SVN_PATH checkout--username $USER_NAME --password$USER_PASSWD svn://127.0.0.1/web $WEB_PATH
添加执行权限
chmod +x /work/svndata/web/hooks/post-commit
设置SVN客户端自动细化Nginx网站目录
Windows下使用svn客户端
下载链接:
Linux下svn客户端的使用
yuminstall subversion �Cysvn checkout svn://172.16.100.106/website
本地测试服务器---->外网测试服务器
配置无密码登录以从本地到外部网络测试服务器
ssh-keygen -t rsassh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.100.105ssh172.16.100.105 'date'
如果能正常显示日志,证明配置OK
rsync 同步目录
假设本地测试OK,由于本地是内网环境,没有固定IP,目前需要同步到外网服务器,使用rsync远程同步目录
# rsync -avz /data/wwwroot/htdocs/ root@172.16.100.105:/data/wwwroot/htdocs_test/--exclude='.svn/' --exclude='.settings/' --exclude='.project'
# vim push.sh
脚本内容如下:
#!/bin/bash# Author by:Tommy.Gandolf# This script willpush local file to remote Server LOCAL_FILE=/data/wwwroot/htdocs/REMOTE_FILE=/data/wwwroot/htdocs_test/USER=rootREMOTE_IP=172.16.100.105rsync -avz $LOCAL_FILE$USER@$REMOTE_IP:$REMOTE_FILE --exclude='.svn/' --exclude='.settings/' --exclude='.project'
每次更新都OK了,只要执行:sh push.sh更新代码到外网测试服务器
实现外网测试服务器的更新---->官方服务器
WEB1
外网官方服务器(rsync服务器端)
安装 rsync
wget http://rsync.samba.org/ftp/rsync/src/rsync-3.1.0.tar.gztar zxvfrsync-3.1.0.tar.gzcd rsync-3.1.0./configure--prefix=/usr/make &&make install
创建配置文件
mkdir -p/etc/rsyncdcd /etc/rsyncd/touch rsyncd.conftouch rsyncd.secretstouch rsyncd.motdchmod 600 rsyncd.secretsvim rsyncd.confuid=nobodygid=nobodyuse chroot=nomax connections=10strict modes=yespid file=/var/run/rsyncd.pidlockfile=/var/run/rsyncd.locklogfile=/var/log/rsyncd.log[data1]path=/data/wwwroot/htdocsignore errorsread only=nowrite only=nohostsallow=172.16.100.0/24host deny=*list=nouid=rootgid=rootauth users=rootsecrets file=/etc/rsyncd/rsyncd.secretsecho"root:1q2w3e4r5t6y" > rsyncd.secretschown root:root rsyncd.secretschmod 600 rsyncd.secretscat rsyncd.motd +++++++++++++++++++++++++++++++++++++++++++++++++++######## WelCome To The Leerw.com SerVice! #######+++++++++++++++++++++++++++++++++++++++++++++++++++
启动 rsync 服务
/usr/bin/rsync--daemon --config=/etc/rsyncd/rsyncd.conf
WEB2
安装通过WEB1,唯一不同的是:
uid=nobodygid=nobodyuse chroot=nomax connections=10strict modes=yespidfile=/var/run/rsyncd.pidlock file=/var/run/rsyncd.locklogfile=/var/log/rsyncd.log[data2]path=/data/wwwroot/htdocs/ignore errorsread only=nowrite only=nohostsallow=172.16.100.0/24host deny=*list=nouid=rootgid=rootauth users=rootsecretsfile=/etc/rsyncd/rsyncd.secrets
外网测试服务器(rsync + inotify 客户端)
安装 rsync
wget http://rsync.samba.org/ftp/rsync/src/rsync-3.1.0.tar.gztar zxvfrsync-3.1.0.tar.gzcd rsync-3.1.0./configure--prefix=/usr/make &&make installmkdir -p/etc/rsyncdcd /etc/rsyncd/touch rsyncd.passwordecho"1q2w3e4r5t6y" > rsyncd.passwordchmod 600 rsyncd.passwordmkdir -pv/data/wwwroot/htdocs
安装 inotify-tools
rpm -ivh http://mirrors.hustunique.com/epel/6/x86_64/epel-release-6-8.noarch.rpmyum makecacheyum installinotify-tools inotify-tools-devel �Cy
自动同步脚本在后台运行【保证更新到测试服务器的代码的正确性】
vim /root/rsync_auto.sh#!/bin/bash# Author by:Tommy.Gandolf#HOST1=172.16.100.100HOST2=172.16.100.105SRC=/data/wwwroot/htdocs/DST1=data1DST2=data2USER=root/usr/bin/inotifywait-mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -emodify,delete,create,attrib $SRC | whileread read date time dir files; do /usr/bin/rsync -vzrtopg --delete --progress--password-file=/etc/rsyncd/rsyncd.secrets $SRC $USER@$HOST1::$DST1 --exclude='.svn/' --exclude='.settings/'--exclude='.project' /usr/bin/rsync -vzrtopg --delete --progress--password-file=/etc/rsyncd/rsyncd.secrets $SRC $USER@$HOST2::$DST2 --exclude='.svn/' --exclude='.settings/'--exclude='.project' echo "${files} was rsynced">>/tmp/rsync.log 2>&1done# chmod +x rsync_auto.sh# nohup sh rsync_auto.sh & > /dev/null
备注:如果同步目录内容相同,无法触发同步,请先在同步目录下创建文件,尝试触发同步文件。
手动同步脚本【推荐此方案】
说明:测试OK,手动推送到官方服务器
# vim rsync.sh#!/bin/bash# Author by:Tommy.Gandolf#HOST1=172.16.100.100HOST2=172.16.100.105SRC=/data/wwwroot/htdocs/DST1=data1DST2=data2USER=root /usr/bin/rsync -vzrtopg --delete --progress--password-file=/etc/rsyncd/rsyncd.secrets $SRC $USER@$HOST1::$DST1 --exclude='.svn/' --exclude='.settings/'--exclude='.project' /usr/bin/rsync -vzrtopg --delete --progress--password-file=/etc/rsyncd/rsyncd.secrets $SRC $USER@$HOST2::$DST2 --exclude='.svn/' --exclude='.settings/'--exclude='.project' echo "${files} was rsynced">>/tmp/rsync.log 2>&1
配置内核参数
Inotify 默认内核参数值太小
默认参数:
# sysctl -a | grep max_queued_eventsfs.inotify.max_queued_events = 16384# sysctl -a | grep max_user_watchesfs.inotify.max_user_watches = 8192fs.epoll.max_user_watches= 148131# sysctl -a | grep max_user_instancesfs.inotify.max_user_instances = 128修改:vim /etc/sysctl.conffs.inotify.max_queued_events = 99999999fs.inotify.max_user_watches = 99999999fs.inotify.max_user_instances = 65535# sysctl -p
常问问题
Rsync的常见用法
1.同步本地机器上的两个目录
rsync -zvr /data/wwwroot/htdocs/ /tmp/
参数:-z 启用压缩,-v 详细输出。Cr 表示递归。Ca 保留时间戳
2.只同步一个文件
rsync -azvr /data/wwwroot/htdocs/test.txt /tmp/
3.从本地同步到远程
rsync -avz /data/wwwroot/htdocs/ root@172.16.100.105:/data/wwwroot/htdocs_test/
4.同步远程到本地
rsync -avz root@172.16.100.105:/root/cpu.sh/root/
5.同步是指定远程shell
rsync -avz -e ssh root@172.16.100.105:/tmp/root/push.sh
6.不要覆盖修改后的目标文件
rsync -avzu -e sshroot@172.16.100.105:/root/cpu.sh /tmp/
7.只同步目录(不是文件)
rsync -v -d /tmp/ root@172.16.100.105:/tmp/
8.查看文件传输进度
rsync -v --progress -d /tmp/ root@172.16.100.105:/tmp/
9.删除目标文件夹中创建的文件
rsync -avz --delete /tmp/ root@172.16.100.105:/tmp/
10.查看源文件和目标文件之间的变化
-参数:-i
rsync -avzi /tmp/ root@172.16.100.105:/tmp/
11.查看源和目标之间的变化
rsync -avzi /tmp/ root@172.16.100.105:/tmp/
f 表示这是一个文件
d 表示这是一个目录
s 表示大小改变
t 时间戳更改
o 用户已更改
g 用户组已更改
12.在传输中启用数据包收录和排除模式
rsync -avz --exclude='.svn/'/tmp/ root@172.16.100.105:/tmp/
13.不要传输大文件
rsync -avz --max-size='100K' /tmp/ root@172.16.100.105:/tmp/
14.传输所有文件
无论文件是否已更改,重新传输所有文件。连续波参数
rsync -avzW--max-size='100K' /tmp/ root@172.16.100.105:/tmp/
结尾
本文来自“大叔城管实习生”博客,请保留此出处