Node.js 如何在pm2中设置子域?
我有nodejs应用程序。通过pm2和nginx服务器运行 但现在我需要将localhost:8082服务器更改为api.example.com(子域) 我做了一些操作,现在它完全破产了 所以,我从头开始 我有一个带有nodejs代码的文件夹。我有环境变量,所以我通过Node.js 如何在pm2中设置子域?,node.js,ubuntu,nginx,pm2,Node.js,Ubuntu,Nginx,Pm2,我有nodejs应用程序。通过pm2和nginx服务器运行 但现在我需要将localhost:8082服务器更改为api.example.com(子域) 我做了一些操作,现在它完全破产了 所以,我从头开始 我有一个带有nodejs代码的文件夹。我有环境变量,所以我通过pm2生态系统创建了一个生态系统 生态系统: module.exports = { apps : [{ script: 'app.js', watch: '.', env: { "
pm2生态系统创建了一个生态系统
生态系统:
module.exports = {
apps : [{
script: 'app.js',
watch: '.',
env: {
"PORT": 3000,
"NODE_ENV": "development"
},
env_production: {
"PORT": 81,
"NODE_ENV": "production",
}
}],
deploy : {
production : {
user : 'SSH_USERNAME',
host : 'SSH_HOSTMACHINE',
ref : 'origin/master',
repo : 'GIT_REPOSITORY',
path : 'DESTINATION_PATH',
'pre-deploy-local': '',
'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production',
'pre-setup': ''
}
}
};
然后运行pm2 start econosystem.config.js--env production
pm2日志:
PM2 | App [app:0] exited with code [1] via signal [SIGINT]
PM2 | App [app:0] starting in -fork mode-
PM2 | App [app:0] online
0|app | WARNING: NODE_APP_INSTANCE value of '0' did not match any instance config file names.
0|app | WARNING: See https://github.com/lorenwest/node-config/wiki/Strict-Mode
0|app | Error: listen EADDRINUSE: address already in use :::80
0|app | at Server.setupListenHandle [as _listen2] (net.js:1313:16)
0|app | at listenInCluster (net.js:1361:12)
0|app | at Server.listen (net.js:1447:7)
0|app | at Function.listen (/var/www/backend/node_modules/express/lib/application.js:618:24)
0|app | at Object.<anonymous> (/var/www/backend/app.js:109:5)
0|app | at Module._compile (internal/modules/cjs/loader.js:1137:30)
0|app | at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
0|app | at Module.load (internal/modules/cjs/loader.js:985:32)
0|app | at Function.Module._load (internal/modules/cjs/loader.js:878:14)
0|app | at Object.<anonymous> (/usr/lib/node_modules/pm2/lib/ProcessContainerFork.js:32:23)
0|app | at Module._compile (internal/modules/cjs/loader.js:1137:30)
0|app | at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
0|app | at Module.load (internal/modules/cjs/loader.js:985:32)
0|app | at Function.Module._load (internal/modules/cjs/loader.js:878:14)
0|app | at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
0|app | at internal/main/run_main_module.js:17:47 {
0|app | code: 'EADDRINUSE',
0|app | errno: 'EADDRINUSE',
0|app | syscall: 'listen',
0|app | address: '::',
0|app | port: 80
0|app | }
PM2 | App [app:0] exited with code [1] via signal [SIGINT]
PM2 | App [app:0] starting in -fork mode-
PM2 | App [app:0] online
PM2 |应用程序[App:0]通过信号[SIGINT]退出,代码为[1]
PM2 |应用程序[应用程序:0]以分叉模式启动-
PM2 |应用程序[应用程序:0]在线
0 | app |警告:“0”的节点| app |实例值与任何实例配置文件名都不匹配。
0 |应用程序|警告:请参阅https://github.com/lorenwest/node-config/wiki/Strict-Mode
0 |应用程序|错误:侦听EADDRINUSE:地址已在使用中:::80
0 | app | at Server.setupListenHandle[as | u listen2](net.js:1313:16)
0 | app | at listenInCluster(net.js:1361:12)
0 | app | at Server.listen(net.js:1447:7)
0 | app | at Function.listen(/var/www/backend/node_modules/express/lib/application.js:618:24)
0 | app | at对象。(/var/www/backend/app.js:109:5)
0 | app | at Module._编译(internal/modules/cjs/loader.js:1137:30)
0 | app | at Object.Module._extensions..js(internal/modules/cjs/loader.js:1157:10)
0 | app | at Module.load(内部/modules/cjs/loader.js:985:32)
0 | app | at Function.Module._load(内部/modules/cjs/loader.js:878:14)
0 | app | at对象。(/usr/lib/node_modules/pm2/lib/ProcessContainerFork.js:32:23)
0 | app | at Module._编译(internal/modules/cjs/loader.js:1137:30)
0 | app | at Object.Module._extensions..js(internal/modules/cjs/loader.js:1157:10)
0 | app | at Module.load(内部/modules/cjs/loader.js:985:32)
0 | app | at Function.Module._load(内部/modules/cjs/loader.js:878:14)
0 | app |在Function.executeUserEntryPoint[作为runMain](internal/modules/run|u main.js:71:12)
0 | app |位于内部/main/run|u main_模块。js:17:47{
0 |应用程序|代码:'EADDRINUSE',
0 | app | errno:'EADDRINUSE',
0 |应用程序|系统调用:“侦听”,
0 |应用程序|地址:':',
0 |应用程序|端口:80
0 | app |}
PM2 | App[App:0]通过信号[SIGINT]退出,代码为[1]
PM2 |应用程序[应用程序:0]以分叉模式启动-
PM2 |应用程序[应用程序:0]在线
所以,我看到它试图从80端口开始
但我需要从子域开始:api.example.com
我完全搞糊涂了处理域/子域通常是一项nginx工作(您需要根据HTTP
Host
header值/请求URI设置正确的后端来代理传入的请求),但在继续nginx安装之前,您需要弄清楚为什么您的节点应用程序尝试侦听端口80而不是81。@IvanShatsky我从一开始就这么做了,并发布了一个新问题,其中包含了完整的细节,也许您可以提供帮助