【问题标题】:How Can I run PM2 with Angular-Cli? - Angular2如何使用 Angular-Cli 运行 PM2? - 角2
【发布时间】:2023-04-08 18:28:02
【问题描述】:

我该如何运行: ng serve --prod 与 pm2?

ng 来自 angular-cli,Angular2。我在 DigitalOcean 上运行。

我尝试在 ng build --prod 之后的 dist/ 文件夹中使用 http-server -p 4200 -d false 进行测试

当我从域 https://www.unibookkh.com/ 请求时,我收到 404 错误:(我已经设置了 nginx 来监听端口 4200。

我用 http-server 测试,因为我想我也许可以通过这个命令运行 pm2 pm2 start my_app_process.json在哪里

my_app_process.json

{
    "apps": [
        {
            "name": "angular",
            "cwd": "~/angular2",
            "args": "-p 4200 -d false",
            "script": "/usr/bin/http-server"
        }
    ]
}

关于如何让它与 PM2 一起工作的任何更好的想法?

【问题讨论】:

    标签: nginx angular digital-ocean pm2


    【解决方案1】:

    此命令将按预期工作:

    我跑完之后

    ng build --prod

    然后在 dist/ 文件夹中运行以下命令

    pm2 start /usr/bin/http-server -- -p 8080 -d false

    更新

    我找到了更好的解决方案: which ng 然后它将打印 /usr/bin/ng 然后输入这个

    pm2 start /usr/bin/ng -- serve --prod

    【讨论】:

    • 我尝试了您的方法来运行我的应用程序并在 pm2 日志文件中出现错误。 SyntaxError: missing ) after argument list
    • 你也可以pm2 start $(which ng)
    • 它运行良好,但使用大量内存(我知道这不是问题,但少于 100 行的简单应用程序使用超过 400mb)。当然这是角度应用程序的问题。我认为最好的方法是为生产构建应用程序并制作一个简单的 sh 文件并运行它
    • 我试过了,它显示实例状态已启动,但它没有服务
    【解决方案2】:

    但是,如果您需要 ng serve for dev 在 preprod 环境中,您可以在项目的根目录下创建一个 start.sh

    #!/bin/bash
    ng serve --host xxx.xxx.xxx.xxx --port xxxx
    

    然后像这样使用 pm2:

    pm2 start start.sh --name my-pretty-dev-app-run-on-preprod
    

    ;)

    【讨论】:

    • @Julien Moulin,除了 .sh 文件还有其他方法吗?使用现有的 .json 文件我们可以这样做吗?
    • 你的回答节省了很多时间。
    【解决方案3】:

    如果您只想提供静态文件,则新命令已登陆 pm2:

    $ pm2 暴露 [路径] [端口]

    【讨论】:

    • 这个答案与如何使用 pm2 提供 angular2 应用程序没有任何关系
    【解决方案4】:

    ng 毕竟是一个节点模块。

    apps:
    - name: ngserve
      script: 'node_modules/@angular/cli/bin/ng'
      args: 'serve --progress=false --live-reload=false --disable-host-check=true'
      watch: false
      log_date_format: YYYY-MM-DD HH:mm
      merge_logs: true
      out_file: "/dev/null"
      error_file: "/dev/null"
    

    【讨论】:

      【解决方案5】:

      使用 PM2 最新版本

      pm2 ecosystem
      

      比更新

      ecosystem.config.js如下

      module.exports = {
        apps : [{
          name: 'demoapp',
          script: 'node_modules/@angular/cli/bin/ng',
          args: 'serve --host [yourip] --disable-host-check',
          instances: 1,
          autorestart: true,
          watch: false,
          max_memory_restart: '1G',
          env: {
            NODE_ENV: 'development'
          },
          env_production: {
            NODE_ENV: 'production'
          }
        }],
      
        deploy : {
        }
      };
      

      终于

      pm2 开始 & pm2 保存

      【讨论】:

      • 很好的答案,值得更多的支持 - 适用于最新的 pm2 版本 - 尽管在我的回答中看到我必须对此做出的调整
      • 我有完全不同的内容,所以我应该把它们全部删除并把你的代码放在那里吗?我应该修改应用名称还是[您的 ip]?怎么样?
      • @user3486308 是的,您需要更新 [app name] 和 [IP],最重要的是脚本和参数,您可以将它们添加到当前配置中。如果有任何问题,请通过 pastebin 分享配置文件。
      【解决方案6】:

      例如,以下内容在 Angular 项目中为我工作: pm2 start "ng serve --host 0.0.0.0"

      【讨论】:

        【解决方案7】:

        这对我有用。此答案与其他答案之间的主要区别在于,我必须使用 cwd 选项,因为我是从根目录运行 pm2:

        // pm2 start
        // https://pm2.io/doc/en/runtime/guide/ecosystem-file
        // https://pm2.io/doc/en/runtime/reference/ecosystem-file
        
        module.exports = {
          apps: [{
            name: 'fe',
            script: 'node_modules/@angular/cli/bin/ng',
            args: 'serve -o',
            cwd: 'biblical-hebrew-fe',
            max_restarts: 5,
            min_uptime: 3000,
            exec_mode: 'fork',
            instances: 1, // default
            autorestart: true, // default
            watch: false, // default
            max_memory_restart: '1G', // default
            env: {
              NODE_ENV: 'development'
            },
            env_production: {
              NODE_ENV: 'production'
            }
          }],
        
          deploy: {
            production: {
              user: 'node',
              host: '212.83.163.1',
              ref: 'origin/master',
              repo: 'git@github.com:repo.git',
              path: '/var/www/production',
              'post-deploy': 'npm install && pm2 reload ecosystem.config.js --env production'
            }
          }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-03-18
          • 1970-01-01
          • 2022-01-04
          • 2019-08-13
          • 2018-11-11
          • 2017-04-25
          • 1970-01-01
          相关资源
          最近更新 更多