node.js项目部署

本文详细记录了使用Node.js进行项目部署的过程,包括通过Nginx配置实现域名访问,以及利用pm2管理node应用。同时介绍了如何设置Crontab定时任务,确保数据库的实时更新。通过实例展示了如何在Linux服务器上配置和使用Crontab执行shell脚本,以实现低峰期自动刷新数据库。
摘要由CSDN通过智能技术生成

node.js项目部署

1.引言

​ 本次node.js本来寒假断断续续学了20多天,本来没有实战,心里觉得有点虚,刚好返校之后遇到了实习,纠结了很久才决定暂缓复习考研,node.js简直比thinkphp6还容易上手,项目接口非常清晰,主要是需要记录一下特殊的第三方依赖。如果把这个写完,我可能觉得成就感其实是不足的,于是我决定试试node.js项目的部署,因为node.js直接挂ip实在是太丑了。

2.niginx配置

​ 首先,在宝塔面板和阿里云上面开端口,阿里云上面配置二级域名,获取niginx证书就跳过,关键就是下面这个域名的配置,以前是thinkphp,那种都是直接的网站,直接新建网站把项目放进去就完事了,但是现在不一样,如果开网站必须使用端口,然而node项目其实自己有自己的端口。于是只能建文件夹,将node项目放到里面去。利用比较常用的pm2部署工具(可以同时部署多个node项目)指定如下指令:

pm2 start app.js --name nightowl(项目别名)
//其他常用指令也记录一下
pm2 stop app.js (关闭项目)
pm2 list (查看当前项目名称)
//注意:最好为项目启用别名,因为如果是使用app.js,下次启用将会看到多个一样的名为app的node项目
//同时启用,管理起来不是很清晰

经过不断搜寻,最终找到了可用的配置方案:

(1)通过之前查看nginx里面的配置文件,会发现里面有一个include引入了其他文件的配置文件,这个文件就是收集各种证书配置的文件;通过路径进一步找到配置文件位置;

(2)参考配置文件里面pem和key文件的放置位置,新建对应的文件夹,模仿着创建路径,方便以后管理;

(3)然后在/www/server/panel/vhost/nginx/visualization.admin.nightowl.top.conf文件中写入如下配置信息:

server {
    listen      80;
    listen      443  ssl; #https

	server_name  visualization.admin.nightowl.top;

	ssl_certificate    /www/server/panel/vhost/cert/visualization.admin.nightowl.top/fullchain.pem;
	ssl_certificate_key    /www/server/panel/vhost/cert/visualization.admin.nightowl.top/privkey.key;

	location /{
       	proxy_pass http://8.136.14.176:8848;
	}
	if ($scheme = http) {
   	 	return 301 https://$server_name$request_uri;
	 }
 }

(4)配置完成之后重载nginx,然后使用https访问即可(这种配置也将更加原始,将能够用于其他语言项目部署参考);

3.crontab定时任务的配置

​ 最开始我就想着,这些数据库里面的数据都是我爬取的,加上项目对于实时性的依赖比较强,不写动态爬取就没意思了。为什么不每次请求别人的呢,那不就实时了?这样不现实,因为别人搭建的接口网站,使用者很多,和容易产生并发拿不到数据,更严重的是长期多次请求被别人发现导致封ip,这就很凉了。解决方法,利用mongoDB凌乱的数据存储优点,将爬取到的数据存放在自己的服务器上面,每次请求之请求自己的数据库,简介相当于复制了别人的数据库。然而,实时性怎么保证呢?解决方法只能是定时刷新我们的数据库,做一个刷数据库的功能,在用户使用低峰期刷新。当时是凌晨3-4点比较现实,总不能自己定个闹钟爬起来刷新数据库吧。于是搜索发现到了crontab 能够在Linux服务器上面配置sh定时执行脚本。关键是还能发送get和post请求!

​ 这东西比较新奇,配了半天才搞好,基本使用方法如下:

crontab -uroot -e #编辑crontab定时任务
systemctl restart crond.service #重启crontab服务,其实默认修改完成就会自动重启服务
tail -f /var/log/cron #查看crontab执行日志

给出使用例子:

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin #配置环境变量
*/1 * * * * /mnt/test1.sh >> /data/nightowl/text.log 2>&1
# */1 * * * * 五大参数,默认为:秒(0-59) 时(0-23) 日(1-31) 月(1-12) 星期(0--6)
# /mnt/test1.sh 表示shell脚本的位置,绝对路劲
# >> 指向日志文件,需要有个文件来说明这个shell指令的执行情况
# /data/nightowl/text.log 日志文件的位置(绝对路径)
# 2>&1 表示的是将二进制文件转成标准输出文件

最后说明:crontab查看日志默认现实10条,crontab执行速度最快1s每条指令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌空暗羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值