Hexo配置Git部署站点到服务器

头像
ler

本地安装

首先查看本机是否已经安装GitNode.js,在Bash中输入以下命令

$ git --version 
#git version 2.22.0.windows.1

$ node --version
# v12.16.2

如果正确出现版本号,则说明已经安装,反之则未安装。

安装Git

从Git 官网下载安装。

配置用户信息,设置用户名以及邮箱:

$ git config --global user.name "用户名"
$ git config --global user.email "邮箱地址"

#查看配置
$ git config --list

获取key,下文配置SSH需要用到。

在Git Bash中执行以下命令:

#创建公钥
$ ssh-keygen -t rsa -C "邮箱地址"
#然后获取复制公钥备用
$ cat ~/.ssh/id_rsa.pub

安装Node.js

从Node.js 官网下载安装,安装完成后可以在在Git Bash中输入node --version查看当前安装版本。

Hexo配置

更多详细配置可以参照官方文档

新建存放Hexo站点目录的文件夹,如hexo,进入hexo内空白处右键菜单点击git bash

安装Hexo

$ npm install -g hexo-cli

安装完成后

$ hexo init
$ npm install

启动本地站点服务

$ hexo clean && hexo g && hexo server

完成后可以在浏览器中输入http://localhost:4000查看搭建的本地站点。

服务器端安装

将系统包列表更新到最新:

$ apt-get update -y
$ apt-get upgrade -y

创建git用户

创建git用户

$ adduser git

赋予sudo权限

$ chmod 740 /etc/sudoers
$ vim /etc/sudoers

定位到root一行下方添加以下字段

git ALL=(ALL) ALL

修改完成后改回权限

$ chmod 400 /etc/sudoers

配置SSH

切换git用户,并到git用户目录

#切换到git用户
$ su git

#转到git用户目录
$ cd /home/git

配置ssh

# 创建.ssh文件夹
$ mkdir ~/.ssh
#输入可查看是否创建
$ ls -a
# 创建authorized_keys文件并编辑
$ vim ~/.ssh/authorized_keys
# 如果你还没有生成公钥,那么首先在本地电脑中执行 cat ~/.ssh/id_rsa.pub | pbcopy生成公钥
# 再将公钥复制粘贴到authorized_keys
# 保存关闭authorized_keys后,修改相应权限
$ chmod 600 ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh

然后输入测试是否可以登录

$ ssh -v git@68.168.141.184

默认22端口,不是则需要在后面加上-p 端口号

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!是以前配置过主机,需要进行删除

$ vi ~/.ssh/known_hosts

创建git裸库

# 回到git目录
$ cd /home/git
# 使用git用户创建git裸仓库,以blog.git为例
$ git init --bare blog.git

检查用户权限

查看blog.git.ssh和站点目录的用户组权限是否都为git:git

$ ls -l /var/www/
$ ls -l /home/git/

如果不是则

$ sudo chown git:git -R /var/www/blog
$ sudo chown git:git -R /home/git/blog.git

使用git-hooks同步网站根目录

使用一个钩子文件:post-receive,每当git仓库接收到内容的时候,就会自动调用这个钩子,把内容同步到网站根目录。

git用户下执行

#切换到hooks目录下
$ cd /home/git/blog.git/hooks
#创建文件
$ vim post-receive

添加如下

#!/bin/bash
GIT_REPO=/home/git/blog.git
TMP_GIT_CLONE=/tmp/blog
PUBLIC_WWW=/home/wwwroot/default
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}/*
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}

保存后,执行以下赋予权限

$ chmod +x post-receive

关闭git用户的shell权限

#执行
$ vim /etc/passwd

将最后一行

git:x:1000:1000::/home/git:/bin/bash
#改为
git:x:1000:1000::/home/git:/usr/bin/git-shell

本地操作

配置本地Hexo的_config.yml

deploy: 
  type: git
  repo: git@115.159.87.49:blog.git
  branch: master

同步到服务器

#清理、生成、部署
$ hexo clean && hexo g && hexo d

评论

lernb.com ©2022 |  lernb | Tencent