现在,每当我想将node.js服务器部署到我的生产服务器时,我需要更改我的数据库和外部API的各种连接的所有IP/DNS /用户名/密码.
这个过程很烦人,有没有办法验证当前运行的node.js实例是在cloud9ide还是实际上我的生产中的智能机器?
如果我能够在我的运行代码中运行我的node.js实例运行的服务器,我将添加一个条件,将值设置为prod或dev.
谢谢
首先 - 关于我的背景:我已经编程了一段时间(此时为10年),并且在编写想法时非常称职.我在一年多前开始从事网络应用程序编程工作,幸好发现了nodeJS,它使网络应用程序的创建感觉更像传统的编程.现在,我有一个node.js应用程序,我已经开发了一段时间,现在正在网络上生产.我的主要困惑源于这样一个事实,即我对Web开发世界很陌生,并且在监控我的应用程序时并不知道什么是重要的,什么是不重要的.
我正在使用Joyent SmartMachine,看看他们提供的分析选项有点压倒性.有很多不同的选项和配置,我不知道每个分析真正起作用的目的.对于下面的问题,我会感谢任何答案,无论是针对Joyent的云分析还是完全一般的.
现在,我主要关心的是弄清楚我的应用程序如何利用我运行的服务器.我想知道我的应用程序是否分配了适当数量的资源.它收到的请求数量是否会使服务器过度使用,还是需要额外的资源?为此目的,为NodeJS应用程序查看哪些分析非常重要?(如果有不同的话,在单独的服务器上使用MongoDB和Redis)
在管理正在生产的服务器时,还有哪些其他统计数据通常非常重要?我习惯于运行一次以执行特定操作的程序(例如,一旦计算出图像就完成运行的光线跟踪器),而不是连续运行并与许多客户端交互的web应用程序.我确信有很多事情对长期服务器管理员来说是显而易见的,而不是像我这样的新手.
在具体处理NodeJS时要注意什么?在处理NodeJS的单线程事件循环与更标准的服务器系统时,哪些统计/分析变得特别重要?
我还有其他关于数据库如何发挥作用的问题,但我认为这已经足够了...
我们正在处理一个以前从未发生过的Joyent Solaris服务器中的奇怪错误(不会发生在localhost或其他两个具有相同php配置的Solaris服务器上).实际上,我不确定我们是否必须查看php或solaris,以及它是否是软件或硬件问题......
我只是想发布这个,以防有人指出我们正确的方向.
所以,问题似乎是在var_export()处理奇怪的角色时.在CLI中执行此操作,我们在localhost机器和两个服务器中获得预期结果,但不在第三个服务器中获得.所有这些都配置为使用utf-8.
$ php -r "echo var_export('ñu', true);"
Run Code Online (Sandbox Code Playgroud)
在旧服务器和localhost (预期)中给出:
'ñu'
Run Code Online (Sandbox Code Playgroud)
但是在服务器中我们遇到了问题(PHP版本=> 5.3.6),\0每当遇到"不常见"的字符时它会添加空字符:è,á,ç,......你给它命名.
'' . "\0" . '' . "\0" . 'u'
Run Code Online (Sandbox Code Playgroud)
关于应该在哪里看的任何想法?提前致谢.
更多信息:
PHP version 5.3.6.setlocale() 没有解决任何问题.default_charset是UTF-8在php.ini.mbstring.internal_encoding被设置为UTF-8在php.ini.mbstring.func_overload = 0.iconv 编码也是 UTF-8utf-8编码.system('locale') 收益:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)
到目前为止完成的一些测试(CLI):
正常行为:
$ php …Run Code Online (Sandbox Code Playgroud) 首先,请原谅我对Joyent的智能机器实例缺乏了解.我正在为这种情况运行NodeJS的免费开发层smartmachine实例.
我正在[path]/server/public/通过http-server在文件系统上运行一个网站,我想在端口80上同时运行一个Ghost博客[path]/server/public/blog/.
这可能吗?我怎么做到这一点?
我面临一个奇怪的错误,这是我的主要.js文件
var cluster = require('cluster'),
express = require('express'),
http = require('http');
if (cluster.isMaster) {
var cpuCount = require('os').cpus().length;
for (var i = 0; i < cpuCount; i += 1) {
cluster.fork();
}
} else {
var app = express(),
server = http.createServer(app),
io = require('socket.io').listen(server);
io.set('log level', 2);
server.listen(3000);
}
cluster.on('exit', function (worker) {
console.log('Worker ' + worker.id + ' died :(');
cluster.fork();
});
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误消息..
Worker 1 died :(
Worker 2 died :(
assert.js:92
throw new assert.AssertionError({
^
AssertionError: false …Run Code Online (Sandbox Code Playgroud) 我在Joyent云中使用本机mongo驱动程序,node.js应用程序在本地运行正常但在Joyent中,当我使用usrname/pswd运行它们提供它无法连接时.以下是用于连接的代码:
var db = new MongoDB(dbName, new Server('localhost', 27017 , {auto_reconnect: true}), {w: 1});
db.open(function(e, db){
if (e) {
console.log(e);
} else{
console.log('connected to database :: ' + dbName);
//db.admin().authenticate('admin', '+(uihghjk', function(de , db){
// if(e){
// console.log("could not authenticate");
// }else {
//console.log('connected to database :: ' + dbName);
// }
// });
}
});
Run Code Online (Sandbox Code Playgroud)
有没有人在Joyent中使用本机node.js驱动程序.
谢谢
也许以前有人见过...我有一个私有模块要包含在我的应用程序中。我已将其作为Gemfury上的tarball引用,并且在库的多个版本上都可以在本地正常工作(始终如此),但是Joyent框上的“ npm install”会输出以下错误。
NPM似乎已成功拉下模块,然后尝试(失败)在注册表中查找它。
我认为我在做一些愚蠢的事情。有什么想法吗?
注意:
我也尝试通过package.json中的git URL引用模块。SSH似乎可以连接,因为它询问我是否信任github.com的IP和RSA指纹,但随后NPM再次击中注册表并得到404。我猜测这与软件包有关,但是可以吗? t在本地复制。
npm http GET https://npm.fury.io/--token--/richmarr/cake-lib/-/latest.tgz
npm http 200 https://npm.fury.io/--token--/richmarr/cake-lib/-/latest.tgz
npm http GET https://registry.npmjs.org/cake-lib/0.0.10
npm http 404 https://registry.npmjs.org/cake-lib/0.0.10
npm ERR! 404 'cake-lib' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, or http url, or git url.
npm ERR! System SunOS 5.11
npm ERR! command "/opt/nodejs/v0.10.21/bin/node" …Run Code Online (Sandbox Code Playgroud) 我有一个在CentOS上运行的nodejs进程.我正在关注这个以及来自Joyent的这个 turotials,以利用MDB来调查潜在的内存泄漏.
我生成了核心文件并上传到曼塔.因此我开始使用mlogin和MDB.
在MDB中,我执行::findleaks并产生此错误
> ::dmods
libumem.so
mdb
mdb_kb
mdb_kproc
mdb_kvm
mdb_proc
mdb_raw
v8
> ::findleaks
mdb: findleaks: umem is not loaded in the address space
Run Code Online (Sandbox Code Playgroud)
除了CentOS之外,在其他操作系统上运行我的nodejs进程是不可能的.
错误是否意味着核心转储中缺少某些信息?如何解决?
所以我正在尝试使用Joyent smartOS托管节点应用程序.创建我的实例后,我git复制了我当前的提交并尝试运行npm install.唯一的问题是这个过程会在失败的过程中得到一点点.
筛选日志,这似乎与我最相关:
ERR!stack Error: not found: make
Run Code Online (Sandbox Code Playgroud)
我运行了它失败的软件包npm install jquery,我收到了同样的失败错误.
Joyent的基于节点的smartOS没有make关键字吗?有没有办法解决?
joyent ×9
node.js ×8
javascript ×3
npm ×2
analytics ×1
cloud9-ide ×1
express ×1
ghost-blog ×1
localization ×1
monitoring ×1
php ×1
smartos ×1
utf-8 ×1
v8 ×1