这一篇主要讲述将本地部署的 hexo git 到云服务器上
1.在云服务器上安装 Git 以及配置仓库
安装 git
yum install git
为了安全这里需要添加一个新用户,这个用户仅用于提交博客,无法使用 ssh 连接服务器,git 可以自定义为自己想要的用户名
adduser git
到这里的话用户 git 已经添加,但是后面需要用 git 用户创建一些文件,所以给 git 用户添加 sudo 是很有必要的,不添加的话会提示无权创建文件 sudoers
chmod 740 /etc/sudoers #将sudoers文件权限修改为可修改
vi /etc/sudoers #用vim打开sudoers文件
在 root 用户下添加一行,看下图
编辑结束之后,按 esc 键,然后输入 :wq 并敲回车键退出 vim 编辑器并保存文件。保存退出后将 sudoers 文件的权限改回来:
chmod 400 /etc/sudoers
然后设置 git 用户的密码
sudo password git #这里会让你输入密码,然后再输一遍确认密码
tips:如果你对这些权限不了解,可以使用宝塔面板直接修改 sudoers 文件
初始化 Git 仓库
可以将 git 仓库放到自定义位置,我是将其放在 /var/repo/blog.git 目录下的
sudo mkdir /var/repo
cd /var/repo
sudo git init --bare blog.git
2.添加证书登录
每次 git 时都需要输入密码,这是一件非常繁琐的事情,我们可以通过添加公钥来登录,将本地~/.ssh/id_rsa.pub 文件里的内容添加到服务器的 /home/git/.ssh/authorized_keys 文件中
3.配置 git hooks
我们这里要使用的是 post-receive 的 hook,这个 hook 会在整个 git 操作过程完结以后被运行,关于 hooks
的详情内容可以参考这里。
这里可以用 vim 来编辑文件
cd /var/repo/blog.git/hooks
vim post-receive
在文件中写入如下内容
#!/bin/sh
git --work-tree=/www/wwwroot/hexo --git-dir=/var/repo/blog.git checkout -f
/www/wwwroot/hexo 可以换成你自己的部署目录,我这里使用的是宝塔建立的网站,所以用的是这个目录,/var/repo/blog.git 是 git 仓库的位置,上面的命令是实现每次 push 后,将 git 仓库里的内容同步到网站的部署目录,从而实现自动部署
保存并退出,设置权限
chmod +x post-receive
sudo chown -R git:git blog.git #改变 blog.git 目录的拥有者为 git 用户
这里如果你不会用 vim 的话,可以用宝塔面板直接编辑文件
4.禁用 git 用户 shell 登录
出于安全考虑,我们要让 git 用户不能通过 shell 登录。可以编辑 /etc/passwd 来实现
将
git:x:1001:1001:,,,:/home/git:/bin/bash
改成
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
这样 git 用户可以通过 ssh 正常使用 git,但是无法登录 shell。
5.用宝塔面板部署网站
域名填写你自己的域名,根目录与 hook 的目录一致
6.配置本地\_config.yml 文件,完成自动化部署
在 config 文件最下面找到 deploy,修改为:
aniwoh.top 修改为你自己的域名,冒号后面的则是你的 git 仓库目录
7.结语
到这里你的网站基本已经部署好了,在本地博客目录中打开 git,输入:
hexo clean #清除本地的缓存,每次git都需要clean
hexo d #在本地部署博客并deploy到服务器
由于没有配置密钥,git 时需要输入 git 用户的密码,git 完成后输入你的域名,如果出现 hexo 的页面,则部署成功,否则,进行排障
1.网络
先检查你的网络,这是最简单也最容易被忽视的问题
2.权限问题
如果你是按照我的步骤做的,用宝塔面板打开/var/repo/
,blog.git
文件的所有者和权限应该如下图,如果不一样,请按照上面步骤写的修改所有者与权限,同时网站目录的权限与所有者也是755/git
到这里博客的配置已经完成,下一篇讲述为你的博客添加喜欢的主题