【问题标题】:Running NodeJs http-server forever with PM2使用 PM2 永远运行 NodeJs http-server
【发布时间】:2020-09-20 19:06:01
【问题描述】:

我的问题是关于结合 PM2 运行 HTTP-server。

我面临的问题是:

  1. HTTP-server 需要输入一个作为网站根目录的文件夹和一个运行网站的端口号。
  2. PM2 无法识别 HTTP-server 命令,即使使用 -g 选项安装了 HTTP-server。

所以我尝试了以下方法(注意应该将参数传递给 HTTP 服务器脚本的双破折号:

/node_modules/http-server/lib$ pm2 start http-server.js -- /home/unixuser/websiteroot -p8686

但它不起作用。

我也试过了:

http-server /home/unixuser/websiteroot -p8686

哪个有效,但没有 pm2 的大力支持?

任何建议都会很棒,谢谢!

【问题讨论】:

  • 你可以去你的构建路径并点击:build/prod$ sudo pm2 start /usr/local/bin/http-server -p 8080

标签: node.js httpserver pm2


【解决方案1】:

你几乎拥有它。

通过执行检查http-server所在的位置:

$ which http-server

你应该得到这样的东西/usr/bin/http-server

然后cd 到您要从中提供文件并执行的目录:

$ pm2 start /usr/bin/http-server --name my-file-server -- -p 8080 -d false

--name my-file-server 是可选的,但需要-- 才能将参数传递给http-server 命令。

【讨论】:

  • 您通常会在同一台机器上拥有同一个可执行文件的多个版本/安装,which 可以方便地查看哪个与命令相关联。
  • 感谢-- 将参数传递给 http-server,我就是为此而来
【解决方案2】:
pm2 start <location>/http-server --name http-server -- -p <port> -d false

PM2 模块本身有内置的静态文件来提供服务,类似于 http-server https://pm2.keymetrics.io/docs/usage/expose/

pm2 serve <path> <port>

【讨论】:

    【解决方案3】:
    pm2 start 'http-server-spa websiteroot index.html 8080'
    

    【讨论】:

      【解决方案4】:

      如果我们有一个由 grunt 生成的构建,则转到它的路径并点击:

      ~/app/build/prod$ sudo pm2 start /usr/local/bin/http-server -p 8080
      

      现在在localhost:8080查看应用状态

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-19
        • 1970-01-01
        • 2018-10-03
        相关资源
        最近更新 更多