Git部署Hugo博客
用Hugo建立好本地博客之后,自然而然想把生成的静态博客部署到VPS。
今天折腾部署又踩了一堆坑。
最主要的教训就是,切记不要用root用户直接操作。
因为用root用户操作rm,结果把系统的所有命令都删除了…重装了VPS系统俩次,简直是血的教训。
回归正题,如何用git把博客部署到VPS.
参考了其他博主的做法,最常见的就是用git的hook来实现。
hook我不是很理解,大概就是一个会自动触发脚本的东西。
即,当在客户端用git push博客文件到VPS的裸仓库的时候,hook里面的脚本就会被触发。
所以,只需要在hook里面写一个触发脚本,把最新push到的博客文件统统copy到web的www目录下就可以了。
有个疑问,为什么不直接在web的www建一个git仓库来实现呢?
后来想明白了,不直接在www建git仓库大概是考虑到安全的原因。
把开发和发布的目录隔离开,互不干涉。
1.VPS的设置
VPS安装好git之后,自己建一个目录初始化一个git裸仓库。
命令:
|
|
运行上面命令之后,当前目录会产生不少文件和子目录。
其中有一个目录是hooks.
进入hooks目录,建一个脚本:post-receive
内容如下:
|
|
当然,前提是你得装好nigix,apache或者caddy等等web服务器,设置好www目录才行。
2.客户端的设置
客户端就很简单了,按照平时使用git就可以了。
在Hugo生成的静态博客目录public中建立git仓库,push到VPS就可以了。
|
|
在git push的时候,我直接用普通用户remote到VPS的仓库执行操作是行不通的。
因为VPS上面的post-receice 脚本里的操作需要root权限才能执行。
所以没办法,最后只好用root用户来push,隐隐约约觉得有安全隐患。
当然,专业部署web肯定不是用git来部署,而且也不会直接在web服务器上搭建git。
另外,Hugo也有专门的部署工具,所以用git来部署,权当是玩票性质了。
还有一点是,如果git的速度很慢,git push还不如用FTP上传更快….