前言

大家好,经过一番折腾,我已经把hexo博客部署到了github、vercel和cloudflare,接下来继续折腾,这次把hexo部署到阿里云服务器上,话不多说,直接上流程

环境准备

博主电脑:macbook pro m3(用windows步骤也一样)
服务器系统:debian12
域名一枚并且已经解析

开始部署

连接服务器

windows系统可以用xshell,mac可以用自带终端或iterm2,在本地电脑终端输入ssh root@公网ip,输入密码后就成功链接到云服务器
博主用的是iterm2,在终端输入

1
ssh root@服务器ip

安装nginx

安装常用的软件

1
2
3
sudo su # 切换到root
apt update -y # 更新软件包
apt install wget curl vim git -y # debian比较纯净,以防万一

安装nginx

1
apt install -y nginx # -y表示yes

运行nginx,验证是否安装成功

1
systemctl start nginx
1
systemctl enable nginx

这个时候用电脑去访问公网ip,如果能顺利打开nginx的默认页面,表示nginx安装成功

配置服务器的路由

额外知识:在 Debian 系统的 Nginx 中,主配置文件 nginx.conf 默认情况下可能不包含 server 块,是因为 Nginx 在 Debian 下的配置经常会拆分到多个文件中以实现更高的可维护性和更清晰的组织结构,server 块通常被存储在 /etc/nginx/sites-available 这个目录下的单独文件中。每一个这样的文件都包含了一个或者多个 server 块,每个 server 块定义了一个网站或应用的配置,当你需要启用一个网站或者应用时,可以在 /etc/nginx/sites-enabled 目录下为相应的配置文件创建一个符号链接,这样 Nginx 就会在启动时载入这个配置。
因此,你通常会在 /etc/nginx/sites-available 目录下找到 server 块的配置,而不是在 nginx.conf 文件中。

修改etc/nginx/nginx.conf

打开配置文件etc/nginx/nginx.conf

1
vim /etc/nginx/nginx.conf

将最上一行的 user 改为 root(或者创建名为nginx的用户并给予权限)

1
user: root

修改完nginx任意配置文件,都可以用下面指令来测试配置是否通过

1
nginx -t

编写server内容

我查阅的方法中;
1.有直接修改nginx.conf文件的(如上面所示,debian系统默认情况下这个文件不包含server,那我就尽量不修改主配置文件,所以我不采取这个方法)
2.有新建vhost文件夹,然后采用include的方式,将这个文件夹里的所有.conf包含进nginx.conf中的(采用这个方法)
3.gpt给出的答案是:基于debian系统下,先在sites-available添加配置文件然后创建软连接到sites-enabled

我选择第2种(因为实践过能成功,第3种倒是还没实践成功),步骤:

  1. 终端输入cd /etc/nginx进入文件夹

  2. 终端输入mkdir vhost && cd vhost 意思是创建vhost文件夹并进入

  3. 终端输入vim hexo.conf

  4. 编写配置内容(vim编辑模式下,先按i表示编辑模式,然后复制下面的内容,按esc键,再按:wq,表示保存退出)

    1
    2
    3
    4
    5
    6
    7
    8
    server{
    listen 80;
    root /home/www/blog; # 这里填博客目录存放的地址
    server_name yourdomain.com;# 这里填域名如(www.baidu.com) 如果暂时没有域名就填阿里云的公网ip,以后有了再改回来;
    location /{
    }
    }

  5. 用include插入到nginx.conf的http{}块中

  6. 以后如果想添加新的网站,可以继续在vhost目录下新建一个新的conf文件,然后再include

  7. 把nginx.conf文件中,server里面的root后面的路径,替换成你的博客存放位置:例如我的是/home/www/blog

安装nodejs

1
2
apt install -y nodejs
apt install -y npm

检查版本

1
2
node -v
npm -v

安装git及配置

目的是使本地主机可以通过ssh方式连接到云服务器,我们就可以在本地使用git将我们的博客部署到服务器上

创建博客存放的目录

接上一步,这时先回到根目录

1
cd

例如我的目录是/home/www/blog,输入指令创建目录

1
mkdir -p /home/www/blog

一定要添加权限,这个指令会使所有用户都可以修改,有其他需要的可以自行修改权限

1
chmod -R a+rw /home/www/blog 

如果没有添加权限,可能会有以下报错

1
2
3
remote: error: unable to create file .DS_Store: Permission denied
remote: error: unable to create file 404.html: Permission denied
remote: fatal: cannot create directory at 'Gallery': Permission denied

安装git

1
apt install -y git

新建git用户

会提示输入密码和其他信息,输入密码后,其他信息不想填可以一直回车

1
adduser git

修改用户权限,新增内容

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

在打开的编辑器中新增一条内容

1
git	ALL=(ALL:ALL) ALL

image

保存退出后,改回权限

1
chmod 400 /etc/sudoers

设置git用户的密码

创建git用户时输入过就可以跳过这步

1
sudo passwd git

切换到git用户,然后在~目录下创建.ssh文件夹

1
2
3
4
su git
cd ~
mkdir .ssh
cd .ssh

生成公钥秘钥文件,此时在目录下就会有两个文件,分别是id_rsa 和 id_rsa.pub

1
ssh-keygen

输入后一直回车就可以

id_rsa.pub就是公钥文件,复制一份

1
cp id_rsa.pub authorized_keys

修改权限

1
chmod 600 ~/.ssh/authorized_keys
1
chmod 700 ~/.ssh

然后回到我们的本机电脑(不是云服务器),在终端使用ssh方式连接云服务器

1
ssh -v git@公网ip

输入密码,能登录成功则继续

创建一个git的仓库,并且新建一个post-receive文件

在git用户下进行

切换到根目录

1
cd

创建并初始化git仓库

1
git init --bare blog.git

给博客目录增加相应读写权限

1
chmod -R a+rw /home/git

新建post—receive文件

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

输入以下内容,work-tree是你放网站内容的目录

1
git --work-tree=/home/www/blog --git-dir=/home/git/blog.git checkout -f

保存退出后赋予可执行权限

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

配置本地hexo的_config.yml文件

新增一个repo就行,例如
repo: git@这里改为服务器公网IP:/home/git/blog.git

测试

尝试新建一篇文章并发布到服务器上,在你本机的hexo项目目录下执行

1
2
3
4
hexo new "Hello My First Blog"
hexo cl
hexo g
hexo d

在服务器上重启nginx服务器

1
sudo service nginx restart

在浏览器输入你的域名,比如我的是20220713.xyz,如果能正常打开网站,现在网站应该会提示“不安全”,因为现在还是http,还没有添加ssl。咱们下一步就把这个“不安全”干掉,给网站上个小锁,敬请期待!!

参考

从零搭建Hexo博客并部署阿里云服务器(奶妈级教学)
将hexo博客部署到阿里云服务器上【超级详细】
安装Hexo博客并部署到GitHub或云服务器(细节教程,越过各种坑)
Hexo部署到服务器