博客
博客
文章目录
  1. Git添加本地仓库
  2. Git添加远程仓库
  3. Git本地关联远程仓库
  4. Git测试
  5. Git自动部署

使用Git同步更新本地文件到远程服务器

这个小博客在本地使用HEXO生成的,没有用HEXO自带的同步方式,而是将本地HEXO生成好的静态文件public同步到Linux服务器,然后用nginx作为web服务挂在服务器上。同步的方式很多,网上也有各种姿势实现。这里使用Git让自己熟悉熟悉Git的一些基本使用命令,以免以后想用一时半会儿又想不起来。

关于HEXO部署本地电脑上以及Linux服务器nginx安装建站就不说了,有很多教程文章。

Git添加本地仓库

本地使用hexo g 生成好静态文件以后,进入public文件夹,在这里创建一个本地仓库,将来和远程的仓库关联以便随时同步。这时在public文件夹下就有一个.git文件夹

1
git init .

Git添加远程仓库

要本地同步到远程仓库,首先得在服务器上创建一个Git空白仓库,这里提示最好新建一个用户比如giter用来管理,在giter目录下新建文件夹比如hexo_blog.git 这个文件夹用来存放远程仓库。进入文件夹创建仓库

1
git init --bare /home/giter/hexo_blog.git

Git本地关联远程仓库

在本地刚才的public目录下操作,hexo_blog是添加的远程名字默认是origin这个可以自己定义ssh://后面的是远程url

:xxx 是ssh端口,比如你ssh端口是2019那么url就应该是 ,如果使用的默认22端口就不要:2019直接接git仓库地址目录git remote add hexo_blog ssh://giter@1.2.3.4:2019/home/gittt/blog_zerooo.git

1
git remote add hexo_blog ssh://giter@1.2.3.4:xxx/home/gittt/blog_zerooo.git

可使用 git remote -v 查看远程仓库信息。

Git测试

因为远程仓库是空的,现在需要添加文件然后同步到远程。-u将远程仓库和本地仓库关联起来,如果前面添加远程url无误此时已将本地文件同步到远程了。

1
2
3
git add .
git commit -m "这里添加本次同步的些备注可自己看着办"
git push -u hexo_blog master

登录远程服务器,因为我们远程是一个裸仓库,同步完文件后在文件夹里是看不到的,这里使用clone命令克隆到另一个文件夹里比如你的网站目录就可以看到了。

1
git clone /home/gittt/blog_zerooo.git

Git自动部署

当然在本地更新一篇文章需要用到一系列包括HEXO、Git、bash在内的一些命令,同时同步到远程仓库再到发布到指定的网站目录下也需要一些Git自动化命令。接下来要做的就是让着一系列命令串联起来,当自己写好一篇文章之后只需要在命令行敲一个命令,网站就同步更新的实现。

首先,假如我们在一个markdown编辑器下完成一篇文章之后,我们需要将文章复制到本地HEXO网站下的source/_posts/目录下,然后执行hexo g 命令才会渲染。当渲染完毕后成型的静态文件都在public目录下,接下来就是Git同步到远程的一些命令如上一步所述。

文件同步到服务器之后需要clone到指定的网站目录里这里需要用到Git自动部署的一个hooks,编辑/home/gittt/blog_zerooo.git目录下的hooks下的post-receive文件,每当我们本地同步更新到远程仓库这个动作执行后,Git会自动执行post-receive这个脚本里面的命令,以此我们来实现自动部署。

本地脚本就是复制文章到_posts目录>>>hexo渲染静态文件>>>Git同步本地到远程仓库
服务器post-receive脚本自动clone>>>静态文件同步到指定网站目录

具体脚本就不贴了,都是一些基本命令的顺序执行就好,注意的是post-receive里面的脚本前需要加上unset GIT_DIR 之后才是clone和同步。post-receive要给执行权限,用户以及用户组要改为giter。

另外每次Git同步需要giter这个用户登录服务器,最好使用ssh-keygen这种方式自动登录,免去每次输入密码的麻烦才真实现自动。

支持一下
扫一扫,支持ZEROOO网络
  • 微信扫一扫
  • 支付宝扫一扫