基于 markdown 文件生成博客,免去了搭建数据库、搭建第三方博客系统、黑客入侵的烦恼。

一、背景

之前折腾过个人服务器,过一段时间挂掉了,今天登录腾讯云服务器发现域名备案还生效,就重新部署下,记录之。

二、网站架构

使用golang实现的一个博客系统,基于markdown文件生成博客,免去了搭建数据库、搭建第三方博客系统、黑客入侵的烦恼。 https://github.com/wsqyouth/goblog

主要采用域名解析+nginx转发,请求后端服务的思路进行实现。 配置文件中goblog/config/conf_online.toml指定了后续存放博客文章的网址。

三、部署

  1. 部署应用服务,这里已经配置了我的服务器防火墙访问80端口
1
2
/home/coopers/workspace/goblog/cmd
nohup ./goblog > wsq.log &

之后本机8181服务端口已启动,通过ps或者netstat进行进程、端口检测。

  1. 部署nginx

root模式下

1
2
3
cd /usr/local/nginx/sbin ./nginx
./nginx -s stop
./nginx -s reload 

修改conf文件:

1
2
3
4
5
6
7
8
9
/usr/local/nginx/conf/nginx.conf

location / {
    #proxy_pass http://www.baidu.com;
    #proxy_pass http://www.wsqyouth.cn:8181;
    proxy_pass http://127.0.0.1:8181;
        root   html;
        index  index.html index.htm;
    }

此时检查nginx服务是否启动,通过lsof -i:80检查即可。

  1. 域名解析及外部检查

防火墙配置: https://console.cloud.tencent.com/lighthouse/instance/detail?searchParams=rid%3D1&rid=1&id=lhins-rc1v9izt&tab=firewall

1
2
ping www.wsqyouth.cn 检查防火墙是否配置正常
www.wsqyouth.cn

三、服务自动拉起

服务器重新启动后nginx服务和博客服务需要自动拉起。

  1. 编写shell脚本/usr/local/bin/startup.sh,注意权限
 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
#!/bin/bash

# 检测并启动 Nginx 服务
check_nginx() {
    if ! pgrep -x "nginx" > /dev/null; then
        echo "Nginx 服务未运行,正在启动..."
        /usr/local/nginx/sbin/nginx
    else
        echo "Nginx 服务已经在运行中."
    fi
}

# 检测并启动 goblog 服务
check_goblog() {
    if ! pgrep -x "goblog" > /dev/null; then
        echo "goblog 服务未运行,正在启动..."
        # 在这里添加启动 goblog 的命令
        cd /home/coopers/workspace/goblog/cmd/
	      ./goblog & > /tmp/wsq.log
    else
        echo "goblog 服务已经在运行中."
    fi
}

# 启动脚本后台执行
# nohup bash -c '
while true; do
    check_nginx
    check_goblog
    sleep 1m
done
# ' 2>&1 &
  1. 放到开机启动文件vim /etc/rc.d/rc.local
1
/usr/local/bin/startup.sh &

四、后续待补充

由于我的博客配置后推送即可实现一键更新效果,暂时不需要GitHub Actions。 参考这个博客配置GitHub Actions: https://penghh.fun/2020/10/21/2020-10-21-post01/