宝塔面板如何用pm2部署node项目

请注意,本文编写于 176 天前,最后修改于 175 天前,其中某些信息可能已经过时。

好久没写博客了,差点忘记我还有个网站在这。。。先说一下为什么写篇文章吧,由于最近有关肺炎的事弄得人心惶惶,我宅在家,网上刷着掘金,发现好多人都为肺炎做出了自己的贡献,我想闲着也是闲着,也写个东西来统计肺炎的相关情况吧。

下面先放几张效果图,在床上随便写的,用的uniapp框架,下面是app的界面,微信小程序和网页的都一样。

Screenshot_2020-02-10-20-19-03-089_uni.UNIBC6F653.jpg
Screenshot_2020-02-10-20-19-03-089_uni.UNIBC6F653.jpg

Screenshot_2020-02-10-20-19-33-456_uni.UNIBC6F653.jpg
Screenshot_2020-02-10-20-19-33-456_uni.UNIBC6F653.jpg

界面都写好了,可这数据去哪弄呢,幸好,已经有大哥用node写好了爬取丁香园数据的api,但api再好,也是挂在别人的服务器上,要是他一删,那我们不是空白白的一片,尴尬至极。而且他那个接口的地址是http的,在微信小程序里用真机调试更是什么都没有。(微信小程序需要所有请求的地址是https)。

我们也不用东找西找,人家部署的获取肺炎信息的node项目就在下面:
https://github.com/programmerauthor/spread-information
话不多说,直接上去干吧。首先我们把人家的项目下载下来,不用多想,先在本地跑一遍憋。

首先全局安装pm2,并安装好依赖
npm i pm2 -g
npm i
然后在代码目录下执行
pm2 start pm2Config.json

看到下面这个就知道成功了。

TIM截图20200210204133.png
TIM截图20200210204133.png

ok,没什么难度嘛,可是我们该怎么部署到服务器上,让大家都可以访问呢?我的服务器是用阿里云的,安装了宝塔面板。这个宝塔面板还挺好用的,也是免费的。按照网上说,需要下载一个PM2管理器的软件,在左侧的软件管理下就可以下载了。这是一个可视化工具,坑有点多,我们直接用终端吧,命令行舒服些。

[notice]非常重要的一步,centoS上是缺少一些依赖的,在本地上跑的飞起,服务器上可能就会报一大堆地错误。[!notice]

复制以下内容安装依赖:

yum install pango.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64 libXtst.x86_64 cups-libs.x86_64 libXScrnSaver.x86_64 libXrandr.x86_64 GConf2.x86_64 alsa-lib.x86_64 atk.x86_64 gtk3.x86_64 ipa-gothic-fonts xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-utils xorg-x11-fonts-cyrillic xorg-x11-fonts-Type1 xorg-x11-fonts-misc

上面这一步非常重要,我就是因为这个原因搞了好几个小时。

项目中的端口是3001,所以我们要在防火墙里开放这个端口。

TIM截图20200210205440.png
TIM截图20200210205440.png

我问了一下作者,其实是有两种模式的:

第一种是只获取最新的一段数据,使用这种模式把 api.js 里面的时间线函数注释掉。重启api服务。

第二种是全量模式,获取所有的时间线,这个数据量比较大,有一定延迟。使用这种模式新启动一个服务。 pm2 start more.js --no-autorestart -c "/2 *" --name more

下面就是全量模式的开启方法。第一种只需要输入下面的第一,三步。

 pm2 start app.js --no-autorestart -c "*/2 * * * *" --name infos # 启动2分钟刷新一次信息
 pm2 start more.js --no-autorestart -c "*/2 * * * *" --name more
 pm2 start api.js # 启动api接口

最后大功告成了。

例如:http://feiyan.libingtao.cn:3001/data/getTimelineService

下面的列表可以请求不同的信息。

API 列表

接口名请求方式接口描述
data/getTimelineServiceGET按时间线获取事件
data/getStatisticsServiceGET获取整体统计信息
data/getAreaStat/:proviceGET获取指定省份信息,例如:/data/getAreaStat/山东
data/getIndexRumorListGET最新辟谣
data/getIndexRecommendListGET最新防护知识
data/getWikiListGET最新知识百科
data/getEntriesGET诊疗信息
data/getListByCountryTypeService1GET全国省份级患者分布数据
data/getListByCountryTypeService2GET全球海外其他地区患者分布数据
data/getNewest/:lastidGET获取最新事件lastid 代表上次获取到的最后的id,例如:/data/getNewest/281将会返回id为281的事件之后发生的事件集合。

添加新评论

已有 1 条评论