服务器定时启停设置
背景说明
- 有一台(腾讯的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