指定版本安装
nodejs最新版本对gcc版本有要求,确定版本后安装指定的要求版本
sudo yum -y install curl
curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash -
sudo yum install -y nodejs
踩过坑的回溯
我安装了最新版本的node、一切顺利直到 npm install 加载,美梦被打破了、so我的建议是先看一下gcc的版本再去选择用那个版本的nodejs,如果你跟我一样安装了最新版本,在gcc升级和nodejs降级之间徘徊、如果不是硬性原因,那nodejs选择符合当前gcc版本的,将是你的归宿,如果很不恰巧,跟我一样,也没关系
gcc -v
你安装了最新版本,将会收获以下错误包,原因在于gcc的版本要5.2以上
g++: 错误:unrecognized command line option ‘-std=c++14’
以下将是你找补的良性做法
npm install -g n
n ls-remote --all
n x.x.x 安装某个版本
如果你幸运的接着遇到这个问题
strings /usr/lib64/libstdc++.so.6 | grep CXXABI
查看以下你的CXXABI的版本问题,适当降级就行,总之node的环境相对比安装还是轻量一些
总体上问题还是有、资料一堆,但最小化的解决问题的方案并没有连贯、 希望以下能给你部署node服务一些参考
安装node
sudo yum install nodejs -y
查看安装的版本
node -v
查看Node 安装位置
whereis node
如果 npm -v 没有
sudo yum install npm
如果需要部署node服务 那么需要把python环境安装一下,如果你node版本高,参考如下
sudo yum -y install python36
添加软连接
ln -s /usr/bin/python3.6 /usr/bin/python3
进程守护
进程守护往往伴随着几个方面,针对linux,往往因为服务器部署的内容多时很多应用服务都需要重启,如果手工部署就很麻烦,通过Systemd 需要配置自启动内容
- ssh中断后也不会影响其运行;
- 运行终止后自动重启进程;
- 服务器关闭后,自启动相关服务;
- 定时重启,应用进程运行时间久了或许总会产生一些意料之外的问题,定时可以规避一些不可测的情况;
- 设置异常重启次数,如果应用不断异常重启,并超过一定的限制次数,说明此时的环境长时间处于不可控状态,服务器异常。此时便可停止尝试,发出错误警告通知等。
- 🍗我们可以使用简单的
nohup命令来运行应用程序,使其作为后台守护进程运行,即使远程连接的SSH断开也不会影响程序的执行。在流行的Linux发行版中往往都默认安装好了nohup命令工具。 命令如下:
nohup ./gf-app &
- 🍗pm2 进程守护(开机自启动支持) 全局安装
npm install pm2 -g
如果提示版本不一致等问题根据提示操作即可
验证是否安装成功
pm2 -v
pm2 start "启动程序" --name 程序名
启动程序
pm2 ls
开机自启动
sudo pm2 startup // 把已启动服务加到systemd中
sudo systemctl reboot // 重启,发现之前的服务都已经启动
sudo pm2 unstartup systemd // 删除自动启动服务
PM2常用命令:
- pm2 start <script_file|config_file> [options] 启动指定应用,如pm2 start index.js --name httpServer;
- pm2 stop [options] 停止指定应用,如pm2 stop httpServer;
- pm2 list 把所有pm2启动实例列举出来,注意:pm2 stop 某个项目后,该项目还会存在pm2 list 的列表里面, 只是状态是 stop, 要想去掉该项目,用pm2 delete
- pm2 reload|restart [options] 重启指定应用,如pm2 restart httpServer;
- pm2 show [options] 显示指定应用详情,如pm2 show httpServer;
- pm2 delete [options] 删除指定应用,如pm2 delete httpServer,如果修改应用配置行为,最好先删除应用后,重新启动方才生效,如修改脚本入口文件;
- pm2 kill 杀掉pm2管理的所有进程;
- pm2 logs 查看指定应用的日志,即标准输出和标准错误;
- pm2 monit 监控各个应用进程cpu和memory使用情况;
- pm2 startOrReload 如果项目没有启动就执行 start 如果项目正在运行 就执行relaod
- 🍗systemctl
Systemd是Linux系统工具,用来启动守护进程,已成为大多数发行版的标准配置。 而systemctl是Systemd的主命令,用于管理系统。但是自启动需要去配置.
建议如非特殊必要,别尝试 gcc 5.2 安装 (太大了)
如果执行npm i 项目初始化有些会有一些gcc编译处理,gcc版本可能会有不一致的情况
yum install centos-release-scl
yum install devtoolset-4-toolchain
scl enable devtoolset-4 bash
gcc --version
往期目录
- 🍟35岁鞋不合脚的问题
- 🍟组态,你值得拥有
- 🍟GB级word文档预览方案
- 🍟多平台博客工具推荐
- 🍟全栈终结者-把nuxt扔进垃圾桶、Blazor与seo的化学反应
- 🍟ol与Vue室内定位模式设计
- 🍟二十余年如一梦,此身虽在堪惊。闲登小阁看新晴。古今多少事,渔唱起三更
- 🍟Tauri操作实战(1)-环境准备
- 🍟代码生成代码
- 🍟webpack5 针对vue vue-cli-service 升级指南(三)
- 🍟webpack5 针对vue vue-cli-service 升级指南(二)
- 🍟webpack5 针对vue vue-cli-service 升级指南(一)
ps
最近在代码的海洋里遨游、顺手有个node的服务端部署需要解决一下,如果你也有部署方面的问题,可以做个参考,都是排雷实操,简单化处理、最重要的是问题是连贯性处理的、