背景
之前写了一个钉钉机器人定时发消息的应用,感觉还有许多可以补充优化的地方,比如可以修改发送的消息内容,也可以启动或者停止定时发送消息。
但是之前是直接用本地node去执行代码,代码执行后无法改变其状态,于是打算用express和nginx来做一个简单的站点去执行操作。
代码逻辑
整个逻辑很简单,一个简单的前端页面,提供表单来发送请求修改发送的消息,服务端使用json文件来保存消息,在需要发送消息的时候读取json消息。
话不多说,直接上代码:
创建服务
const express = require('express');const handleSendMsg = require('./src/sendMsg');const doSchedule = require('./src/doSchedule');const changeText = require('./src/changeText');const app = express();app.use(express.static('static'));app.get('/changeText.json', changeText);app.get('/sendMsg.json', handleSendMsg);app.get('/doSchedule.json', doSchedule);app.listen(3008, () => { console.log('Listening on port %d', 3008);});
处理消息
const logger = require('../myLogger');const path = require('path');const fs = require('fs');module.exports = function(req, res) { const query = req.query; logger.info(`接收到修改消息的内容为:${JSON.stringify(query)}`); const content = JSON.parse(fs.readFileSync(path.join(__dirname, '../config.json'))); if (query.workOff) { content.workOff = query.workOff; } if (query.workOn) { content.workOn = query.workOn; } fs.writeFileSync(path.join(__dirname, '../config.json'), JSON.stringify(content)); logger.info(`消息的内容已修改为:${JSON.stringify(content)}`); res.json('消息文案已完成修改');};
部署执行
安装nginx
nginx安装说起来比较简单,但因为是第一次装,还是踩了不少坑, 主要就是关注各个依赖的版本了,这个可以参考网络上的教程
部署
进入到项目目录下,启动一个后台进程来执行express。。。
配置nginx
核心代码如下():
upstream mysvr { server 127.0.0.1:7878; // 需要被代理的服务器 } server { listen 80; server_name 127.0.0.1; location / { proxy_pass http://mysvr; // nginx代理的服务 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
nginx 相关命令
启动
[root@localhost ~]# /usr/local/nginx/sbin/nginx停止/重启[root@localhost ~]# /usr/local/nginx/sbin/nginx -s stop(quit、reload)命令帮助[root@localhost ~]# /usr/local/nginx/sbin/nginx -h验证配置文件[root@localhost ~]# /usr/local/nginx/sbin/nginx -t配置文件[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf[cenos防火墙设置]()