Node.js 如何离线安装及应用如何在无外网连接服务器上进行部署?
Node.js 如何离线安装及应用如何在无外网连接服务器上进行部署?
离线安装Node.js已经搞定了,可以用.tar包,然后在服务器上进行make && make install,但这种方式需要安装g++等,服务器不一定有安装或者提供权限,有没有别的办法?
部署Node.js应用后,很多时候需要用npm安装不同的module,如何在没有外网连接的服务器上安装? 直接将开发测试服务器下的目录拷贝过去?
谢谢指点。
Node.js 离线安装及应用在无外网连接服务器上的部署
离线安装 Node.js
在无法访问互联网的服务器上安装 Node.js 可以通过预编译好的二进制文件来完成。以下是一个简单的步骤指南:
-
获取 Node.js 二进制文件: 在有网络连接的机器上下载 Node.js 的预编译版本(例如
.tar.gz
文件)。你可以从 Node.js 官方网站下载适合你操作系统的版本。 -
传输文件到目标服务器: 使用
scp
或其他工具将下载好的文件传输到目标服务器。例如:scp node-v14.17.0-linux-x64.tar.gz user[@your-server](/user/your-server):/path/to/destination
-
解压并安装: 在目标服务器上解压文件,并将其移动到合适的位置。例如:
tar -xzf node-v14.17.0-linux-x64.tar.gz sudo mv node-v14.17.0-linux-x64 /usr/local/nodejs sudo ln -s /usr/local/nodejs/bin/node /usr/local/bin/node sudo ln -s /usr/local/nodejs/bin/npm /usr/local/bin/npm
在无外网连接的服务器上部署 Node.js 应用
在没有外网连接的情况下部署 Node.js 应用,可以通过以下方法来处理依赖模块的安装问题:
-
在有外网连接的机器上安装模块并导出清单: 在有外网连接的开发或测试服务器上安装所有需要的 npm 模块,并生成一个
package-lock.json
文件。cd your-node-app npm install
-
传输应用及其依赖到目标服务器: 将整个项目目录和
node_modules
目录一起传输到目标服务器。例如:tar -czf app.tar.gz . scp app.tar.gz user[@your-server](/user/your-server):/path/to/destination
-
在目标服务器上解压并运行应用: 在目标服务器上解压文件,并确保
node
和npm
已经正确配置。例如:tar -xzf app.tar.gz -C /path/to/destination cd /path/to/destination npm install --production node app.js
通过以上步骤,你可以在没有外网连接的服务器上成功安装和部署 Node.js 应用。这种方法避免了在目标服务器上使用复杂的编译工具链,同时确保了应用的所有依赖项都能正确安装。
可以设置下npm全局模块的位置
对于这个问题,你可以通过以下步骤解决:
-
离线安装 Node.js
如果你无法在线安装 Node.js,可以下载预编译好的二进制文件。这些文件通常可以在 Node.js 官方网站或镜像站点上找到。例如,你可以选择一个
.tar.xz
文件,然后将其上传到你的服务器上。接着解压并安装它。示例命令:
tar -xf node-v16.15.0-linux-x64.tar.xz sudo mv node-v16.15.0-linux-x64 /usr/local/nodejs
然后将
/usr/local/nodejs/bin
添加到系统的PATH
环境变量中。 -
离线安装 npm 模块
在有网络连接的环境中,使用
npm
的--save
参数将项目依赖保存到package.json
文件中。然后,在无网络环境的服务器上,将这些依赖下载到本地,并将它们复制到目标服务器的node_modules
目录下。示例命令:
# 在有网络的环境中运行 npm install --save <package-name> # 将生成的 node_modules 文件夹上传到无网络的服务器 scp -r node_modules user[@your-server](/user/your-server):/path/to/project/
确保所有依赖项都正确地放置在目标服务器上的
node_modules
文件夹中,这样你的应用就可以正常运行了。
通过上述方法,即使服务器没有网络连接,你也可以顺利安装 Node.js 及其相关模块。