服务器Hexo博客部署和Git同步
安装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文件中
方法二
-
生成密钥对
1ssh-keygen -t rsa -C "youremail@example.com" -
将公钥传送给服务器
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这边)
-
编辑
/etc/ssh/sshd_config文件开启免密登录1RSAAuthentication yes 2PubkeyAuthentication yes 3 4# 配置修改完重启ssh服务 5service sshd restart -
创建指定用户目录下
authorized_keys1cd /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目录权限过大? -
限制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
遇到的问题
-
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 -
yum安装nodejs后没有安装npm1# 指定仓库地址 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 —
相关标签
推荐阅读