danger 如果是通过Github挂在的静态博客请忽略第三步免密登录生成Key的步骤

准备工作

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

  • 本地搭建完成的博客
  • 一台Windows/mac电脑(如果你的电脑是Linux应该不用看本片博客吧😀)
  • 一台云服务器(ECS或者VPS,理论上来说任何服务商都可以,本教程以DDP的VPS为例)
  • 本地电脑安装一个SSH链接工具(或者BUSH终端,本教程以MobaXterm为例)
  • 可能会多次失败也不怕重来的决心

安装配置git

image (1)

安装依赖工具包

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

安装编译工具

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

删除旧版本git

1
yum remove git -y

进入家目录

1
cd

下载git到家目录

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

1
2
3
4
5
# 下载git
wget https://www.kernel.org/pub/software/scm/git/git-2.34.0.tar.gz --no-check-certificate

# 如果提示没有wget命令,先安装git
yum install wget -y

解压文件

1
tar -zxf git-2.34.0.tar.gz

安装git

1
2
3
4
5
6
7
8
# 进入到git目录下
cd git-2.34.0

# 编译
make all prefix=/usr/local/git

# 安装git到/usr/local/git下
make install prefix=/usr/local/git

配置git环境变量

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

1
2
3
4
5
6
7
8
# 将git加入path
echo 'export PATH=$PATH:/usr/local/git/bin' >> /etc/bashrc

# 使配置生效
source /etc/bashrc

# 查看git版本
git --version

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

创建用户并设置密码

1
2
3
4
5
# 这里username改成你自己的用户名,并且为用户设置一个密码
adduser [username]

# 设置密码时终端不显示直接敲就行,回车
passwd [username]

为用户分配权限

1
2
# 把用户添加到wheel组
usermod [username] -G wheel

本地创建密钥

在本机电脑终端(CMD)输入然后一直回车,新建一个密钥。一般来说在你创建的时候命令行会提示你密钥文件的路径,Windows电脑一般是C:\Users\Administrator\.ssh复制到id_rsa.pub文件中的内容备用。如果之前有密钥,新建密钥之前记得将C:\Users\Administrator\.ssh中的文件完全删除再进行操作。

1
2
# 一般通过Github挂载的静态博客在搭建本地博客时已经生成可忽略此步骤
ssh-keygen -t rsa

密钥

配置公钥

将刚刚id_rsa.pub公钥中的内容,复制粘贴到文件里,保存退出。终端修改文件内容先点击i键切换到编辑模式再写入内容,保存退出先按ESC再输入:wq保存退出

1
2
3
4
5
6
7
8
9
10
11
# 回到服务器终端,切换用户
su - [username]

# 创建.ssh文件夹
mkdir .ssh

# 新建authorized_keys
vim .ssh/authorized_keys

# 如果提示没有vim,则先安装vim
sudo yum install -y vim

密钥内容

git仓库配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 退出用户登录
exit

# 此时应该是root用户,创建git目录,并修改目录的所有权和用户权限
mkdir /home/git/
chown -R [username]:[username] /home/git/
chmod -R 755 /home/git/

# 进入目录,建立git仓库,修改权限
cd /home/git/
git init --bare blog.git
chown [username]:[username] -R blog.git

# 新建钩子文件post-receive
vim /home/git/blog.git/hooks/post-receive

# 进入文本编辑器,粘贴下面两行
#!/bin/bash
git --work-tree=/home/blog --git-dir=/home/git/blog.git checkout -f

# 保存退出。然后修改文件权限
chmod +x /home/git/blog.git/hooks/post-receive

nginx配置

image (1)
1
2
3
4
# 首先创建blog目录用户nginx转发
mkdir /home/blog/
chown -R [username]:[username] /home/blog/
chmod -R 755 /home/blog/

第一种方法安装nginx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 命令行安装nginx
yum install -y nginx

# 若执行不成功可尝试安装阿里镜像源这里RHEL版本对应CentOS的版本,例如我是CentOS 7 64-bit,那么我用的时第二个RHEL 7
# epel(RHEL 8)
yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
# epel(RHEL 7)
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
# epel(RHEL 6)(epel6官方源已下线,建议切换epel-archive源)
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-archive-6.repo

# 启动nginx
systemctl start nginx.service

# 查看nginx服务状态,绿色的active说明启动成功
systemctl status nginx.service

第二种方法安装nginx

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# 回到家目录
cd

# 下载安装包
wget http://nginx.org/download/nginx-1.21.4.tar.gz

# 解压
tar -zxf nginx-1.21.4.tar.gz

# 进入目录,编译安装
cd nginx-1.21.4
./configure
make install prefix=/usr/local/nginx

# 配置nginx环境变量,并使环境变量生效
echo 'export PATH=$PATH:/usr/local/nginx/sbin' >> /etc/bashrc
source /etc/bashrc

# 查看nginx版本号
nginx -v

# 配置Systemd服务
vim /lib/systemd/system/nginx.service

# 在文本编辑器中粘贴一下内容:
[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

# 设置开机自启动
systemctl enable nginx.service

# 重启电脑
reboot

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

内容说明

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

修改nginx转发配置

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 查看nginx的默认配置文件的安装位置
nginx -t

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

# 在文本编辑器中找到如下位置,按照注释修改root和server_name
server {
listen 80 default_server;
listen [::]:80 default_server;
root /home/blog; # 修改为创建的blog目录地址,按照我的教程是/home/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服务
systemctl restart nginx.service

nginx

在Hexo站点配置文件中配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 打开你本地的Hexo博客所在文件,打开站点配置文件_config.yml,如果是使用Github挂在的静态网页记得把Gan1Ser改为你自己的仓库名
deploy:
type: git
repository: git@github.com:Gan1Ser/Gan1Ser.github.io.git #用户名@服务器Ip:git仓库位置
branch: main

# 如果没有使用只是生成了本地博客
deploy:
type: git
repository: [username]@100.0.0.100:/home/git/blog.git #用户名@服务器Ip:git仓库位置
branch: master

# 在本地Hexo博客根目录下,打开BUSH终端,部署
hexo clean
hexo g
hexo d

# 如果提示ERROR Deployer not found:git错误,先安装:
npm install hexo-deployer-git --save

打开浏览器输入你的服务器公网ip或者域名(看你nginxserver_name填写的内容),应该已经部署成功了。

附:nginx常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 停止开机自启动
systemctl disable nginx.service
#设置nginx服务开机自启动
systemctl enable nginx.service
#启动nginx服务
systemctl start nginx.service
#停止nginx服务
systemctl stop nginx.service
#重启nginx服务
systemctl restart nginx.service
#重新读取nginx配置(这个最常用, 不用停止nginx服务就能使修改的配置生效)
systemctl reload nginx.service
# 查看服务当前状态
systemctl status nginx.service
# 查看所有已启动的服务
systemctl list-units --type=service