Hugo是另一个流行的静态网站生成工具,它是使用 go 语言编写,并且使用 Markdown 语法,拥有最快的页面生成速度,缺点是主题不多(其实是没我喜欢的,哈哈哈)。
Hexo是用 Node.js 编写的博客框架,支持所有的 GitHub Markdown 特性,页面的生成速度介于前面两者中间。国人用的比较多,所以出问题会比较容易找到解决的方法! 基于自己能力、喜好等因素,最终决定选择 Hexo。但在自己一步一步跟着网上的教程去搭建的过程中,还是踩了不少的坑,特别是在云服务器上创建 git 仓库过程中。其原因嘛,一是自己的理解能力有限(主要原因),二是网上的教程有的说不全,有的又太过于笼统。所以今天我就把自己的踩坑经历分享一下,当作记录也好,免得以后换云服务商的时候又忘记怎么搭建。
yum install git -y
adduser git
passwd git
上图可以看到我是先 CD 到了 git 目录下再进行其他的操作,要注意的是我是在根目录上输入 CD 命令的。
cd home/git/
su git
mkdir .ssh && chmod 700 .ssh
touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
su root
输入密码后回车就行。 这里要说一下的是,如果你不想以后每次把通过 hexo 生成的静态文件推到你 git 仓库时都要输入密码的话,就要修改authorized_keys这个文件,修改方法如下: 以 windows 为例,安装 git,官网地址:https://git-scm.com/downloads 根据你的系统选择 64 位还是 32 位,我想现在的都是用 64 位的系统吧。哈哈哈,下载好后打开安装,一直点“下一步”就好,如果你有特殊僻好的设置,请自行参考度娘去设置。安装完成好 win+r 运行 CMD
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱地址"
ssh-keygen -t rsa -C "你的邮箱地址"
这时会叫你填写保存公钥和私钥文件的路径,记一下默认的路径,我的是这样子的c/user/skybb/.ssh/id_rsa。其中 skybb 是你电脑的用户名,我们选择默认的路径,按回车
id_rsa.pub 为公钥,用 notepad+打开的(记事本也行,网上说不好,反正我试过几次用记事本打开也没问题),里面的内容就是我们要复制到authorized_keys这个文件里的。
输入
pwd
确认我们是否在/home/git 这个目录里
cd .ssh
vim authorized_keys
按 i 进行编辑
把 id_rsa.pub 里面的内容复制到里面
按 Esc,输入:wq 退出
这样我们就将电脑上的公钥保存到你云服务器上了,以后将静态文件推到仓库时就不用每次都输入密码了。当然如果你觉得每次输入密码也无所谓的话,其实不修改authorized_keys也是没有问题的,这个我验证过。
上面有提到我们当前是在 git 的目录里吧。我们先退回上一层目录 home
cd ..
然后在 home 目录里建一个名为 blog.git 的仓库
git init --bare blog.git
vim blog.git/hooks/post-receive
按 i 编辑,复制下面内容
#!/bin/sh
git --work-tree=/home/www/hexo --git-dir=/home/blog.git checkout -f
按 Esc,输入:wq 保存退出
这里要说的是,/home/www/hexo是我们存放 hexo 生成的静态文件目录,如果你想更改到其他路径,git hooks 上复制的代码也要跟着更改。
接下来是设置权限
chmod +x blog.git/hooks/post-receive
更改 blog.git 这个仓库的拥有人为 git 用户(怎么感觉这么绕,哈哈哈)
chown -R git:git blog.git
mkdir www
cd www
mkdir hexo
设置 hexo 目录的权限与更改拥有人
chmod -R 755 hexo
chown -R git:git hexo
其实按上面设置完,你的仓库已经可以使用了,但为了安全考虑,我们应该要改一下 git 用户的相关登陆权限。
cd ../..
退回到服务器的根目录
vim etc/passwd
按 i 进行编辑
找到git:x:1000:1000::/home/git:/bin/bash # 这个1000有可能会不一样的,应该是ID数,我在另一台服务是1001
改为git:x:1000:1000::/home/git:/usr/bin/git-shell
按 Esc,输入:wq 保存退出
这样,git 用户就只能连接 git 仓库进行推送与拉取的操作,不能登陆服务器并使用命令。
到此,服务器的 git 仓库已经搭建完成了,仓库地址为git@服务器 ip:/home/blog.git。