安装hexo

1npm install -g hexo-cli
2npm install hexo-deployer-git --save

搭建git服务器

安装git环境

1# 查看是否安装
2git --version
3
4# 若未安装,需先安装git
5sudo apt-get install git

创建git用户

1adduser git 
2passwd git // 设置密码
3su git // 切换用户

创建git仓库

1cd /home/git/
2# 创建文件来放置hexo静态工程
3mkdir -p projects/blog
4# 创建文件放置git仓库
5mkdir repos && cd repos
6# 创建一个裸露的仓库
7git init --bare blog.git

创建钩子函数

 1cd blog.git/hooks
 2
 3# 创建hook钩子函数 git提交时自动部署博客内容
 4vi post-receive 
 5
 6hook钩子函数内容:
 7#!/bin/sh
 8git --work-tree=/home/git/projects/blog --git-dir=/home/git/repos/blog.git checkout -f
 9
10chmod +x post-receive
11# 退出git用户
12exit
13# 添加权限
14chown -R git:git /home/git/repos/blog.git

测试git仓库

1# 如果ssh是22端口
2git clone git@server_ip:/home/git/repos/blog.git
3
4# 如果ssh非22端口
5git clone ssh://git@server_ip:port/home/git/repos/blog.git

配置SSH免密登录

客户端(Windows这边)

方法一

git bash中生成git客户的的公私密钥对

1ssh-keygen
2
3# 接下来可以一直回车

会在C:\Users\用户名下生成一个.ssh中生成密钥对,复制公钥id_rsa.pub中的内容,准备粘贴到下面创建的authorized_keys文件中

方法二

  1. 生成密钥对

    1ssh-keygen -t rsa -C "youremail@example.com"
    
  2. 将公钥传送给服务器

    1# ssh 使用的是22端口
    2ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip
    3
    4# ssh 使用的非22端口
    5ssh-copy-id -p 'port' -i ~/.ssh/id_rsa.pub username@server_ip
    

服务器(Linux这边)

  1. 编辑/etc/ssh/sshd_config文件开启免密登录

    1RSAAuthentication yes
    2PubkeyAuthentication yes
    3
    4# 配置修改完重启ssh服务
    5service sshd restart
    
  2. 创建指定用户目录下authorized_keys

     1cd /home/git/.ssh
     2# 存放客户端的ssh公钥 id_rsa.pub
     3touch authorized_keys
     4# 粘贴客户端公钥
     5
     6# 配置权限
     7chmod 600 authorized_keys
     8chmod 700 ~/.ssh
     9
    10# 权限给的太大可能会失败? SSH不允许.ssh目录权限过大?
    
  3. 限制git用户登录权限, 只能clone, push;

    1# 查看`git-shell`是否在登录方式里面,有则跳过
    2cat /etc/shells
    3# 查看是否安装 
    4which git-shell
    5vi /etc/shells
    6# 添加(which git-shell)显示出来的路劲,通常在 /usr/bin/git-shell
    

    修改/etc/passwd中的权限

    1# 将原来的
    2git:x:1000:1000:,,,:/home/git:/bin/bash
    3# 修改为:
    4git:x:1000:1000:,,,:/home/git:/usr/bin/git-shell
    

配置nginx

nginx.conf配置文件内容:

1location / {
2    root   /home/git/projects/blog;
3    index  index.html index.htm;
4}
5
6# 同时将user改为root

选择主题

官方主题

选择一个下载到本地

选择NexT

启动

1npm run deploy

遇到的问题

  1. ERROR Deployer not found: git报错

    需要安装hexo-deployer-git 模块: npm install hexo-deployer-git --save

    确认配置文件_config.yml中是否添加git仓库信息:

    1deploy:
    2  type: git
    3  repo: ssh://git@server_ip:port/home/git/repos/blog.git
    4  branch: master
    
  2. yum安装nodejs后没有安装npm

    1# 指定仓库地址
    2curl --silent --location https://rpm.nodesource.com/setup_10.x | bash -
    3# 再安装
    4yum install -y nodejs
    5
    6# 切换至国内的源(如果是过内服务器的话)
    7npm install -g cnpm --registry=https://registry.npm.taobao.org 
    
— END —