从零到一搭建一个hexo博客

  1. 1. 准备
  2. 2. 环境搭建
    1. 2.1. Windows
    2. 2.2. CentOS
  3. 3. Link
  4. 4. Nginx
  5. 5. 其他

开个新坑,慢慢写

前言

以前用的blog一直是wordpress,配合着@moedog大佬的二次元主题,然后有段时间摸鱼,正好碰到了@Candinyadalao移植的hexo主题风格,想了想wp比较臃肿,于是就理所应当的过渡到了hexo上。

准备

一个RSA密钥对,一台centos服务器,ssl证书(可选)

环境搭建

Windows

  1. 首先前往Nodejs官网下载nodejs,安装。
  2. 接着前往Git官网下载git,安装。
  3. ~/.ssh/下面准备好的你的私钥,同时记下你的公钥
  4. 什么你还没有密钥对?那你可以通过
    1
    ssh-keygen -f fileName -t rsa
    来生成你的密钥对
  5. 通过
    1
    2
    npm -v
    node -v
    来验证你的Nodejs是否安装成功
  6. 接下来使用npm来安装hexo
    1
    npm install -g hexo-cli 
    如果不出error,问题都不大
  7. 初始化hexo博客
    1
    hexo init blogfoldername
  8. 使用如下命令来验证hexo雏形
    1
    2
    hexo g
    hexo s
  9. 如果没有问题你可以在127.0.0.1:4000看到初始的hexo博客

CentOS

  1. 安装并启动nginx
    1
    2
    3
    4
    yum install nginx
    systemctl enable nginx
    systemctl start nginx
    systemctl status nginx
    这里就摸了
  2. 新建用户设置密码(yuki为列示用户
    1
    2
    useradd yuki
    passwd yuki
  3. 把yuki用户添加到sudo用户组中
    1
    2
    chmod 740 /etc/sudoers
    vi /etc/sudoers
    将yuki写入root下面
    1
    2
    root ALL = (ALL) ALL
    yuki ALL = (ALL) ALL
    保存退出
    1
    chmod 400 /etc/sudoers
    回退权限
  4. 切换到yuki导入ssh公钥
    1
    2
    3
    4
    5
    6
    su yuki
    cd ~
    mkdir .ssh
    vim .ssh/authorized_keys#粘贴上你的密钥然后保存退出
    sudo chmod 600 ~/.ssh/authorized_keys
    sudo chmod 700 ~/.ssh
  5. 安装git
    1
    yum install git
  6. 初始化仓库文件
    1
    2
    3
    su git
    cd ~
    git init --bare blog.git
  7. 建一个文件夹用于存放网页
    1
    2
    cd ~
    mkdir hexo
  8. 修改hook
    1
    2
    3
    4
    vim ~/blog.git/hooks/post-receive
    #写入以下内容并且保存退出
    #!/bin/sh
    git --work-tree=~/home/yuki/hexo --git-dir=/home/yuki/blog.git checkout -f
  9. 赋权
    1
    chmod +x ~/blog.git/hooks/post-receive
    接下来来杯咖啡(误

Link

从windows上使用

1
ssh -T yuki@yourip

来测试git是否可用,如果出现类似于“welcome”的语句,证明配置成功
在Windows上进入hexo文件夹,找到_config.yml修改deploy
1
2
3
4
deploy:
type: git
repo: yuki@yourip:/home/yuki/blog.git
branch: master

PS:记得安装
1
npm install hexo-deployer-git --save

接下来你可以使用
1
hexo d

来推送的你的服务器,当然这个时候你还不能访问(nginx还没写

Nginx

这部分就摸了,有详细的看Nginx那篇文章吧
配好了Nginx后,你就可以访问你的blog了

其他

为了安全考虑,禁用yuki用户的SHELL 登录权限配置
这样yuki用户就只能用来执行脚本,无法切换到shell界面。
首先你必须确保 git-shell 已存在于 /etc/shells 文件中
使用命令

1
which git-shell

判断系统是否安装了git-shell。如果已经安装,则返回git-shell的安装目录,如:/usr/bin/git-shell;如果未安装则需要安装git-shell命令,安装命令:
1
yum install git

判断shells文件是否存在,判断命令:
1
cat /etc/shells

如果文件不存在或没有/usr/bin/git-shell,则需要使用vim增加这个路径:
1
sudo vim /etc/shells

,在最后一行添加git-shell路径
1
2
3
4
5
6
7
8
# /etc/shells: valid login shells 
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/tmux
/usr/bin/screen
/usr/bin/git-shell # 添加你的git-shell

现在你可以使用 chsh 命令修改任一系统用户的shell权限了
现在我们修改创建的yuki用户的登录权限,禁止yuki用户使用shell权限:
终端中输入
1
sudo chsh yuki

然后在Login Shell [/bin/bash]:后输入git-shell路径/usr/bin/git-shell
修改完成后验证: vim /etc/passwd找到类似git:x:1000:1000:,,,:/home/yuki:/usr/bin/git-shell,看看yuki用户是否是以git-shell结尾
这样,yuki用户就只能使用SSH连接对Git仓库进行推送和拉取操作,而不能登录机器并取得普通shell命令