把本地的文件拷贝到远程
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 并确保全局安装成功。
解压文件
bash
unzip nodedemo.zip -d /home/nodedemo/
在服务器安装以来
bash
npm i
端口放行 80 端口
阿里云服务器 实例 - 安全组 - 配置规则 - 添加规则 http(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
守护进程
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
删掉 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/