线上发布我一般使用服务器上git 的 post-receive hook
http://krisjordan.com/essays/...
数据库我们应该一般只做结构同步,我一般使用navcat上带的结构同步工具,来跟本地数据库同步结构。
可以看看ansible,
另外用jenkins基本的功能都能实现 配置也简单
关于问题2: 用ssh隧道进行端口转发(命令行或securecrt等工具也可以),或给数据库装个web客户端
我一般都把要删除的拉到tmp
一楼给的方案不错
我给楼主推荐一个发版工具 http://www.walle-web.io/docs/ (PHP写的支持git svn)
不知道回答得对不对
ssh user@host ls ~
是可以得到字面意思的结果的.
同样的,
ssh user@host /somewhere/publish.sh
不知道可不可以?
下面与题主无关:
呵呵, 不知道哪块料给我点的减号.
有本事点减号, 咱们出来聊聊?
为什么不用ansible
ssh user@host '/usr/local/publish xxx'
# 通过 ssh 连接到远程主机,并执行 /usr/local/publish xxx
可以利用github的webhook,检测到有push动作,就自动拉取代码。
你登录服务器/数据库的是一个普通用户,压根没有rm/drop权限,怎么会删除文件/数据呢……
尝试危险操作之前,先备份;
每隔一段时间,就全量/增量备份;
还要确认备份可用。
这是我们简单部署时候喜欢用的脚本:
function run_script() {
ssh -i ${SSH_CERT} -p 22 ${REMOTE_USER}@${REMOTE_HOST} "$@"
return $?
}
function upload_file() {
scp -i ${SSH_CERT} -P 22 "$1" ${REMOTE_USER}@${REMOTE_HOST}:"$2"
return $?
}
function upload_dir() {
scp -i ${SSH_CERT} -P 22 -r "$1" ${REMOTE_USER}@${REMOTE_HOST}:"$2"
return $?
}
upload_file "本地文件路径" "远端文件路径" || exit 1
upload_dir "本地目录路径" "远端父目录路径(目录会存于该路径下)" || exit 1
run_script "远端执行脚本" || exit 1