将Hexo博客部署到云服务器

1. 准备工作

在开始部署之前,你需要做如下准备:

  • 本地搭建完成的博客
  • 一台电脑
  • 一台云服务器
  • 本地电脑安装一个ssh连接工具(或者bash终端)
  • 多次失败也不怕重来的决心

2. 安装配置git

2.1 安装依赖工具包

1
yum -y install git   #自动选择y,全自动

2.2 查看git版本

1
git --version

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

3. 创建用户并配置SSH免密登录

3.1 创建用户并设置密码

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

注意: 在使用useradd命令创建新用户时,不会为用户创建主目录,不会为用户指定shell版本,不会为用户创建密码。

1
2
3
adduser [username]
passwd [username]
#eg: adduser gituser

3.2 创建 gititem 分组

1
groupadd gititem

3.3 为用户分配权限

把用户添加到 gititem 组

1
2
usermod [username] -G gititem 
#eg: adduser gituser

3.4 本地创建密钥

在本机电脑终端输入:

1
ssh-keygen -t rsa

然后一直回车,新建一个密钥。

一般来说在你创建的时候命令行会提示你密钥文件的路径,windows电脑一般是C:\Users\Administrator\.ssh\id_rsa.pub

复制id_rsa.pub文件中的内容备用。

3.5 配置公钥

创建.ssh文件夹

1
mkdir .ssh

新建authorized_keys

1
vim .ssh/authorized_keys

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

4. git仓库配置

退出用户登录

1
exit

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

1
2
3
4
5
mkdir /home/gitrepo/
chown -R [username]:[username] /home/gitrepo/
chmod -R 755 /home/gitrepo/
# 将当前前目录下的所有文件与子目录的拥有者皆设为 gituser,群体的使用者 gititem
# chown -R gituser:gititem /home/gitrepo/

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

1
2
3
4
cd /home/gitrepo/
git init --bare blog.git
chown [username]:[username] -R blog.git
#eg: chown -R gituser:gititem -R blog.git

新建钩子文件 post-receive

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

进入文本编辑器,粘贴下面内容

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

将文件保存后,赋予该文件可执行权限:

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

5. nginx配置

5.1 nginx 环境配置

安装 nginx

1
yum install -y nginx

启动nginx

1
systemctl start nginx.service

查看nginx服务状态

1
systemctl status nginx.service

设置开机自启动

1
systemctl enable nginx.service

5.2 创建运行目录

创建blog目录用户nginx转发

1
2
3
4
mkdir /home/blog/
chown -R [username]:[username] /home/blog/
chmod -R 755 /home/blog/
# chown -R gituser:gititem /home/blog/

5.3 修改nginx转发配置

查看 nginx 目录

1
whereis nginx

修改nginx的默认配置,每个人可能都不一样,我这里是 /etc/nginx/nginx.conf

1
vim /etc/nginx/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 [域名或者ip地址]; # 需要修改为你的域名(或者公网ip)

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

检查配置文件中是否存在语法错误

1
nginx -t

重新加载配置文件

1
nginx -s reload

6. 在hexo站点配置文件中配置

6.1 部署

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

1
2
hexo cl
hexo d -g

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

1
yarn add  install hexo-deployer-git --save

6.2 创建 npm 脚本

当然,为了每次部署时更简单,推荐创建 npm 脚本,在 hexo 的根目录下的 package.json 文件中加入:

1
2
3
4
"scripts": {
"deploy": "hexo clean && hexo d -g",
"start": "hexo clean && hexo g && hexo s"
}

然后我们就可以在目录下直接运行npm脚本部署啦:

1
npm run deploy

7. 总结

  • 使用hexo生成静态文件
  • 在云主机上搭建git环境,并将静态文件通过git上传到云主机
  • 使用git-hooks实现自动部署
  • Nginx用做静态文件服务器,实现外界对博客的访问