Pm2でng serve --prod
を実行するにはどうすればよいですか?
ngは、angular-cli、Angular2から提供されます。 DigitalOceanで実行しています。
http-server -p 4200 -d false
の後にdist /フォルダーのng build --prod
でテストを試みました
ドメイン https://www.unibookkh.com/ から要求すると、404エラーが発生します(nginxはポート4200をリッスンするようにすでに設定されています。
私は多分このコマンドpm2 start my_app_process.json
でpm2を実行できると思うので、http-serverでテストします
my_app_process.json
{
"apps": [
{
"name": "angular",
"cwd": "~/angular2",
"args": "-p 4200 -d false",
"script": "/usr/bin/http-server"
}
]
}
PM2で動作させるためのより良いアイデアはありますか?
このコマンドは期待どおりに機能します。
私が走った後
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
ただし、開発環境のpreprod envでng serveが必要な場合は、プロジェクトのルートに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
;)
PM2の最新バージョン
pm2 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を実行していたため、cwd
オプションを使用する必要があったことです。
// 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: '[email protected]:repo.git',
path: '/var/www/production',
'post-deploy': 'npm install && pm2 reload ecosystem.config.js --env production'
}
}
}
結局のところ、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"
たとえば、angular project:pm2 start "ng serve --Host 0.0.0.0"