前两天换了centos7.4。所以要把之前的代码全部都放到新的服务器上面。并且添加hooks实现代码的自动更新。

1 git迁移

首先嘛,在新的服务器上面新建一个空的版本库。

cd /srv
git init --bare swoole.git ##新建版本库
chown -R ache:ache swore.git/ ##更改所有者

然后在本地需要放到线上的代码目录下面,输入下列代码即可完成版本库的迁移

git remote set-url origin ache@103.56.55.10:/srv/swoole.git git push 

git迁移版本库&git免密提交&hooks实现自动部署_版本库

将swoole迁移到新的服务器

2 git免密提交

公钥之前弄的我自己就有了,这里就不讲怎么生成公钥了。公钥名id_rsa.pub。不知道位置的自己搜搜就好了。去线上新建认证文件。导入自己的公钥即可。

cd /home/ache
mkdir .ssh
vim .ssh/authorized_keys ##把自己公钥内容写入到这个文件就行
chmod 644 .ssh/authorized_keys
chmod 744 .ssh
chown -R ache:ache .ssh.

去打开将RSA认证打开,修改配置文件/etc/ssh/sshd_config

RSAAuthentication yes 
PubkeyAuthentication yes
AuthorizedKeysFile /home/ache/.ssh/authorized_keys

git迁移版本库&git免密提交&hooks实现自动部署_自动更新_02

免密提交成功

3 实现hooks

我自己写自己的东西的时候,希望在本地写完提交到线上可以直接更新查看效果。但是平常的话需要我们到线上去pull一下,感觉略微的有些浪费时间。之前就去找了找可以用钩子来实现的。

以上面的swoole.git为例子。去 /srv/swoole.git/hooks下面新建一个post-receive文件。

#!/bin/sh
unset GIT_DIR
NowPath=`pwd`
DeployPath="/home/wwwroot/swoole"
cd $DeployPath
echo "开始同步代码"
sudo git pull
cd $NowPath
echo "代码同步完成"
exit 0

添加可执行权限

chmod +x post-receive 

然后附上一张测试成功的效果图


hooks自动更新