Как заставить PM2 запускать Angular Universal? - PullRequest
0 голосов
/ 24 октября 2019

Я развернул приложение Angular Universal на рабочем сервере. Я запускаю его с PM2, и он работает. Тем не менее, он не запускает универсальную сторону приложения. Когда я просматриваю исходный текст веб-страницы, я вижу не содержимое, а тег app-root.

Как будто PM2 запустил обычный Angular, выполняя 'ng serve' вместо 'npmзапустите serve: ssr 'для Angular Universal.

Это (часть) моего package.json со сценариями. Должен ли я где-то здесь вставить npm run serve: ssr, чтобы эта команда запускалась, когда я вызываю 'start2 server.js PM2'?

  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e",
    "compile:server": "webpack --config webpack.server.config.js --progress --colors",
    "serve:ssr": "node server",
    "build:ssr": "npm run build:client-and-server-bundles && npm run compile:server",
    "build:client-and-server-bundles": "ng build --prod && ng run AppName:server:production --bundleDependencies all"
  }

Обновление

Поскольку я получал ошибку 403, веб-хост установил корневой каталог документа Apache для папки браузера, потому что именно там находится index.html. Это может быть причиной того, что приложение не загрузит универсальную часть приложения? Потому что он сейчас не видит папку сервера? Вот как выглядит структура моей папки:

domains
    - appname.com
        - public_html
            - browser (=> this is the document root)
                - index.html
                - .htaccess
                - other files...
            - server
            - server.js
            - package.json

И мой файл .htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d

    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^(.*) /index.html [NC,L]
</IfModule>

1 Ответ

0 голосов
/ 25 октября 2019

После того, как вы создали свои пакеты и развернули все на своем веб-сервере, вы можете просто заставить pm2 запустить файл server.js

Вот файл pm2config.json, который мы используем в нашем проекте

{
  "apps": [
       {
    "name": "universalService",
    "script": "./dist/server.js",
    "env": {
      "NODE_ENV": "",
      "watch": false
    },
    "env_production": {
      "NODE_ENV": "production"
    },


    }
  ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...