迁移blog至云服务器

那个小朋友不想拥有一个自己的网站呢~

反反复复折腾了有一周多吧,我是一只小笨狗QAQ,这里记录一下

谢谢同事哥哥帮我找bug (呜呜呜他人真好)

原理

已知hexo已经帮我们把md文件转化为静态页面了,那么要做到将博客部署到云端,实际上是完成两件事情:

  1. 将静态页面从本地上传至服务器;
  2. 让外部的人可以访问这些静态页面

将静态页面从本地上传至服务器

操作

前置工作

首先我们需要开启安全组策略,具体操作见官方文档

这样就可以使用ssh来连接远程服务器啦,记得同时打开80端口

当没有操作时,过一段时间ssh连接就会断开, 自定义断开时间

安装git, nginx, nodejs

添加用户

我们为博客新建一个userblog用户,并为他设置密码

1
2
adduser userblog
passwd userblog
image-20241204203047373

建立本地 -> 新用户的ssh连接

在本地执行命令

1
cat ~/.ssh/id_rsa.pub

得到公钥

然后添加到服务器

1
2
3
4
5
6
# 切换用户
su userblog

cd /home/userblog/
mkdir .ssh
vim .ssh/authorized_keys #把公钥粘贴进来保存退出
image-20241204204009258

检测: 在本地使用ssh userblog@ip命令,输入密码后可以顺利进入

image-20241204204210715

创建工作目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 切回root
exit
#创建博客目录
cd /home/userblog/
mkdir workplace
# 在workplace下创建两个目录, git 用来做git, web用来装页面
cd workplace/
mkdir git
mkdir web

cd git
git init --bare blog.git
cd blog.git/hooks/
vim post-update.sample

#将文件内容改为以下
git --work-tree=/home/userblog/workplace/web
--git-dir=/home/userblog/workplace/git/blog.git
checkout -f

#按照提示去掉sample后缀
mv post-update.sample post-update
image-20241204210607044

image-20241204204751987

这时我们发现这个目录的权限为root, 需要改为userblog

1
chown -R userblog:userblog workplace/
image-20241204205041770
1
2
3
4
5
#本地电脑修改 _config.yml文件
deploy:
type: git
repository: userblog@[ip]:/home/userblog/workplace/git/blog.git
branch: master

检测:在本地博客目录下hexo clean & hexo d, 然后查看web目录,有文件就是胜利

配置nginx

注意,阿里云会有一堆奇怪的东西

使用netstat -npltu |grep 80 发现80端口被占用了

image-20241204214819300
1
2
3
4
# 禁用 docker 开机自启
systemctl disable docker
# 关停 docker 服务
systemctl stop docker

使用nginx -V命令查看配置文件位置

image-20241204215059059

修改配置文件vim /etc/nginx/nginx.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
user nginx;   -> user root;   

#sever下的配置
server {
listen 80;
listen [::]:80;
server_name 改为ip;
root /home/userblog/workplace/web;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
location / {
index index.html;
}
}

使用nginx -t 命令检查

image-20241204215723342

重启nginx: systemctl restart nginx

查看: systemctl status nginx

image-20241204215922136

使用curl [ip] 80 检查

image-20241204220247494

就可以在浏览器访问啦~

auto

最近迷上了写脚本 (脚本太神奇啦)

这样我们写完博客直接打开控制台运行脚本就可以了

1
2
3
4
5
cd /Users/liergou/Desktop/blog
hexo clean
hexo g
hexo d
echo 'done'

当然也可以在控制台快速打开_post文件夹

1
open /Users/liergou/Desktop/blog/source/_posts