首先,这不是以下重复的问题:-
https://stackoverflow.com/questions/40976100/how-to-installl-pm2-on-offline-server
我在离线 REHL 服务器上安装了 npmbox (https://github.com/arei/npmbox),但我仍然不知道如何使用它来安装 pm2 或任何其他软件包。
请指教。
您使用 npm install & pack
首先在在线机器上安装
$ npm install pm2
然后你就可以打包了
$ npm pack pm2
这将为您提供一个 tar 文件 - 您将该 tar 文件复制到离线计算机并安装,就像
$ npm install pm2-2.2.1.tgz
但是,上述内容仅为特定模块创建一个 tarball,排除依赖项,并且您可能仍然有需要解决的依赖项。虽然您可以简单地手动遍历并打包每个依赖项,但有一个模块可以为您自动执行此操作
$ npm install -g npm-bundle
那么你可以做
$ npm-bundle pm2
对于单个软件包,或者如果您有适合您的项目的
package.json
$ npm-bundle
将所有内容打包到一个大 tarball 中
cd /home/myName/Downloads
rm -r *
(清除文件夹内容)npm i -g npm-bundle
(如果您还没有该软件包,请全局安装)npm i pm2
(将创建node_modules、package.json和package-lock.json)npm-bundle pm2
(这将创建一个 .tgz 文件).tgz
文件移动到离线机器上,解压(tar -xvzf pm2-#.#.#.tgz
),将其文件夹重命名为pm2
(mv package pm2
)npm root -g
(将向您展示全局包的文件放置位置)cp -r pm2 /usr/lib/node_modules/
ln -s /usr/lib/node_modules/pm2/bin/pm2 /usr/local/bin/pm2
(为 pm2 命令创建符号链接)pm2 ls
(现在应该可以工作)离线安装 pm2 的另一种方法是:
使用@soren提到的上述步骤创建tar文件。
在我的例子中,安装在执行时挂起
npm install pm2.tar.gz
。
npm install pm2.tar.gz
[..................] - fetchMetadata: sill resolveWithNewModule [email protected] checking installable status
[..................] - fetchMetadata: sill resolveWithNewModule [email protected] checking installable status
为了解决这个问题,我添加了 npm 注册表,但是 不起作用。
npm config set registry="http://registry.npmjs.org"
服务器位于 DMZ 或私有子网中,但无法正常工作。
解决方案:-
获取node_module目录的安装路径
#npm config get prefix
解压tar文件并将pm2目录复制到node_module
#tar -zxvf pm2.tar.gz
#cp pm2 /usr/local/lib/node_modules/npm/node_modules/ -r
cd 进入 /usr/bin 和 Crete pm2 的 simlink
# cd /usr/bin
#ln -s /usr/local/lib/node_modules/npm/node_modules/pm2/bin/pm2 pm2
检查 pm2 命令输出及其输出。
# pm2
usage: pm2 [options] <command>
pm2 -h, --help all available commands and options
pm2 examples display pm2 usage examples
pm2 <command> -h help on a specific command
Access pm2 files in ~/.pm2
@Soren 的回答对我有用。要全局安装它,您需要将 -g 参数传递给它。
在 OpenSUSE 15 Enterprise 上进行了测试。
例如:
ip-192-168-2-36:~ # npm install pm2-5.1.2.tgz -g
npm WARN deprecated [email protected]: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
added 181 packages, and audited 182 packages in 5s
12 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
ip-192-168-2-36:~ # pm2 -v
[PM2] Spawning PM2 daemon with pm2_home=/root/.pm2
[PM2] PM2 Successfully daemonized
5.1.2
如果没有 -g 参数,pm2 命令将无法工作。
ip-192-168-2-36:~ # pm2
-bash: /usr/local/bin/pm2: No such file or directory
另一种方式,
只需在您的机器上编写一个节点服务 pm2 不再需要运行您的应用程序。
运行命令查找节点路径 哪个节点 --> /opt/rh/rh-nodejs14/root/usr/bin/node
cd /etc/systemd/system
编写一个节点的服务如下:-
vi node.service
[Unit]
Description=Node Service for Dashboard Application
After=syslog.target
[Service]
User=root
ExecStart=/opt/rh/rh-nodejs14/root/usr/bin/node
/home/node/deployed/backend/server.js SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
:wq!
--> 保存
启动节点服务
systemctl start node.service
systemctl status node.service
检查您的应用程序您的节点是否在没有 pm2 的情况下运行