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