IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> node.js项目部署 -> 正文阅读

[系统运维]node.js项目部署

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每条指令。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 16:03:51  更:2022-02-28 16:07:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:21:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码