在Linux系统中部署NodeJS项目
在Linux系统中部署NodeJS项目
安装NodeJS
首先进入 Node 官网,下载对应的 Node包

下载下来后是一个后缀为
xz的压缩包,我们把这个包上传到 Linux 系统中的/usr/local中接着
cd到local文件夹下面解压这个压缩包tar -xvf node-v14.17.0-linux-x64.tar.xz
然后修改一下名字,修改为
node,方便我们下面创建软连接mv node-v14.17.0-linux-x64 node
然后进入到
node文件夹里面的bin目录下,查看是否有node和npm
建立软链接,这一步是为了可以在任何目录下都能使用
nodeln -s /usr/local/node/bin/npm /usr/local/bin/ ln -s /usr/local/node/bin/node /usr/local/bin/
设置完成后切换任意目录执行
npm -v,node -v
看到两个版本号表示安装完成
安装pm2
pm2是一个 NODE.JS 的高级生产过程管理器,使用它可以帮助我们轻松的部署运行 Node 项目
安装
npm install pm2 -g
安装完成后会自动安装到我们的 node 目录下,同样的需要个给pm2 建立一个软链接
ln -s /usr/local/node/bin/pm2 /usr/local/bin
下面是 pm2 的一些常用命令
启动:pm2 start demo.js //demo.js是你要启动的app_name|app_id文件
停止:pm2 stop app_name|app_id
删除:pm2 delete app_name|app_id
重启:pm2 restart app_name|app_id
停止所有:pm2 stop all
查看所有的进程:pm2 list
查看所有的进程状态:pm2 status
查看某一个进程的信息:pm2 describe app_name|app_id
参数说明
--watch:监听应用目录源码的变化,一旦发生变化,自动重启。如果要精确监听、不见听的目录,最好通过配置文件
-i --instances:启用多少个实例,可用于负载均衡。如果-i 0或者-i max,则根据当前机器核数确定实例数目,可以弥补node.js缺陷
--ignore-watch:排除监听的目录/文件,可以是特定的文件名,也可以是正则。比如--ignore-watch="test node_modules "some scripts"
-n --name:应用的名称,查看应用信息的时候可以用到
-o --output <path>:标准输出日志文件的路径,有默认路径
-e --error <path>:错误输出日志文件的路径,有默认路径
--interpreter <interpreter>:the interpreter pm2 should use for executing app (bash, python...)
如完整参数命令:
pm2 start demo.js --watch -i 2 //开启2个进程
pm2 start app.js -i max //根据机器CPU核数,开启对应数目的进程
更多命令可以去官网查看
这里我们写一个测试代码,代码如下
const express = require("express");
const app = express();
app.get("/", (req, res) => {
res.send("Hello World");
});
app.listen(8080, () => { // 启动8080端口
console.log("run success");
});
然后把测试项目上传到 /usr/web 目录下,在这个文件夹下运行 pm2 start index.js

项目启动成功后可以使用 ip 地址来访问我们启动的项目
linux查看IP地址
ifconfig -a
红框所标注的就是ip地址

现在我们使用 192.168.56.128:8080 来尝试访问一下看能否正常访问

可以看到已经可以正常访问了,这里有一个坑会导致我们无法访问,就是 linux 没有开放我们启动的8080端口,导致无法在外界访问到,下面是开放端口方法
linux开放访问端口
第一步:开放端口 以8080端口为例
firewall-cmd --zone=public --add-port=8080/tcp --permanent
命令含义
--zone #作用域
--add-port=8080/tcp #添加端口,格式为 端口/通讯协议
-- permanent #永久生效
成功后返回 success
第二步:重启Centos防火墙
firewall-cmd --reload
成功后返回 success
上述步骤操作完成后就可以正常访问 8080 端口了,开放其他端口和上述方法一致
在Linux系统中部署NodeJS项目的更多相关文章
- 在裸机centos7系统中部署django项目的过程
概要 本文用一台安装了centos7.5系统的裸奔Linux机器(当然是虚拟机)详细讲解从无到有部署django项目的过程. 安装必要的工具 配置yum源 至于什么是yum源大家请自行百度,本人用的是 ...
- Redis学习笔记(一) ---- Linux系统中部署Redis存储系统
Redis 一.Redis简介 1.Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合 ...
- Linux 系统中部署 LNMP 高可用负载均衡架构集群实现动态博客
(一)设计思路 高可用:keepalived 解决方案 负载均衡:(lvs)DR做轮询,需要一个调度器,后端节点两个(部署nginx动态博客),通过一个vip去访问动态博客 后端节点需要部署动态博客作 ...
- linux服务器部署nodejs项目
一.安装nodejs 1.去官网下载和自己系统匹配的文件: 英文网址:https://nodejs.org/en/download/ 中文网址:http://nodejs.cn/download/ 通 ...
- linux 环境下tomcat中部署jfinal项目
tomcat中部署jfinal项目 问题现象如下图 问题描述: 我在自己的windows7系统上tomcat下面跑这个项目没有任何问题吗,但是当我把项目上传到linux服务器上的tomcatwebap ...
- Linux系统中ElasticSearch搜索引擎安装配置Head插件
近几篇ElasticSearch系列: 1.阿里云服务器Linux系统安装配置ElasticSearch搜索引擎 2.Linux系统中ElasticSearch搜索引擎安装配置Head插件 3.Ela ...
- asp.net core2.1 部署centos7/linux系统 -- 安装部署(一)
原文:asp.net core2.1 部署centos7/linux系统 -- 安装部署(一) 1.安装dotnet sdk(添加产品秘钥与yum源) 添加yum源:sudo rpm -Uvh htt ...
- Linux系统中tomcat的安装及优化
Linux系统中Tomcat 8 安装 Tomcat 8 安装 官网:http://tomcat.apache.org/ Tomcat 8 官网下载:http://tomcat.apache.org/ ...
- 【Docker】在Linux系统中安装Docker虚拟机、启动停止重启查看Docker命令
安装Docker 文章目录 安装Docker Docker虚拟机架构 在Linux系统中安装Docker虚拟机 管理Docker虚拟机 参考资料 Docker虚拟机架构 Docker创建的所有虚拟实例 ...
随机推荐
- 2018年11月16日SQL Server实验内容(触发器实验)
--注意:先把studentmanager数据库中的所有表用select into命令复制一份, --然后用复制后新表完成下面的实验,同时,对每个触发器都要进行验证. select *into dep ...
- P1055_ISBN号码(JAVA语言)
题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符, 其规定格式如x-xxx-xxxxx-x,其中符号-就是分隔符(键盘上的减号), 最后一位是 ...
- DEV表格设置列不可编辑
现在是可编辑的 Run Designer--Columns--Column options下的AllowEdit属性改为false即可
- SFDC 删除操作时:验证或触发后续操作的一般解决方案
删除操作比较特殊,不能通过Workflow Rule和Process Builder,Validation Rule来Check和相应做后续操作. 目前调查只有两种工具可以监听到删除操作: Apex ...
- Android Studio 上传本地项目到 GitHub 上
•准备工作 注册 GitHub 账号 [GitHub官网] [视频教程] 安装 Git [官方链接] [极速下载链接] 创建本地代码仓库 在桌面上,鼠标右击,选择 Git Bash Here : 接 ...
- 有关指针和C语言中的常量
常量类型(五种): 字面常量(2,3,6....) ; enum 定义的枚举常量; 字符常量('a','b'....) ; ...
- [Fundamental of Power Electronics]-PART II-7.交流等效电路建模-7.1 引言
7.1 引言 变换器系统总是需要反馈的.例如,在典型的DC-DC变换器应用中,无论输入电压\(V_{g}(t)\)和输出有效负载\(R\)如何变化,都必须使输出电压\(v(t)\)保持恒定.这是通过构 ...
- 死磕Spring之AOP篇 - Spring AOP总览
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读. Spring 版本:5.1 ...
- Leedcode算法专题训练(字符串)
4. 两个字符串包含的字符是否完全相同 242. Valid Anagram (Easy) Leetcode / 力扣 可以用 HashMap 来映射字符与出现次数,然后比较两个字符串出现的字符数量是 ...
- 弦图及其在 OI 中的现代应用
八月份的时候得知要填综评表格,综评表格里面又需要一个研究性学习报告,而我连研究性学习课的老师长啥样都不知道.于是我把两份 OI 笔记拼拼凑凑成了这篇文章充当两份研究性学习报告之一(另一份可能更有趣一些 ...