Hexo配置Git部署站点到服务器
ler
2020-08-23
源Leihungjyu
本地安装
首先查看本机是否已经安装Git
和Node.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