服务器Hexo博客部署和Git同步

安装hexo

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

搭建git服务器

安装git环境

1
2
3
4
5
# 查看是否安装
git --version

# 若未安装,需先安装git
sudo apt-get install git

创建git用户

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

创建git仓库

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

创建钩子函数

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
cd blog.git/hooks

# 创建hook钩子函数 git提交时自动部署博客内容
vi post-receive 

hook钩子函数内容:
#!/bin/sh
git --work-tree=/home/git/projects/blog --git-dir=/home/git/repos/blog.git checkout -f

chmod +x post-receive
# 退出git用户
exit
# 添加权限
chown -R git:git /home/git/repos/blog.git

测试git仓库

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

# 如果ssh非22端口
git clone ssh://git@server_ip:port/home/git/repos/blog.git

配置SSH免密登录

客户端(Windows这边)

方法一

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

1
2
3
ssh-keygen

# 接下来可以一直回车

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

方法二

  1. 生成密钥对

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

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

服务器(Linux这边)

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

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

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

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

    修改/etc/passwd中的权限

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

配置nginx

nginx.conf配置文件内容:

1
2
3
4
5
6
location / {
    root   /home/git/projects/blog;
    index  index.html index.htm;
}

# 同时将user改为root

选择主题

官方主题

选择一个下载到本地

选择NexT

启动

1
npm run deploy

遇到的问题

  1. ERROR Deployer not found: git报错

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

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

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

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

相关内容

0%