PM2 kullanarak dağıttığım düğüm uygulamam için bir ekosistem.json dosyası var.PM2'yi kullanarak, node.js uygulamamı aynı sunucudaki birden çok ortam ve bağlantı noktasına nasıl dağıtabilirim?
ben o farklı şekillerde bir demet yapılandırılması denedim ama etmektir benim amacı gerçekleştirmek şansları olmadı:
- üretim veya şu anda evreleme çevre (aynı sunucuda her ikisine dağıtmak mümkün).
- Bire dağıtım yaparken, diğeri de çalışmaya devam etmelidir.
- 2 farklı ortamlar farklı portlar (prod = 8000, evreleme = 3000) İlk kazanır çalıştırmak komutu dağıtmak hangisi ne olur
olmalıdır.
pm2 deploy production
ve sonra pm2 deploy staging
yaparsam, yalnızca üretim uygulaması/bağlantı noktası combo sunucuda çalışıyor ve siparişi değiştirirsem tam tersi.
DÜZENLEME: Aşağıdaki conf'ı kullanırsam, pm2 status
'da çalışan 2 uygulama olur, ancak bir netstat
yaparsam, yalnızca ilk bağlantı noktasını görürüm. (centos 6)
Açık bir şey eksik olmalıyım gibi hissediyorum. İşte benim ecosystem.json dosyası, üstte birden çok uygulama bildirimi olmadan ve denedim.
{
/**
* Here we declare the apps that must be managed by PM2
* All options are listed here:
* https://github.com/Unitech/PM2/blob/master/ADVANCED_README.md#json-app-declaration
*
*/
apps : [
{
"name" : "myapp-staging",
"script" : "app.js",
"instances" : "1",
"error_file" : "/var/log/nodejs/myapp.mydomain.com-staging-err.log",
"out_file" : "/var/log/nodejs/myapp.mydomain.com-staging-out.log",
"pid_file" : "/home/node/myapp.mydomain.com-staging.pid",
"exec_mode" : "cluster_mode",
"env_staging" : {
"NODE_ENV": "staging", "PORT": 3000
},
"env_production" : {
"NODE_ENV": "production", "PORT": 8000
}
},
{
"name" : "myapp-production",
"script" : "app.js",
"instances" : "1",
"error_file" : "/var/log/nodejs/myapp.mydomain.com-staging-err.log",
"out_file" : "/var/log/nodejs/myapp.mydomain.com-staging-out.log",
"pid_file" : "/home/node/myapp.mydomain.com-staging.pid",
"exec_mode" : "cluster_mode",
"env_production" : {
"NODE_ENV": "production", "PORT": 8000
}
}
],
/**
* PM2 help you to deploy apps over your servers
* For more help go to :
* https://github.com/Unitech/PM2/blob/master/ADVANCED_README.md#deployment-pm2--090
*/
deploy : {
production : {
user : "node",
host : "node01.mydomain.com",
ref : "origin/master",
repo : "[email protected]:mydomain/mydomain-myapp.git",
path : "/var/production/myapp.mydomain.com-production/",
"post-deploy" : "npm prune && npm install -l && pm2 startOrGracefulReload ecosystem.json --env production",
env : {
NODE_ENV: "production",
PORT: 8000
}
},
staging : {
user : "node",
host : "node01.mydomain.com",
ref : "origin/master",
repo : "[email protected]:mydomain/mydomain-myapp.git",
path : "/var/production/myapp.mydomain.com-staging/",
"post-deploy" : "npm prune && npm install -l && pm2 startOrGracefulReload ecosystem.json --env staging",
env : {
NODE_ENV: "staging",
PORT: 3000
}
}
}
}
Aynı sonuca vardım ve daha iyi bir çözüm bulmayı sabırsızlıkla bekliyorum. Avantaj, isimlerin farklı isimlerle birlikte pm2 listesinde görünmesini sağlamaktır. Örneğin. uygulama aşaması ve uygulama – Bryan