linux node边写边记

503 阅读5分钟

指定版本安装

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

image.png 你安装了最新版本,将会收获以下错误包,原因在于gcc的版本要5.2以上

g++: 错误:unrecognized command line option ‘-std=c++14

以下将是你找补的良性做法

npm install -g n
n ls-remote --all
n x.x.x 安装某个版本

如果你幸运的接着遇到这个问题

image.png

strings /usr/lib64/libstdc++.so.6 | grep CXXABI

查看以下你的CXXABI的版本问题,适当降级就行,总之node的环境相对比安装还是轻量一些

总体上问题还是有、资料一堆,但最小化的解决问题的方案并没有连贯、 希望以下能给你部署node服务一些参考

安装node

sudo yum install nodejs -y     

image.png

查看安装的版本

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中断后也不会影响其运行;
  • 运行终止后自动重启进程;
  • 服务器关闭后,自启动相关服务;
  • 定时重启,应用进程运行时间久了或许总会产生一些意料之外的问题,定时可以规避一些不可测的情况;
  • 设置异常重启次数,如果应用不断异常重启,并超过一定的限制次数,说明此时的环境长时间处于不可控状态,服务器异常。此时便可停止尝试,发出错误警告通知等。
  1. 🍗我们可以使用简单的nohup命令来运行应用程序,使其作为后台守护进程运行,即使远程连接的SSH断开也不会影响程序的执行。在流行的Linux发行版中往往都默认安装好了nohup命令工具。 命令如下:
nohup ./gf-app &
  1. 🍗pm2 进程守护(开机自启动支持) 全局安装
 npm install pm2 -g

如果提示版本不一致等问题根据提示操作即可

image.png 验证是否安装成功

pm2 -v

image.png

 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
  1. 🍗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

往期目录

ps

最近在代码的海洋里遨游、顺手有个node的服务端部署需要解决一下,如果你也有部署方面的问题,可以做个参考,都是排雷实操,简单化处理、最重要的是问题是连贯性处理的、