用git方便快捷部署到生产环境服务器

  一直以来部署是个头疼的问题,因为各种密码啊什么的,有点受不鸟了,所以今天查阅了点资料,使得可以很方便的部署,以后再也担心了。所以把今天的只是总结一下。以便于后面继续使用。

  以前做web开发时,使用ftp上传,非常的繁琐,经常出问题,要是上传文件搞错了,问题何其多,后面用git来部署就不会有这样的问题。

  用git部署有两种,一种是使用一些仓库产品,像github  coding之类的,提供一个hook,然后在生产环境中写一个脚本来实现更新。

  另一种方式是我现在比较喜欢的。直接使用vps生产服务器来做这些事情(代码管理+部署生产环境的代码)。

  首先保证服务器上有git。

服务器端

1.创建自己的仓库

cd /var

mkdir repo/site.git && cd repo/site.git  && git init --bare

repo 以及site.git 随着你的想法改变

--bare的意思是,该文件夹是我们的代码仓库,它将不会放源代码而只是做版本控制。

2.hook

我们将会使用post-receive钩子,更多钩子及含义可以参考git文档 在your_site.git文件夹中

 cd hooks    如果继续输入ls可以看到目录下的钩子。

创建一个钩子

cat > post-receive

#!/bin/sh

git --work-tree=生产环境网站文件夹位置 --git-dir=/var/git/your_site.git checkout -f

其中生产环境网站文件夹要自行创建好,否则可能不会正常部署。

输入完成后按ctrl + D 保存,git-dir指的是仓库的地址, work-tree则是存放代码的位置,也就是我们的网站的源代码的位置。 接下来则是要保证它可以运行:

chmod +x post-receive。

本地端

一般情况下你应该有自己的项目了,给你的本地添加你的服务器的仓库即可。

git remote add myVPS-sitename ssh://[email protected]/var/git/your_site.git

然后按照正常push的时候加上后面参数

git push myVPS-sitename master

如果你是密码登陆服务器输入密码即可,ssh登陆服务器就可以直接传上去了。

说到这里,有时候输入太过于繁琐,也许有时候ssh登陆证书并不是我们想用了,这时候我们可以设置别名来登陆。

ls -al ~/.ssh   查看ssh密钥。默认情况下Git push 的时候回采用  id_rsa

但是我们可能有专门的证书来做特定的ssh操作。

这时候可以利用到别名。

vim ~/.ssh/config

输入

Host alias

  HostName www.ttlsa.com

  Port 22

  User root

  IdentityFile ~/.ssh/id_rsa.pub

  IdentitiesOnly yes

选项注释: 

    • HostName 指定登录的主机名或IP地址
    • Port 指定登录的端口号
    • User 登录用户名
    • IdentityFile 登录的公钥文件
    • IdentitiesOnly 只接受SSH key 登录
    • PubkeyAuthentication

保存

然后 ssh alias 就可以直接登陆ssh了。

这时候我们可以先删除连接 git  remote remove myVPS-sitename

然后重新添加   git remote add myVPS-sitename ssh://alias/var/git/your_site.git

这时候就可以很方便的上传了。

参考资料:https://blog.csdn.net/haozi3156666/article/details/40982085

https://www.cnblogs.com/sparkdev/p/6842805.html

https://blog.csdn.net/zhanlanmg/article/details/48708255

猜你喜欢

转载自www.cnblogs.com/pca7/p/9377575.html
今日推荐