centos7部署nodejs环境

把本地的文件拷贝到远程

bash 复制代码
scp /Users/shaohai.li/project/server-demo/nodedemo.zip  root@121.40.31.155:~

登录服务器

bash 复制代码
ssh root@121.40.31.155

安装 nodejs 环境 v16.14.2

CentOS

bash 复制代码
# 下载
wget https://nodejs.org/dist/v16.14.2/node-v16.14.2-linux-x64.tar.xz

# 解压
tar xf node-v16.14.2-linux-x64.tar.xz

# 进入解压目录
cd node-v16.14.2-linux-x64/

# 执行node命令 查看版本
./bin/node -v

# 建立软连接
# 注意:/usr/software/nodejs 目录必须是你当前的代码node解压后的目录
# sudo ln -s /usr/software/nodejs/bin/npm   /usr/local/bin/
# sudo ln -s /usr/software/nodejs/bin/node   /usr/local/bin/
[root@iZiqeav84ffabkZ node-v16.14.2-linux-x64]# sudo ln -s /root/node-v16.14.2-linux-x64/bin/npm /usr/local/bin/
[root@iZiqeav84ffabkZ node-v16.14.2-linux-x64]# sudo ln -s /root/node-v16.14.2-linux-x64/bin/node /usr/local/bin/

您可以使用以下命令查找 Node.js 全局安装的路径:

bash 复制代码
npm root -g

该命令将返回 Node.js 全局安装路径。在 CentOS 中,全局安装路径通常为 /usr/lib/node_modules 或 /usr/share/node_modules。

如果找到了全局安装路径,您可以将该目录添加到您的 PATH 环境变量中,以便在终端中使用全局安装的模块。例如,如果全局安装路径为 /usr/lib/node_modules,则可以按照以下步骤操作:

打开 ~/.bashrc 文件 运行以下命令打开 ~/.bashrc 文件:

bash 复制代码
vi ~/.bashrc

添加 PATH 环境变量 在文件的末尾添加以下行:

conf 复制代码
export PATH=$PATH:/usr/lib/node_modules/.bin
; export PATH=$PATH:/root/node-v16.14.2-linux-x64/bin

这将把 /usr/lib/node_modules/.bin 目录添加到您的 PATH 环境变量中。

保存并退出文件 按 Esc 键退出编辑模式,并运行以下命令保存并退出文件:

ruby 复制代码
:wq

重新加载 .bashrc 文件 运行以下命令以重新加载 .bashrc 文件并使更改生效:

bash 复制代码
source ~/.bashrc

现在,您应该能够在终端中正常运行 forever 命令了。如果在上述步骤中仍然无法找到全局安装路径,请重新安装 Node.js 并确保全局安装成功。

www.runoob.com/nodejs/node...

解压文件

bash 复制代码
unzip nodedemo.zip -d /home/nodedemo/

在服务器安装以来

bash 复制代码
npm i

端口放行 80 端口

阿里云服务器 实例 - 安全组 - 配置规则 - 添加规则 http(80)

访问如下地址可以看到网站效果

http://121.40.31.155:80

报错 80 端口被占用

bash 复制代码
[root@iZiqeav84ffabkZ nodedemo]# npm run prod

> server-demo@1.0.0 prod
> node index.js

node:events:504
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::80
    at Server.setupListenHandle [as _listen2] (node:net:1330:16)
    at listenInCluster (node:net:1378:12)
    at Server.listen (node:net:1465:7)
    at Function.listen (/home/nodedemo/node_modules/express/lib/application.js:635:24)
    at Object.<anonymous> (/home/nodedemo/index.js:10:5)
    at Module._compile (node:internal/modules/cjs/loader:1103:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1157:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
Emitted 'error' event on Server instance at:
    at emitErrorNT (node:net:1357:8)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  code: 'EADDRINUSE',
  errno: -98,
  syscall: 'listen',
  address: '::',
  port: 80
}
[root@iZiqeav84ffabkZ nodedemo]#

杀死进程 80 端口占用

bash 复制代码
sudo lsof -i :80
[root@iZiqeav84ffabkZ nodedemo]# sudo lsof -i :80
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
AliYunDun 1392 root   13u  IPv4  29874      0t0  TCP iZiqeav84ffabkZ:40476->100.100.30.26:http (ESTABLISHED)
node      2039 root   19u  IPv6  48531      0t0  TCP *:http (LISTEN)
bash 复制代码
sudo kill -9 {PID}
sudo kill -9 2039

守护进程

www.npmjs.com/package/for...

bash 复制代码
npm install forever -g

[root@iZiqeav84ffabkZ nodedemo]# npm install forever -g
npm WARN deprecated nicescroll@3.7.4: Please use official npm package at https://www.npmjs.com/package/jquery.nicescroll

added 13 packages, and audited 14 packages in 9s

1 package is looking for funding
  run `npm fund` for details

found 0 vulnerabilities

守护进程,即使命令行观点依然运行 nodejs

bash 复制代码
forever start index.js

http://121.40.31.155:80

删掉 public 目录下面的文件

bash 复制代码
# 登录云服务器
ssh root@121.40.31.155

# 删除文件
rm -rf /home/nodedemo/public/*

scp 把本地的代码拷贝到远程

bash 复制代码
scp [本地代码路径]  root@121.40.31.155:/home

解压代码到 public

bash 复制代码
unzip [文件名称.zip] -d /home/nodedemo/public/
相关推荐
用户4822137167751 小时前
C++——复合数据类型(数组、字符串)
后端
用户903700167151 小时前
分布式阻塞式限流学习及分享
后端
熊猫片沃子1 小时前
Mybatis中进行批量修改的方法
java·后端·mybatis
养鱼的程序员1 小时前
零基础搭建个人网站:从 Astro 框架到 GitHub 自动部署完全指南
前端·后端·github
白应穷奇1 小时前
编写高性能数据处理代码 01
后端·python
杨充1 小时前
03.接口vs抽象类比较
前端·后端
一只叫煤球的猫1 小时前
基于Redisson的高性能延迟队列架构设计与实现
java·redis·后端
卡尓1 小时前
使用 Layui 替换 Yii 基础模板的默认 Bootstrap 样式并尝试重写导航栏组件
后端
WhyWhatHow2 小时前
JEnv:新一代Java环境管理器,让多版本Java管理变得简单高效
java·后端
Rust语言中文社区2 小时前
Rust 训练营二期来袭: Rust + AI 智能硬件
开发语言·后端·rust