服务器定时启停设置

服务器定时启停设置

背景说明

  • 有一台(腾讯的ECS云服务器)公网服务器A-115用于作为反向代理(Nginx),将域名请求转向到内网的一台服务器(home-186)上.
  • 公网的服务器使用Centos8+python 3.10, 上面运行着一个内容管理的python程序,用于每天定时发布文章到内网的服务器上.
  • Nginx可以使用map指令+if语句配合着设置域名访问的指向, 要么指向公网上某个固定网页, 要么访问指定的后端服务器.

    - Nginx上配置了三个站点(51epub.com; chenlp.cc; wben.cc; shushanyoulu.cc)

  • 内网的服务器使用一个一个台式电脑(50W功率),使用的Centos8+python 3.10, 上面安装的Halo(java), 还有PHP的相关站点
  • 这个服务器上已经在BIOS设置了, 电源开启时自动开机, 这样可以在停电后再次家电, 自动开机.
  • 可以使用crond的定时服务, 进行定时关机操作
  • 内网服务器使用一个小米智能插座供电(可以远程控制电源启动和停止)
    • 小米插座可以使用米家APP进行远程控制,
    • 小米插座也可以设置定时开启, 定时关闭

整体思路

前提, 内网服务器已经设置好了BIOS, 通电自动开机, 这样可以在停电后再次加电, 自动开机.

总结: web服务器只能在早上8点到晚上23点之间使用, 其他时间不需要使用, 同时使用固定页面告知浏览者.

  • 每天早上7:30; 使用小米插座的定时开机, 进行定时开启和关闭内网服务器的电源, 同时会自动启动服务器;
  • 每天早上8:00; 使用公网服务器A-115的Nginx的Map指令+if语句, 将三个域名访问的请求, 定向到内网的服务器上; (需要修改配置Nginx)
  • 每天早上8:18; 公网服务器A-115定时运行发布文章的python程序, 将文章发布到内网的服务器(home-186)上; (需要公网服务器的定时服务crond)
  • 每天晚上23:00; 使用公网服务器A-115的Nginx的Map指令+if语句, 将三个域名访问的请求, 定向到公网服务器上的某个网页上; (需要修改配置Nginx)
  • 每天晚上23:30; 内网服务器定时关机; (需要内网服务器的定时服务crond)
  • 每天晚上23:50; 使用小米插座的定时关机 (需要小米插座的定时服务)

具体步骤

查看公网服务器上的时区: timedatectl | grep "Time zone"

step1- 修改Nginx配置文件, 设置定时启停的Map指令+if语句


systemctl stop nginx

# 1- 修改/etc/nginx/nginx.conf配置文件, 设置map指令;

map $time_local $hour_min_sec {
    "~^(?:[0-9]+/[a-zA-Z]+/[0-9]+:|\s*)([0-9]{2}:[0-9]{2}:[0-9]{2})" $1;
    default "09:00:00";
}

map $hour_min_sec $block_access {
    default 0;
    # 更精确地匹配23:00:00-07:59:59
    "~^23:[0-5][0-9]:[0-5][0-9]$" 1;
    "~^0[0-7]:[0-5][0-9]:[0-5][0-9]$" 1;
}

# 2- 修改conf.d/51epub.com.conf配置文件, 
# 设置if语句, 进行定时启停的操作;
server {
    ...
    location / {
        if ($block_access = 1) {
            return 302 /sleep.html;
        }
        ....
    }

    location = /sleep.html {
        root   /usr/share/nginx/html;
        access_log off;
    }
    ...
}

# 3- 修改chenlp.cc.conf配置文件,
(同上面的操作)

# 4- 修改wben.cc.conf配置文件,
(同上面的操作)

# 5- 修改shushanyoulu.cc.conf配置文件,
(同上面的操作)

# 6- 重启nginx服务
nginx -t
systemctl restart nginx

step2- 配置公网服务器上的定时服务(crond), 定时运行python程序, 发布文章到内网服务器上

# 1- 编辑crontab文件, 添加定时任务
crontab -e

# 2- 添加定时任务, 每天早上8:18分, 执行python程序, 发布文章到内网服务器上
0 8 18 * * * python /home/app/scbook/planpub.py

step3- 配置内网服务器上的定时服务(crond), 定时关机操作

# 1- 编辑crontab文件, 添加定时任务
crontab -e
# 2- 添加定时任务, 每天晚上23:30分, 执行关机操作
0 23 30 * * * /sbin/shutdown -h now

step4- 配置小米插座的定时启停操作

在手机上进行配置, 设置定时启停操作, 进入小米插座的设置界面, 设置定时启停操作. - 定时开启时间: 7:30 - 定时关闭时间: 23:50