0%

hexo的自动化部署(一)

准备工作

在开始部署前,你需要有如下的准备:

  • 本地搭建完成的博客
  • 一台window/mac电脑 1
  • 一台云服务器
  • 一个已经备案的域名
  • 电脑安装一个ssh连接工具

云服务器配置

使用ssh连接工具登录到云服务器上,然后开始如下操作:

1.安装依赖工具包

1
yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel

2.安装编译工具

1
yum install -y gcc perl-ExtUtils-MakeMaker package

3.删除旧版本 git

1
yum remove git -y

4.进入家目录

1
cd

5.下载 git 到家目录

鉴于下载地址的时效性,附上官网地址,后续 git 更新请去官网下载安装包。

1
wget https://www.kernel.org/pub/software/scm/git/git-2.34.0.tar.gz --no-check-certificate

如果提示没有wget命令,先安装:

1
yum install wget -y

6.解压文件

1
tar -zxf git-2.34.0.tar.gz

7.安装 git

进入到git目录下

1
cd git-2.34.0

编译

1
make all prefix=/usr/local/git

安装git 到/usr/local/git

1
make install prefix=/usr/local/git

8.配置git环境变量

git加入PATH目录中

1
echo 'export PATH=$PATH:/usr/local/git/bin' >> /etc/bashrc

使配置生效

1
source /etc/bashrc

查看 git 版本

1
git --version

如果能查看到 git 的版本号,说明安装成功。

云服务器配置SSH免密登录

1.创建用户并设置密码

这里的[username]改成你自己的用户名,并且为用户设置一个密码。

1
2
adduser [username]
passwd [username]

2.为用户分配权限

把用户添加到wheel

1
usermod [username] -G wheel

3.本地创建密钥

我们先要回到本地电脑。

这里的[your_email@example.com]改成你的邮箱在本机电脑终端输入:

1
ssh-keygen -t rsa -C "[your_email@example.com]" -f hexo-blog

然后一直回车,新建一个密钥。一般来说在你创建的时候命令行会提示你密钥文件的路径,windows电脑一般是C:\Users\Administrator\.ssh\。复制hexo-blog.pub文件中的内容备用。

4.配置公钥

我们先要回到云服务器。

切换到[username]用户。

1
su - [username]

创建.ssh文件夹

1
mkdir .ssh

新建authorized_keys

1
vim .ssh/authorized_keys

如果提示没有 vim,则先安装:

1
sudo yum install -y vim

将刚刚hexo-blog.pub公钥中的内容,复制粘贴到文件里,保存退出。

5.排查不能免密登录

排查方法

下面总结出一个常用的排查事项:

检查操作示例说明
.ssh目录的属主、属组是否为要登陆的用户与用户组ll -a /home/[username]/username为用户名,下同
.ssh目录的权限是否为 700ll -a /home/[username]/
.ssh目录下 authorized_keys 的权限是否为 644ll -a /home/[username]/.ssh/
[username]目录的权限是否为 755ll -a /home/700 也可以,确保其他人没有w权限

修改属组和权限

修改权限

1
chmod 700 .ssh

修改属组

1
2
chgrp [group] .ssh
# 这里[group]换成你用户的属组

修改属主

1
chown 用户名 /home/用户名

云服务器git仓库配置

退出用户登录

1
exit

此时应该是root用户,创建git目录,并修改目录的所有权和用户权限

1
2
3
mkdir /home/git/
chown -R [username]:[username] /home/git/
chmod -R 755 /home/git/

进入目录,建立 git 仓库,修改权限

1
2
3
cd /home/git/
git init --bare blog.git
chown [username]:[username] -R blog.git

新建钩子文件 post-receive

1
vim /home/git/blog.git/hooks/post-receive

进入文本编辑器,粘贴下面两行。

1
2
#!/bin/bash
git --work-tree=/home/blog --git-dir=/home/git/blog.git checkout -f

保存退出。然后修改文件权限

1
chmod +x /home/git/blog.git/hooks/post-receive

云服务器nginx配置

安装nginx

1
yum install -y nginx

启动 nginx

1
systemctl start nginx.service

查看nginx服务状态,绿色的active说明启动成功

1
systemctl status nginx.service

修改nginx转发配置

在浏览器中输入服务器公网ip地址,测试是否能打开。

查看nginx的默认配置文件的安装位置

1
nginx -t

修改nginx的默认配置,其中cd后边就是刚刚查到的安装位置,每个人可能都不一样,我这里是/usr/local/nginx/conf/nginx.conf

1
vim /usr/local/nginx/conf/nginx.conf

在文本编辑器中找到如下位置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {
listen 80 default_server;
listen [::]:80 default_server;
root /home/blog; # 修改为创建的blog目录地址
server_name www.example.com; # 需要修改为你的域名(或者公网ip)

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
}

保存退出。重启nginx服务

1
systemctl restart nginx.service

在本地hexo站点配置文件中配置

打开你本地的hexo博客所在文件,打开站点配置文件_config.yml

xxx.xxx.xxx.xxx替换成你自己的服务器公网IP或者域名

[username]替换成你自己的用户名

1
2
3
4
deploy:
- type: git
repo: [username]@xxx.xxx.xxx.xxx:/home/git/blog.git #用户名@服务器Ip:git仓库位置
branch: master

在本地hexo博客根目录下,打开终端,部署

1
2
3
hexo clean
hexo g
hexo d

如果提示ERROR Deployer not found:git错误,先安装

1
npm install hexo-deployer-git --save

打开浏览器输入你的服务器公网ip,应该已经部署成功了。