iphone的太鼓达人歌曲列表怎么解锁所有歌曲

nodejs+nginx反向代理及la(n)mp安装 - ThinkPHP框架
Nodejs+nginx反向代理配置
一、安装nodjs及相关模块
约定:生产环境
Nodejs 0.10.22+
Express3.4.4+
Mongodb2.4.10+
资料共享者:
1 安装gcc-c++,openssl,nodejs
yum install gcc-c++ openssl-devel
cd /usr/local/src
wget http://nodejs.org/dist/v0.10.22/node-v0.10.22.tar.gz
或者下载最新版
wget http://nodejs.org/dist/node-latest.tar.gz
tar zxvf node-latest.tar.gz
cd node-v0.10.22
./configure
make install
注意,./configure需要python2.6+
相关模块安装见附录:
二、安装ngix和nginx反向代理
1 安装nginx
安装第三方yum源
yum install wget #安装下载工具
wget /installers/atomic #下载
sh ./atomic #安装
yum check-update #更新yum源
yum install nginx #安装nginx 根据提示输入y进行安装
chkconfig nginx on #设置nginx开机启动
service nginx start #启动nginx
2 配置nginx
配置nginx支持nodejs反向代理
cp /etc/nginx/nginx.conf /etc/nginx/nginx.confbak#备份原有配置文件
vi /etc/nginx/nginx.conf #编辑
#修改nginx运行账号为:nginx组的nginx用户
:wq #保存退出
cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.confbak #备份原有配置文件
为什么是conf.d/default.conf
导入了conf.d/下面的所有的*.conf
注意:如果您已经安装了lnmp环境,请额外的配置一个xxx.conf的文件(下面的default.conf一样的内容)
Default.conf配置如下:
# The default server
#监听的端口,如果是在PHP的环境下,还要监听80端口,建议建立多个vhost.conf并配置
#我这里没有安装lanmp环境,就直接监听80端口,让127.0.0.1:3000直接跳转到localhost:80端口,如果你在lanmp下,请指定其他的端口
#默认主机名,可以是域名比如:
#charset utf-8;
#access_log
logs/host.access.
//配置nodejs,nginx反向代理
#配置节点将告诉Nginx接收任意的请求
location / {
//用proxy_pass 指定了Node.js的后端服务器
proxy_pass
http://127.0.0.1:3000;
proxy_http_version 1.1;
#http版本1.1
proxy_set_header Upgrade $http_
proxy_set_header Connection ‘upgrade’;
proxy_set_header Host $
proxy_cache_bypass $http_
/usr/share/nginx/
#网站的根目录
index.html index.
#ModSecurityE
#ModSecurityConfig /etc/nginx/modsecurity.
#配置静态资源目录
#location /public {
root /usr/local/var/www
#error_page
#错误页面的配置
#location = /404.html {
/usr/share/nginx/
# redirect server error pages to the static page /50x.html
#error_page
500 502 503 504
#location = /50x.html {
/usr/share/nginx/
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#location ~ \.php$ {
proxy_pass
http://127.0.0.1;
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#location ~ \.php$ {
fastcgi_pass
127.0.0.1:9000;
fastcgi_index
fastcgi_param
script_FILENAME
/scripts$fastcgi_script_
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#location ~ /\.ht {
将网站域名设置好,然后端口设置为80,最后proxy_pass设置为http://127.0.0.1:3000,将所有从localost:80的请求传递到nodejs程序去。
访问域名,就可以了
这样我们就让Nginx在http://localhost:80上监听了。location / 配置节点将告诉Nginx接收任意的请 求,location 配置节点中我们用proxy_pass 指定了Node.js的后端服务器为http://localhost:3000 。
现 在我们要用另外一个配置节点location /public 来告诉Nginx处理静态文件请求,其中内部的location 节点设置了根目录为 /usr/local/var/www. 当然你也可以换成其他的目录。如此一来,当有类似这样的请求http://localhost:80 /public/somepath/file.html ,Nginx都会从/usr/local/var/www/public/somepath /file.html读取静态文件。
修改完配置文件后,你需要用下面的代码来重启Nginx
测试是否反向代理成功?创建一个app.js
var http=require('http');
//create httpServer
console.log('this server has started on localhost:80');
var server=http.createServer(function(req,res){
res.writeHead(200,{'Content-Type':'text/html'});
res.write('&meta charset=&utf-8&/&');
res.end('hello world,the nginx and nodejs pross success!');
server.listen(3000);
运行node app.js
我们大胆的设想下我们用nginx反向代理处理静态html,css,js的东西,让nodejs出去服务器的东西。下面我们配置一个基于域名的,监听到80端口上的配置下.conf:
#nodejs监听的端口是8080
#IP:127.0.0.1
#记得在/etc/hosts下添加127.0.0.
#监听的端口,如果是在PHP的环境下,还要监听80端口,建议建立多个vhost.conf并配置
#我这里没有安装lanmp环境,就直接监听80端口,让127.0.0.1:8080直接跳转到localhost:80端口
#默认主机名,可以是域名比如:
#charset utf-8;
#access_log
logs/host.access.
#配置nodejs,nginx反向代理
#配置节点将告诉Nginx接收任意的请求
location / {
#用proxy_pass 指定了Node.js的后端服务器
proxy_pass
http://127.0.0.1:8080;
#直接跳转到:80上去
proxy_http_version 1.1;
#http版本1.1
proxy_set_header Upgrade $http_
proxy_set_header Connection ‘upgrade’;
proxy_set_header Host $
proxy_cache_bypass $http_
#网站的根目录
index.html index.
#ModSecurityE
#ModSecurityConfig /etc/nginx/modsecurity.
#配置静态资源目录
#location /public {
root /usr/local/var/www
#error_page
#错误页面的配置
#location = /404.html {
/usr/share/nginx/
# redirect server error pages to the static page /50x.html
#error_page
500 502 503 504
#location = /50x.html {
/usr/share/nginx/
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#location ~ \.php$ {
proxy_pass
http://127.0.0.1;
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#location ~ \.php$ {
fastcgi_pass
127.0.0.1:9000;
fastcgi_index
fastcgi_param
script_FILENAME
/scripts$fastcgi_script_
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#location ~ /\.ht {
注意:在/etc/hosts下添加127.0.0.
实现了域名的解析成功
在/home//下建立一个app.js
var http=require('http');
//create httpServer
console.log('this server has started :80');
var server=http.createServer(function(req,res){
res.writeHead(200,{'Content-Type':'text/html'});
res.write('&meta charset=&utf-8&/&');
res.end(&#!');
server.listen(8080);
运行node app.js
访问浏览器
虽然node.js本身就可以做服务器是没错啦,比如app.js里面设置为8080端口就可以了。通过nginx反向代理实现跳转到指定的:80端口上。
如果一个机子跑多个网站,其他网站又是用别的服务器,在80端口已经被占用的情况下,是可以用代理到别的端口来处理。
比较lamp,lnmp环境和nodejs+nginx反向代理区别:
传统的lamp环境需要apache模块的支持,处理的能力相对于nginx来说是比较笨重,对于高并发量,apache比较吃力。后来我们使用lnmp来架设php的网站,我们发现nginx轻量,高性能的HTTP和反向代理处理速度惊人。
分析LNMP或LAMP的劣势
Nginx是一个小巧而高效的Linux下的Web服务器软件,与Apache相比,消耗资源更少,支持的并发连接,更高的效率,反向代理功能效率高、静态文件处理快等,但动态页面处理能力不如Apache等老牌软件成熟。单独使用Nginx处理大量动态页面时容易产生频繁的502错误。
Apache是一款老牌的Web服务器软件,在高并发时对队列的处理比FastCGI更成熟,Apache的mod_php效率比php-cgi更高且更稳定、对伪静态支持好,不需要转换、多用户多站点权限等方面有着更好的效果,单独使用Apache处理静态页面时,对内存的占用远远超过Nginx。
Nodejs+nginx
让nginx做反向代理,处理请求时候,我们用nodejs监听到某个IP,PORT上,用nginx反向代理跳转到80端口上,比如localhost:80上后,nginx帮助处理静态的html,css,js资源,让nodejs处理高并发的处理,nodejs天生的异步机制,单线程使得运行速度特别快。这两者的结合消耗资源少,高并发,静态文件处理特别快。
网站产品做多了,你会发现需要创建SSL来保护敏感的信息。可能你第一反应会想到从证书颁发机构申请网站证书,但是你也可以创建签名证书。唯一的问题就是浏览器端会提示“该证书不可信”的警告信息,但是作为本地测试,这也就足够了。这里有一篇教程讲解了如何自己创建签名SSL证书,可以看看。
当你有了自己的证书,你就可以在Nginx上安装SSL了,修改后的配置文件,代码如下:
ssl_certificate
/etc/nginx/ssl/server.crt
ssl_certificate_key /etc/nginx/ssl/server.key
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_
proxy_set_header Connection ‘upgrade’;
proxy_set_header Host $
proxy_cache_bypass $http_
location /public {
root /usr/local/var/
完 成了!这样当你访问https://localhost:8080 的时候SSL就可以开始工作了。这里我们默认将证书保存在/etc/nginx /ssl/server.crt 目录下。将私钥保存在/etc/nginx/ssl/server.key 目录下,你也可以改变保存的目录。
如何用Nginx为Node.js做反向代理,并且配置SSL。由Nginx在前端处理静态文件请求,这可以为Node.js后端服务器大大减轻压力。
参考资料:/topic/4585.html
http://blog.csdn.net/soasme/article/details/6713788
http://www.jb51.net/article/37986.htm
Nojs相关模块安装:
1、安装MySQL
yum install mysql mysql-server #询问是否要安装,输入Y即可自动安装,直到安装完成
/etc/init.d/mysqld start #启动MySQL
chkconfig mysqld on #设为开机启动
cp /usr/share/mysql/f /f #拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可)
2、为root账户设置密码
mysql_secure_installation
回车,根据提示输入Y
输入2次密码,回车
根据提示一路输入Y
最后出现:Thanks for using MySQL!
MySql密码设置完成,重新启动 MySQL:
/etc/init.d/mysqld restart #重启
/etc/init.d/mysqld stop #停止
/etc/init.d/mysqld start #启动
3 安装express 已经把命令行工具分离出来了...
如果你要 Express 3
sudo npm install -g express@3.4.4
(安装的时候可能遇到网速的问题,请多试几次)
express 4 的话
sudo npm install -g express-generator
切换到nodetest这是我自己创建的一个目录,创建一个应用目录blog,然后创建应用blog
进入到blog中
运行node app.js出错,这是不正确的,因为缺少启动文件,所以运行npm install
出现上述画面,表示安装项目需要的模块成功创建。
接着运行node start
这里注意3.x版本的express是node app运行,而4.x发生了变化,启动文件在bin/www
最后在浏览器中运行localhost:3000
整个blog的项目文件
对于如何创建应用和手册express4.x的使用,我会陆续给大家贡献的。
安装mysql模块
/blog/1636302
http://blog.csdn.net/jinbiao520/article/details/9902177
测试mysql模块
node进入node终端然后运行console.log(require(‘mysql’));
在linux下安装各种包
/greenteaone/archive//3065114.html
相关的模块安装如下:
安装geddy:npm -g install geddy
安装调试工具npm -g install supervisor
/blog/1152406
安装mongodb
下载安装包:
2wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.4.10.tgz
tar -zxvf mongodb-linux-i686-2.4.10.tgz
3。指定安装目录:
mv mongodb-linux-i686-2.4.10 /usr/local/mongodb
4。新建mongodb数据文件存放目录:
mkdir -p /data/mongodb/db
5。新建log文件存放目录:
mkdir -p /data/mongodb/logs
6 cd /usr/local/mongodb/bin
第一种方式:
7。新建配置文件,mongodb支持把参数写进配置文件,然后以配置文件的配置来启动,我们此处也使用此方式。执行:
vi mongodb.conf
加入内容如下:
dbpath = /data/mongodb/db #数据文件存放目录
logpath = /data/mongodb/logs/mongodb.log #日志文件存放目录
port = 27017
fork = true
#以守护程序的方式启用,即在后台运行
nohttpinterface = true
完整的mongodb.conf
dbpath = /data/mongodb/db
logpath = /data/mongodb/logs/mongodb.log
port = 27017
fork = true
nohttpinterface = true
Vi /data/mongodb/logs/mongodb.log
保存退出:wq
重新绑定mongodb的配置文件地址和访问IP:
/usr/local/mongodb/bin/mongod --rest --bind_ip localhost -f /usr/local/mongodb/bin/mongodb.conf
8。启动Mongo程序,使用配置文件mongodb.conf定义的参数启动
./mongod --config mongodb.conf --rest
第二种方式:
**********************************开机启动和软连接*******
创建软连接
将mongo添加到/usr/local/bin中cd /usr/local/bin然后创建软连接
另外一种方式加入到开机启动
在/etc/rc.d/rc.local中添加
然后vi /etc/mongodb.conf添加
mongodb安装参照
http://gevin.me/289.html
开机自动启动
vi /etc/rc.d/rc.local
在文件中加入:
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/bin/mongodb.conf
注意:默认mongodb的数据目录对应的是/data/db下面。日志目录对于到/data/logs/mongodb.log,如果是目录结构有调整需要重新指定配置的路径
到这里mongodb按照完毕
第三种方式mongo的目录加入到环境变量中:
vim /etc/profile在最后添加如下内容:
export PATH=$PATH:/usr/local/mongodb/bin
然后source /etc/profile
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。[转]使用&node.js&+&nginx&建设网站
昨天搞定了一个小网站的搭建,用了 node.js,另外为了能在一个 VPS 上搭建多个网站,用了 nginx 作为反向代理。
嗯,从维基上复制了一下~
Node.js是一个事件驱动I/O伺服端JavaScript环境,基于V8。目的是为了提供撰写可扩充网络程式,如web服务。第一个版本由Ryan
Dahl于2009年释出,后来,Joyent雇用了Dahl,并协助发展Node.js。
nginx(发音同engine x)是一款由俄罗斯程序员Igor
Sysoev所开发轻量级的网页服务器、反向代理服务器以及电子邮件(IMAP/POP3)代理服务器。
在 node.js 0.6.0 之前,有一个第三方的 node.js 模块 cluster,用来进行多核服务器上运行
node.js,以及提供扩展的支持。但是在 node.js 0.6.0 之后,node.js 本身就提供了 cluster
的支持,另外,第三方的 cluster 也与 node.js 0.6 有兼容性问题。目前 node.js 的稳定版本是
0.6.5,因此需要使用原生的 cluster 来代替第三方的 cluster。
幸好内置的 cluster
也足够简单,如果只是为了多核负载均衡,以及支持即时服务重启的话,只需要写一点的代码就可以完成这些功能了。
var path = require('path');
var http = require('http');
var cluster = require('cluster');
var NODE_ENV = process.env.NODE_ENV || 'production';
var appName = path.basename(__dirname);
var appPort = 9000;
var numCPUs = require('os').cpus().
if (cluster.isMaster) {
process.title = appName + ' master';
console.log(process.title, 'started');
// 根据 CPU 个数来启动相应数量的 worker
for (var i = 0; i & numCPUs; i++) {
cluster.fork();
process.on('SIGHUP', function() {
// master 进程忽略 SIGHUP 信号
cluster.on('death', function(worker) {
console.log(appName, 'worker', '#' + worker.pid, 'died');
cluster.fork();
process.title = appName + ' worker ' + process.env.NODE_WORKER_ID;
console.log(process.title, '#' + process.pid, 'started');
process.on('SIGHUP', function() {
// 接收到 SIGHUP 信号时,关闭 worker
process.exit(0);
http.Server(function(req, res) {
res.writeHead(200);
res.end('Worker ' + process.env.NODE_WORKER_ID);
}).listen(8000);
运行服务&node
server.js&:
nodejs master started
nodejs worker 1 #38928 started
nodejs worker 3 #38930 started
nodejs worker 2 #38929 started
nodejs worker 4 #38931 started
如果直接 kill 掉某一个 worker,kill
nodejs worker #38931 died
nodejs worker 5 #38934 started
可以看到一个新的 worker 会马上启动,这就保证了服务的不间断性。
Virtual Host 支持
通常情况下,我们不会在一个 IP 上只部署一个网站。在使用 node.js 时,可以使用 connect 提供的 vhost 支持
Virtual Host,但是,这也限制了服务器只能用 node.js,而不能同时使用其他的服务,例如再安装一个 PHP
服务之类。
这时就可以使用 nginx 的反向代理来解决了,用户在访问网站时,请求先到 nginx 进行处理,如果是 node.js
站点的话,将请求转发到 node.js 的服务,然后再将 node.js 服务的结果返回给用户。
在 nginx 中设置反向代理很简单,一句&proxy_pass&就可以搞定:
listen 80;
location / {
proxy_pass http://localhost:9000;
在添加了 Virtual Host 之后,就可以把一些静态资源,例如 CSS、JavaScript 之类的文件,直接交给 nginx
来处理,而不是什么请求都需要到 node.js 这一层去处理,也省去反向代理这一关的消耗。
Session 支持
使用 express 这个 node.js web framework 来创建网站时,可以配合 connect 这个中间件来实现
session 支持。
默认情况下,connect 的 session 是使用内置的内存存储来存放 session 信息,这时如果 node.js
服务一旦重启,所有的 session 信息都会丢失,这对于用户来说不是个好体验,那么我们可以用外部的存储来存放 session
信息,例如 redis。
要让 connect 使用 redis 作为 session 存储的话也是很方便的:
var express = require('express');
var RedisStore = require('connect-redis')(express);
var app = express.createServer(
express.session({ secret: 'keyboard cat', store : new RedisStore() })
监测文件改动
在调试的时候,经常需要重新启动 node.js 以便修改过的文件生效,原来第三方的 cluster
有一个配置项,可以很方便的配置监测时间间隔,文件改动后自动重新启动 worker,但是原生的 cluster
就没有这个功能了,需要自己来实现。
fs 模块提供了 watch 函数,可以方便的监测文件修改,使用这个就可以来实现文件修改后自动重启 woker 功能了。
if (cluster.isMaster) {
process.title = appName + ' master';
console.log(process.title, 'started');
var workers = [];
// 根据 CPU 个数来启动相应数量的 worker
for (var i = 0; i & numCPUs; i++) {
var worker = cluster.fork();
workers.push(worker.pid);
process.on('SIGHUP', function() {
// master 进程忽略 SIGHUP 信号
// 监测文件改动,如果有修改,就将所有的 worker kill 掉
fs.watch(__dirname, function(event, filename) {
workers.forEach(function(pid) {
process.kill(pid);
cluster.on('death', function(worker) {
var index = workers.indexOf(worker.pid);
if (index != -1) {
workers.splice(index, 1);
console.log(appName, 'worker', '#' + worker.pid, 'died');
worker = cluster.fork();
workers.push(worker.pid);
这样,每次文件保存之后,node.js 都会自动重启,从而避免了每次保存文件要手动重启服务的麻烦。
当然,在使用监测文件自动重启的时候,最好加上 NODE_ENV 的判断,在 development 的时候才进行自动重启,而
production 的时候使用手动重启就够了。
总的来说,使用 node.js 来构建网站还是很方便的,加上 nginx 反向代理之后,与使用 PHP
之前也没有很大的区别,又可以享受到 node.js 的高效。
嗯,就这样了,希望此文对你有所帮助。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Nodejs和Nginx都是轻量级,高性能服务器的代表,而Nodejs站点的标准配置就是在Nodejs服务器上架一层Nginx反向代理,两种轻量级高性能的服务器组合在一起产生什么样的火花呢?往下看。
为什么要在Nodejs上加Nginx反向代理,原因归纳如下:
用Nginx来做静态资源的反向代理,减少Nodejs的压力;
Nginx自带日志功能,可以没必要Nodejs去处理这个问题了
Nginx用来做负载均衡,增加横向扩展性
假如一台服务器多个Nodejs站点,或则一个域名下挂多个站点或不同中语言的站点。有个反向代理都可以处理。
加了Nginx做反向代理是否对网站性能有影响?答案是有影响,但咱有方案:Nginx多进程+Nodejs Cluster
做个测试,那10000次连接,1000并发来测试。
在nodejs的fork模式的速度是
nginx 单进程+nodejs fork:基本看上去就慢很多了。
nginx 3进程+nodejs fork:这个跟不用反向代理的速度差不多
nodejs cluster(3)比fork模式稍微快一点.
nginx+nodejs cluster(3)
nginx 3进程+nodejs cluster(3)
无反向代理
nginx单进程
nginx多进程(3个)
nodejs fork
nodejs cluster(3个)
nginx作为反向代理,如果不开启多进程的情况下,还是会对性能有影响。
nodejs开启cluster模式比fork还是要快。
nginx开启多进程的情况下,几乎可以不影响性能,还可能提升部分性能。
* 以上测试在centos 6.5上完成,单机。
原文地址:
阅读(...) 评论() &
常用开发技术
ASP.NET, C#, SQL-Server, Nodejs, Mongo
HTML4, HTML5, CSS2, CSS3
JAVASCRIPT,JQUERY,Knockout
如何联系我
E-mail:abcily(*), 将(*)换成@

我要回帖

更多关于 iphone怎么下太鼓达人 的文章

 

随机推荐