可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
How can I run:
ng serve --prod
with pm2?
ng serve from angular-cli, Angular2. I'm running on DigitalOcean.
I have tried to test with http-server -p 4200 -d false
in the dist/ folder after ng build --prod
When I request from the domain https://www.unibookkh.com/, i got 404 error: (I've already setup nginx to listen to port 4200.
I test with http-server because I think I maybe can run pm2 through this command
pm2 start my_app_process.json
where
my_app_process.json
{
"apps": [
{
"name": "angular",
"cwd": "~/angular2",
"args": "-p 4200 -d false",
"script": "/usr/bin/http-server"
}
]
}
Any better ideas of how to get it working with PM2?
回答1:
This command would work as expected:
after I run
ng build --prod
then run the following command in the dist/ folder
pm2 start /usr/bin/http-server -- -p 8080 -d false
Update
I have found a better solution:
which ng
then it will print /usr/bin/ng
then type this
pm2 start /usr/bin/ng -- serve --prod
回答2:
But, if you need ng serve for dev in preprod env, you can create a start.sh at root of your project
#!/bin/bash
ng serve --host xxx.xxx.xxx.xxx --port xxxx
And use pm2 like that :
pm2 start start.sh --name my-pretty-dev-app-run-on-preprod
;)
回答3:
With PM2 recent version
pm2 ecosystem
than update
ecosystem.config.js as follows
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 : {
}
};
finally
pm2 start & pm2 save
回答4:
ng is a node module after all.
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:
The following, for example, worked for me from the angular project:
pm2 start "ng serve --host 0.0.0.0"
回答6:
This worked for me. The key difference here between this answer and the other answers is that I had to use the cwd
option since I was running pm2 from a root directory:
// 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'
}
}
}
回答7:
If you just want to serve static files, a new command has landed in pm2:
$ pm2 expose [path] [port]