HEXO博客部署到云服务器上(傻瓜式部署)

1.准备工作

  • 已经搭建完毕的本地博客
  • 一台 windows/mac 电脑
  • 一台云服务器(本教程以阿里云为例)
  • 本地电脑安装一个 ssh 连接工具
  • 有可能失败很多次但是不会放弃的决心(本博主弄了四个小时)

只要按照本教程来基本上就是复制粘贴的事情,有的小细节可能需要自己注意下

2.服务器上安装配置 git

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 到家目录

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

3.创建用户配置 SSH

1 创建用户并设置密码

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

例如:

1
2
adduser git
passwd a1234567

在这里插入图片描述

这里密码设置的太简单了,所以就会有提示信息,但是不用管他

2 为用户分配权限

把用户添加到 wheel 组

1
usermod [username] -G wheel

3 本地创建密钥

在本机电脑终端输入(cmd):

1
ssh-keygen -t rsa

image-20221205203823615

第一次回车后输入 y 后面就是一直回车了,新建一个密钥,注意如果之前你将你的本地 hexo 博客部署到 GitHub 的时候生成的那个密钥是不可用的一定要重新生成这个密钥,不然上传的时候就会出错

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

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

4 配置公钥

回到服务器终端,切换用户

username 就是你刚刚添加的用户

1
su - [username]

创建.ssh 文件夹

1
mkdir .ssh

新建 authorized_keys

1
vim .ssh/authorized_keys

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

1
sudo yum install -y vim

将刚刚 id_rsa.pub 公钥中的内容,复制粘贴到文件里,保存退出。(注意这里是输入 i 编辑,esc 退出编辑模式,:wq 保存)

4 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

5 nginx 配置

首先创建 blog 目录用户 nginx 转发

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

1 第一种方法安装 nginx

两种方法任选其一,如果 yum 安装成功就不用第二种。

1
yum install -y nginx

启动 nginx

1
systemctl start nginx.service

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

1
systemctl status nginx.service

2 第二种方法安装 nginx

针对 yum 无法安装的情况,这里介绍第二种方法,源码安装。

回到家目录

1
cd

下载安装包,鉴于下载地址的时效性,附上

1
wget http://nginx.org/download/nginx-1.21.4.tar.gz

解压

1
tar -zxf nginx-1.21.4.tar.gz

进入目录,编译安装

1
2
3
cd nginx-1.21.4
./configure
make install prefix=/usr/local/nginx

配置 nginx 环境变量,并使环境变量生效

1
2
echo 'export PATH=$PATH:/usr/local/nginx/sbin' >> /etc/bashrc
source /etc/bashrc

查看 nginx 版本号

1
nginx -v

配置 Systemd 服务

1
vim /lib/systemd/system/nginx.service

在文本编辑器中粘贴以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp= true

[Install]
WantedBy=multi-user.target

内容说明:

1
2
3
4
5
6
7
8
9
10
11
[Unit]:服务的说明
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

设置开机自启动

1
systemctl enable nginx.service

重启电脑

1
reboot

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

1
systemctl status nginx.service

3 修改 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
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

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

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

1
2
3
4
deploy:
type: git
repository: [username]@100.0.0.100:/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

image-20221205211240381

出现这个问题,删除 known_hosts 文件,可能是之前生成过,输入然后输入会让你输入密码,就是你的 git 用户密码

位置:C:\Users\Administrator.ssh

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


HEXO博客部署到云服务器上(傻瓜式部署)
https://ssy-studio.github.io/post/HEXO博客部署到云服务器上(傻瓜式部署).html
作者
ssy
发布于
2023年1月25日
许可协议