rsync + git发布项目
前言:
更新项目的时候需要将更改的文件一一上传,这样比较麻烦,用版本控制器git +rsync 搭建一个发布服务器,以后发布文件非常方便
首先说下,我这边的更新流程,本地写完之后,git push 到测试服,测试服测试完毕,运行脚本rsync.sh(此脚本先将代码 git pull到测试服,再rsync传到正式服,正常情况肯定不会pull 完直接提交到正式服,我只是模拟的情况,我这边的测试服当做临时服务器,正式服当做测试服)
搭建步骤:
安装需求:
服务器说明:
本地电脑:local
测试服:test
正式服:online
架构说明:
1、本地local写完代码之后,push
2、测试服test pull,进行测试
3、 次测试没问题,rsync到服务器online
优势:
1、用户rsync提交文件很快,比自己上传快
2、rsync会自行比对文件,一样的不会再次上传
3、rsync是可以添加忽略文件的
安装流程:
搭建git:
可以参考我博客的git搭建教程
安装rsync
需要安装rsync服务端和客户端,服务端和客户端安装流程一样,不过服务器多一个配置
1、安装rsync客户端:
①下载rsync安装包
可以到https://rsync.samba.org/ftp/rsync/ 去下载安装包,解压之后进行安装
# tar -zxvf rsync-3.1..tar.gz
# cd rsync-3.1.
# ./configure --prefix=/usr/local/rsync
# make && make install
客户端到此就安装结束了,很简单
2、安装rsync服务端
和上面步骤一样,先安装,安装完之后,进行如下操作
# cd /usr/local/rsycn/
# mkdir etc
# cd etc
# vim rsyncd.conf
配置内容如下:(特别注意的是你们如果复制我的conf ,最好吧# 注释去掉,我之前加#出错了,我服务器配置没有#,#注释是写博客加的)
pid file = /var/run/rsync.pid
lock file=/var/run/rsync.lock
address = 0.0.0.0 #这个是rsync服务监听地址,我填的是所有,你们可以填写自己服务器的IP
port =
uid = root
gid = root
use chroot = no
read only = no
max connections =
motd file = /usr/local/rsync/etc/rsyncd.motd
log file = /var/log/rsync.log
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout =
[wechat]#这个是目录别名,下面是目录配置这个在使用rsync传输的时候用的到,就是你想传达哪个目录
path = /data/wwwroot/wechat_center/
[yiiadmin] # 和上面的wechat一样,这个可以配置多个
path = /data/wwwroot/wechatadmin/
list = yes
list = yes
ignore errors
comment = demo
secrets file = /usr/local/rsync/etc/rsync-demo.password # 密码文件
创建相关文件 、# vim /usr/local/rsync/etc/rsyncd.motd
内容随便写,这个是客户端连接上来之后给的提示 、secret 文件
# vim /usr/local/rsync/etc/rsync-demo.password
格式是 账号:密码 如
# root:
修改密码文件的权限
# chmod /usr/local/rsync/etc/rsync-demo.password
上述配置完成之后,启动服务
# /usr/local/rsync/bin/rsync --daemon --config /usr/local/rsync/etc/rsyncd.conf
可以查看873端口情况
传输文件测试
将本地文件夹/home下的文件,传输到刚刚配置文件 wechat的下面
#rsync --password-file=/usr/local/rsync/etc/rsync-demo.password -zarv /home/ rsync@X.X.X.X::wechat
总结:
到此就搭建结束了,文末再附上我的rsync.sh 脚本(我传的是PHP文件,有个校验流程,你们不是PHP的可以删除那段代码)
#!/bin/bash
dir_path="/home/wwwroot/wechatadmin/"
remote_path="106.14.18.151/yiiadmin" cd "$dir_path" && git pull >& >/dev/null
rsync_option=-avn
already_execute=
if [ $# -eq ];then
case "$1" in
execute)
already_execute=
rsync_option=-av
esac
fi file_list=`rsync "$rsync_option" "$dir_path" rsync://"$remote_path" --exclude-from="/home/caol/exclude_yii.list" --delete`
echo "传输的文件为:"
echo "$file_list" echo "开始校验文件"
for i in $file_list
do
if [[ $i =~ ".php" ]]&&[ -f $dir_path$i ];then
phpl_res=`php -l $dir_path$i`
is_normal=`echo "$phpl_res" | grep "No syntax errors"`
if [ ! -n "$is_normal" ];then
echo "$dir_path$i语法错误,请调整代码"
exit
fi
fi
done echo "开始传输"
rsync --password-file=/usr/local/rsync/etc/rsync-demo.password -zarv $dir_path rsync://"$remote_path" --exclude-from="/home/caol/exclude_yii.list" --delete
rsync + git发布项目的更多相关文章
- Eclipse配置Git发布项目到Github
很牛叉的博客http://blog.csdn.net/luckarecs/article/details/7427605 一.安装插件 菜单栏Help --> Install New Softw ...
- Eclipse使用git发布项目到github
因为一直都在使用svn,今天尝试了下git,记录下来既是方便自己以后查看,也是分享一些经验! 废话不多说,撸起袖子就是干!!! 1.选中要上传的项目右键 2.选中git 3.在图上打钩,点击所要上传的 ...
- VS2013中使用git发布解决方案master分支的时候出现错误
VS2013GIT基础用法请自行参考:不会Git命令,照样玩转Git 环境:VS2013+ 码云错误描述:在VS2013中使用git发布解决方案master分支的时候出现“无法将本地分支 master ...
- 如何在Android Studio中使用Gradle发布项目至Jcenter仓库
简述 目前非常流行将开源库上传至Jcenter仓库中,使用起来非常方便且易于维护,特别是在Android Studio环境中,只需几步配置就可以轻松实现上传和发布. Library的转换和引用 博主的 ...
- 前端MVC Vue2学习总结(七)——ES6与Module模块化、Vue-cli脚手架搭建、开发、发布项目与综合示例
使用vue-cli可以规范项目,提高开发效率,但是使用vue-cli时需要一些ECMAScript6的知识,特别是ES6中的模块管理内容,本章先介绍ES6中的基础与模块化的内容再使用vue-cli开发 ...
- 使用Git将项目托管到码云及从码云导入项目到本地
前言 码云+Git+IntellJ IDEA 欢迎转载,请注明作者和出处哦☺ Git 的安装及使用的教程 最好不要在官网下载,官网下载要vpn而且速度还很慢 . 推荐在 https://gi ...
- android studio发布项目到github
点击file setting ,打开对话框,如下,判断git是否安装成功 选择GitHub,填写github地址及密码 发布项目:
- 简单使用shell 自动打包,发布项目 脚本
(1)打包,发布脚本 deploy.sh packagepath=/home/admin/testProject/project application=testProject mkdir -p $p ...
- git配置项目
1.下载安装完git 2.在git oschina上发布项目 3.管理-公匙管理 4.git上面生成公匙 $ cat ~/.ssh/id_rsa.pub 5.将公匙复制进 git oschina 管理 ...
随机推荐
- 如何在smarty模板中执行php代码
Smarty模板主要的目的是分离逻辑层和表现层,所以在模板中不应该包含逻辑部分,逻辑层也不应该含有HTML.要在模板中插入逻辑程序的这种做法"非常"不被推荐,在你的case中. 如 ...
- Tomcat实现Session共享
一个Tomcat中有多一个web应用,然后想共享session,只需在host中加上 <Valve className="org.apache.catalina.authenticat ...
- PHP运行机制
PHP运行机制: 访问html文件:访问的域名à解析成IP地址(hosts文件,dns)à找到服务器àapache拿到html文件à返回给浏览器à浏览器解析html内容 访问php文件:apache拿 ...
- Spring-cloud之Ribbon负载均衡的使用及负载均衡策略配置(与Eurka配合使用)
什么是Ribbon,ribbon有什么用,个人先总结一下(不正确请提出讨论):Ribbon是基于客户端的负载均衡器,为我们提供了多样的负载均衡的方案,比如轮询,最小的并发请求的server,随机ser ...
- maven课程 项目管理利器-maven 3-4 eclipse安装maven插件和新建maven项目
本节主要讲了两个主要内容, 1 eclipse安装maven插件 2 新建maven项目 3 本人实操 1 eclipse安装maven插件 eclipse4.0以上和myec ...
- intellijidea课程 intellijidea神器使用技巧 4-2 抽取
1 抽取变量 Ctrl alt V 抽取变量 Ctrl alt C 抽取静态变量 顺带创建静态方法 Crrl alt F 抽取成员变量 2 抽取方法参数 Ctrl alt P 抽取参数,到方法体中 ...
- nopCommerce 3.9 中文语言包
点击下载:nopCommerce 3.9 中文语言包 nopCommerce39语言包.xml 下载后解压通过后台导入即可使用.如何导入?点击这里
- elasticsearch复杂查询-----2
1.多条件查询 1)查询索引weibo下字段date大于或等于2015-09-05和name为Mary Jone的数据 2.简单查询 1)查询包含2014字符的数据 2)查询包含字符2014-09-1 ...
- 洛谷 P1195 口袋的天空(最小生成树)
嗯... 题目链接:https://www.luogu.org/problemnew/show/P1195 思路: 首先可以判断这道题是用最小生成树来做的,然后在将其合并时用ans记录一下它的总消耗, ...
- 详解如何利用FarPoint Spread表格控件来构造Winform的Excel表格界面输入
我们先来简单了解一下WinForm和FarPoint,WinForm是·Net开发平台中对Windows Form的一种称谓.而FarPoint是一款模拟EXCEL的控件.它可以根据用户的要求实现很大 ...