在离线RHEL上安装pm2的具体命令是什么

问题描述 投票:0回答:5

首先,这不是以下重复的问题:-

如何在离线服务器上安装npm -g

https://stackoverflow.com/questions/40976100/how-to-installl-pm2-on-offline-server

我在离线 REHL 服务器上安装了 npmbox (https://github.com/arei/npmbox),但我仍然不知道如何使用它来安装 pm2 或任何其他软件包。

请指教。

node.js linux ubuntu redhat pm2
5个回答
32
投票

您使用 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 中


1
投票
  • 在可以访问互联网的 Linux 机器上:
    • 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
    (现在应该可以工作)

1
投票

离线安装 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

0
投票

@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

0
投票

另一种方式,

只需在您的机器上编写一个节点服务 pm2 不再需要运行您的应用程序。

步骤-1

运行命令查找节点路径 哪个节点 --> /opt/rh/rh-nodejs14/root/usr/bin/node

步骤-2

cd /etc/systemd/system

步骤-3

编写一个节点的服务如下:-

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!

--> 保存

步骤-4

启动节点服务

systemctl start node.service

步骤-5

systemctl status node.service

步骤-6

检查您的应用程序您的节点是否在没有 pm2 的情况下运行

© www.soinside.com 2019 - 2024. All rights reserved.