我想写非阻塞应用程序。 我使用apache2,但是我正在阅读关于nginx及其相对于apache进程的优势。 我正在考虑更换apache的nginx。 我的问题是,是否有可能用php和nginx编写非阻塞的web应用程序? 或者是一个更好的主意,尝试使用python,使用一些反向代理如uwsgi或gunicorn与nginx? 或者是学习nodejs的解决scheme?
我一直负责为有客户的项目工作,他估计每天的点击量将达到1-2M。 他拥有一个拥有58M用户的现有数据库,需要根据每个注册基础为新品牌创build种子。 大多数网站的内容是由外部API提供的数据提供的,大部分存储在Mongo设置中的数据是configuration文件信息和保存的API参数。 Nginx将在端口80上,并负载平衡到端口8000 – 8010上的节点群集。 我的问题是如何做caching。 我来自一个LAMP背景,所以我习惯于用PHP编写静态HTML文件,并提供这些文件以最大限度地减lessMySQL负载,或者为需要更高级别caching的站点使用Memcached。 这个设置对我来说有点陌生。 就最小的响应时间和CPU负载而言哪个是最理想的? 1:使用NginX进行页面级caching 参考: http : //andytson.com/blog/2010/04/page-level-caching-with-nginx/ server { listen 80; servername mysite.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; location / { proxy_pass http://localhost:8080/; proxy_cache anonymous; } # don't cache admin folder, send all requests through the proxy location /admin { proxy_pass http://localhost:8080/; } # handle static […]
我最近一直在研究Node.js,并在编写简单的基于Node.js的服务器上遇到了一些材料。 例如… var express = require("express"), http = require("http"), app; // Create our Express-powered HTTP server // and have it listen on port 3000 app = express(); http.createServer(app).listen(3000); // set up our routes app.get("/hello", function (req, res) { res.send("Hello World!"); }); app.get("/goodbye", function (req, res) { res.send("Goodbye World!"); }); …现在,虽然我似乎明白代码中发生了什么……我对术语有些困惑……因为当我听到术语“服务器”时,我想到了诸如Apache或Nginx之类的东西。 我习惯把它们看作是一个可以容纳我的web应用程序的容器。 Node.js服务器与Nginx / Apache服务器有什么不同? 是不是真的基于Node.js的服务器(即代码)仍然可以放在像Nginx一样运行? […]
我需要编写一个C ++接口,它可以读取我们的数据结构,并使用http协议提供基于查询的o / p。 服务器需求 它应该能够同时服务100个客户。 为什么selectC ++ 所有代码已经用C ++编写。 所以我们只需要用C ++编写一个http层。 这就是为什么我selectC ++而不是更传统的Web编程语言。 我正在考虑使用nginx来提供静态文件,并使用它的代理传递与C ++进行通信。 我发现有两种方法: 编写一个FastCGI c ++模块。 编写一个node.js c ++模块。 如果你有任何其他build议,请 你能否根据以前的经验列出每种方法的优点和缺点?
我永远configuration启动运行我的node.js服务器。 使用这个scipt。 它工作正常。 并永远保持服务器运行。 但是,当我永远运行列表,我没有看到我的服务器在这里! 我知道它正在运行,但它从来没有在这个列表中。 看起来系统正在运行两个永久的实例。 root@ddd [/etc/init.d]# chkconfig –list |grep node1 node1 0:off 1:off 2:on 3:on 4:on 5:on 6:off 这是脚本:/etc/init.d/node1 NAME=node1 NODE_BIN_DIR=/usr/local/bin NODE_PATH=/usr/local/lib/node_modules APPLICATION_DIRECTORY=/home/user1/www APPLICATION_START=node1.js PIDFILE=/var/run/node1.pid LOGFILE=/var/log/node1.log PATH=$NODE_BIN_DIR:$PATH export NODE_PATH=$NODE_PATH start() { echo "Starting $NAME" forever –pidFile $PIDFILE –sourceDir $APPLICATION_DIRECTORY \ -a -l $LOGFILE –minUptime 5000 –spinSleepTime 2000 \ start $APPLICATION_START & RETVAL=$? […]
有没有人用inotify看500K – 1M的目录? 如此大量的手表性能如何? 我正在考虑创build一个跟踪某些站点上的文件更改的服务器。 服务器将用PHP或nodejs编写 。 在我开始之前,我想知道inotify是否是这个任务的正确工具。 我可以增加手表的最大数量: fs.inotify.max_user_watches=1000000 但接下来呢? 可以通过处理吗?
我已经部署了一个节点应用程序,用于监听来自AWS的免费使用层ubuntu机器上的端口5000。 我已经遵循了以下build议: 如何在Linux服务器上的端口80上启动node.js? 以及来自: 使用端口80(Ubuntu / Linode)运行Node.js的最佳实践 这两个问题的答案都表明端口转发,我也做了同样的事情。 但我的服务器仍然不响应端口80上的请求。有没有办法可以检查端口转发是否成功? 已经通过AWS控制台设置了侦听HTTP请求的权限设置。 到目前为止,还没有听到机器上的80端口。 netstat -l | grep :80 netstat -l | grep :80出现空。 服务器运行良好,如果我访问它: http://<elastic-ip>:5000
我试图logging通过USB连接到电脑的钢琴来的任何input数据。 $ lsusb … Bus 003 Device 046: ID fc08:0101 …. Bus 003 Device 046: ID fc08:0101是我的钢琴。 如果我做$ cat /dev/bus/usb/003/046我得到一些奇怪的东西: P e 2 $ $A$$ $ $ % % 另外,我写了一个NodeJS脚本,它应该创build一个读取stream和日志数据: var Fs = require("fs"); var str = Fs.createReadStream("/dev/bus/usb/003/046"); str.on("data", function (chunk) { console.log("data: " + chunk.toString()); }); str.on("error", function (chunk) { console.log("error" + chunk.toString()); }); […]
我有node.js安装在Linux和file.js 在同一个目录中,我有lru-cache模块的node_modules目录。 file.js执行以下操作: var lrucache = require('lru-cache') 但是当我运行它时,会引发下面的错误: Error: Cannot find module 'lru-cache' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (module.js:280:25) at Module.require (module.js:364:17) at require (module.js:380:17) at Object.<anonymous> (/opt/file.js:58:12) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) 问题是什么? 其他的linux系统也一样。
我试图重新实现Node.JS中的现有服务器服务。 该服务可以与经典的FTP服务器进行比较 :经过身份validation的用户可以读取/创build/修改文件,但仅限于赋予匹配的系统用户名的权限。 我敢肯定,我不能以root身份运行Node.JS,并使用seteuid()或类似的方式切换用户,因为这会破坏并发性。 相反,我可以让我的Node.JS进程作为ROOT运行并在访问文件时手动检查权限吗? 我正在考虑一些系统调用,如“ could user X create a file in directory Y? 否则,我可以通过使用用户组解决这个问题吗? 请注意,该服务必须能够删除/修改由真实系统用户创build的文件,该文件可能没有设置专门的组,以便服务可以访问该文件。