1.前言

由于我之前的博客是部署在GitHub上然后托管在Vercel上的,虽然绑定了自己的域名可以访问,但毕竟是国外的服务器,然后正好白嫖了阿里云的学生机,就顺手部署在阿里云的服务器上。访问速度也能快一点。

2.部署环境

本人本地电脑是Win10(64bit)、服务器配置是ECS 2核2GB内存、40G SSD云盘

3.本地环境部署

3.1 安装Node.js

因为 Hexo 需要 Node.js 环境,因此需要先下载安装 Nodejs。点击 NodeJs 官网,下载LTS(长时间支持版本)就行。

image-20230331230458965

下载好一直 next,选择一个文件夹位置在一直 next 即可完成。

3.2 安装 git

点击 git 官网,下载安装包。

img

点击 next,选择文件夹位置,然后一直 next 到底就行了,选择默认配置就好,默认配置会将环境变量配置好的。安装好后鼠标右击应该有下图这两个选项了,出现就代表安装成功了。

img

4 使用 Hexo

4.1 安装 Hexo

上面环境搭建好之后,在桌面点击鼠标右键,点击 “Git Bash Here” ,输入以下两条命令。

1
npm install -g hexo-cli

img

4.2 初始化 Hexo

安装好 Hexo 之后,新建一个文件夹,如 E:\HEXO ,然后在该文件夹内鼠标右击,选择 “Git Bash Here” ,输入以下命令。

1
hexo init

稍等即可,如图:

img2

文件结构如图所示:

https://s6.xinlal.com/2023/03/31/LTtOYJhx.png

scaffolds 是模版文件夹,当你新建文章时,Hexo 会根据 scaffold 来建立文件。

source 文件夹是存放用户资源的地方。

themes 是主题文件夹,Hexo 会根据主题来生成静态页面,待会我们会更换成比较流行的 nexT 主题。

然后再输入命令行进行本地调试,即可看到初始效果。

1
hexo s --debug

访问 http://localhost:4000/ 即可看到效果:

4.3 更换主题为 NexT

上面虽然本地可以调试成功了,但是默认的主题实在不是特别好看。你可以选择去官网选择自己喜欢的主题,官网主题链接

本篇教程选择的是当前流行的 NexT 主题,本人目前还在用butterfly,感兴趣的也可以去用用看。

4.4 下载 NexT 主题

进入刚刚你创建的文件夹的 themes 里,比如我的 D:\Ysoft\data\桌面\Hexo\hexo-theme-next ,鼠标右击选择 “Git Bash Here” 输入以下两条命令中的一个:(这两个是一样的,只是有同学反应第一条命令不行,第二条就可以。)

1
2
3
git clone git@github.com:next-theme/hexo-theme-next.git

git clone https://github.com/next-theme/hexo-theme-next.git

运行结果:

image-20230331232627789

此时 themes 文件夹便多了一个 next 主题的文件夹。

image-20230331232848337

4.5 修改配置

打开 D:\Ysoft\data\桌面\Hexo (你的 hexo 根目录)下的 _config.yml 配置文件

image-20230331233031555

找到下面这段代码

1
2
3
4
5
6
7
# Extensions

## Plugins: https://hexo.io/plugins/

## Themes: https://hexo.io/themes/

theme: landscape

将 langscape 替换成 hexo-theme-next(主题文件夹的名字)

1
theme: hexo-theme-next

重新在项目根目录下进行本地部署调试,主题切换效果如下

1
hexo s --debug

image-20230331233651641

5 配置 SSH 密钥

为了使本地可以跟远程的 github 建立联系,需要在本地配置 SSH 密钥,这样我们就可以在本地直接提交代码到 GitHub 上或者远端 git 仓库。
如果你是第一次配置 SSH,则配置一下 git 的 username 和 email

附带常用git命令

1
2
3
git config -l  //查看所有配置
git config --system --list //查看系统配置
git config --global --list //查看用户(全局)配置
1
2
git config --global user.name "你要设置的名字"
git config --global user.email "你要设置的邮箱"

通过git config -l 检查是否配置成功。

之后生成 SSH 密钥:

1
ssh-keygen -t rsa -C "你刚刚设置的邮箱"

建议连续三个回车就好了。直接桌面git bash,在这之后会得到两个文件: id_rsa 和 id_rsa.pub

找到 id_rsa.pub 文件,用记事本打开,复制其内容。路径: C:\Users\YYNT(你的用户名).ssh

image-20230331234133101

6 服务器部署

注意:服务器是 CentOS 7.9

image-20230331234339779

选择远程工具,链接自己的云服务器,我这边用的Xshell7并选择root用户

image-20230331234644335

6.1 配置 Git

1. 安装git

在命令行输入下面的命令并回车:

1
yum install git -y

image-20230331235044705

代表git安装成功

2.创建 git 账户

在命令框输入

1
adduser git

3.赋予git用户权限

1
2
chmod 740 /etc/sudoers
vim /etc/sudoers

输入上面的命令,回车之后,进入编辑界面。

img

这里要先点击 “i” 键,进入编辑模式,然后找到一下内容的地方:

1
2
## Allow root to run any commands anywhere
root ALL=(ALL) ALL

img

新添加以下内容:

1
git     ALL=(ALL)     ALL

然后按 “Esc” 键,此时最底下的—INSERT—消失,再输入 “:wq!”,即保存退出。

4.改回权限

1
chmod 400 /etc/sudoers

5.设置git用户的密码

1
sudo passwd git

注意,linux 下输入密码是不显示 ** 的,你直接输入,输完回车就行了

输入两次密码就设置成功了。

注意,linux 下输入密码是不显示 ** 的,你直接输入,输完回车就行了

image-20230331235747738

6.切换至 git 用户,创建 ~/.ssh 文件夹和 ~/.ssh/authorized_keys 文件,并赋予相应的权限

1
2
3
su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys

按”i” 进入编辑模式,将我们在 win10 中生成的 id_rsa.pub 文件中的公钥复制到 authorized_keys 中,按”esc”,然后按”:wq”,保存退出。

image-20230331235747738

接着,输入以下命令,赋予权限:

1
2
chmod 600 /home/git/.ssh/authorized_keys
chmod 700 /home/git/.ssh

在本地 Git 终端中测试是否能免密登录 git,其中 SERVER 为填写自己的云主机 IP,执行输入 yes 后输入你之前配置的 git 密码,无报错就说明好了。

在电脑本地桌面,右键”Git Bash Here”,输入一下命令,其中 Server填写自己的云主机 ip,执行输入 yes 后不用密码说明配置成功了。

1
ssh -v git@Server

image-20230401000044702

这说明已经连接成功了。

6.2 创建仓库目录及相关配置

6.2.1 创建目录

在 var 目录下创建 repo 作为 Git 仓库目录,返回服务端命令行切换到 root 账户,然后输入:

1
mkdir /var/repo

6.2.2.赋予权限:

1
chmod -R 755 /var/repo

6.2.3.接下来创建 hexo 目录作为网站根目录,并赋予权限:

1
2
3
mkdir /var/hexo
chown -R git:git /var/hexo
chmod -R 755 /var/hexo

6.2.4.接下来创建一个空白的 git 仓库

1
2
cd /var/repo
git init --bare hexo.git

6.2.5.创建一个新的 Git 钩子,用于自动部署

在 /var/repo/hexo.git 下,有一个自动生成的 hooks 文件夹。我们需要在里边新建一个新的钩子文件 post-receive。

1
vim /var/repo/hexo.git/hooks/post-receive

进入编辑模式,然后将下面那两行代码粘贴进去,保存退出

1
2
#!/bin/bash
git --work-tree=/var/hexo --git-dir=/var/repo/hexo.git checkout -f

修改权限:

1
2
chown -R git:git /var/repo/hexo.git/hooks/post-receive
chmod +x /var/repo/hexo.git/hooks/post-receive

到这里 Git 仓库已经搭建完毕了。

7 配置 Nginx

我们这里选择宝塔面板来进行部署Nginx

1
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh

中途输入”y” 回车等待一会就好了。在执行结果最后会出现地址,用户名,密码等。

image-20230401000953880

复制这个地址打开,输入账号密码即可进入宝塔面板。

注意:这里也有可能你进不去面板页面,是因为你的服务器没有开 8888 这个端口(具体看你的宝塔面板连接的端口),去阿里云服务器控制台中的 “网络与安全”->“安全组”,右上角的” 添加规则”,添加相应的端口即可。看下图。

补充:顺便把443端口放开,后续申请SSL证书后Https协议默认端口为443

image-20230401001315789

image-20230401001334763

image-20230401001435904

在宝塔面板,进入软件商店,输入”Nginx”,然后搜索,安装免费的那个。

21-2019-11-30-16-32-50

等待部署完成。

部署完成之后,点击网站,添加站点,填写你的域名(加上3w),没有的话写你的服务器 ip 地址。其他的不要改。

填写完之后提交,然后点击” 设置”

image-20230401001626555

点击” 配置文件”

1
2
3
4
5
6
7
8
9
server

{
listen 80;
# server_name填写你自己的域名,没有的话填ip(域名最好加上sw)
server_name hjxlog.com;
index index.php index.html index.htm default.php default.htm default.html;
# 这里root填写自己的网站根目录,修改为/var/hexo
root /var/hexo;

保存,然后选择 “设置”-“网站目录”,将网站目录修改成以下,保存。

1
/var/hexo

image-20230401001927477

注意:新版宝塔不允许将保存在根目录下就很烦,会出现以下报错

image-20230401002043556

不用慌,创建个软链接就行,相当于是Windows里面的快捷方式

在命令行输入以下命令,并回车

1
ln -s /var/hexo/ /www/wwwroot/

image-20230401002548530

然后修改网站根目录即可。

image-20230401002645501

image-20230401002735053

这样下来其实还是/var/hexo的目录,接着往下走即可。

回到服务器终端,重启宝塔服务,使之生效。

1
systemctl restart bt.service

8 修改 hexo 配置

进入本地电脑 hexo 博客的根目录,编辑站点配置文件 _config.yml,找到 deploy,修改成以下

1
2
3
4
5
deploy:
type: git
#repo改为repo: git@你的域名:/var/repo/hexo.git
repo: git@cosn.cc:/var/repo/hexo.git
branch: master

最后在本地电脑 hexo 博客的根目录右击,Git Bash Here,输入以下命令部署

1
2
3
hexo clean

hexo d -g

这时候可能出现权限问题,导致部署到 git 失败。

img

在服务器终端输入以下命令即可:

1
2
chown -R git:git /var/repo/
chown -R git:git /var/hexo/

最后再 hexo d -g 部署,应该就可以看到部署成功了。

img

自此,已经将博客从 GitHub pages 搬到阿里云服务器了。

9 将网站添加 https 访问

去百度上搜索免费的 SSL 证书,很快就申请下来了,或者用宝塔的免费SSL证书(自己摸索一下)。

进入宝塔面板,” 网站”,” 设置”,”SSL,” 其他证书”

image-20230401003325451

将你申请的证书.key 以及.pem 内容,粘贴进去然后保存即可。

image-20230401003407962

完结撒花 ^_^