日期:2014-05-16  浏览次数:20365 次

使用git管理nodejs+socket.io+redis+juicer+waterfall+ubuntu+aws ec2开发网站

?

使用git管理nodejs+socket.io+redis+juicer+waterfall+ubuntu+aws ec2开发网站

服务器:aws ec2 Ubuntu 12.04 (64位)
web服务器:nginx1.3.5
缓存服务器:redis2.4.16
nodeJS: 0.8.8
框架:express 3.0.0
模板渲染:juicer
数据交互:websocket
前端展现:瀑布流

我们使用nodejs来开发一个搜索网站 示例:http://sogego.com 并使用git版本控制工具来管理位于vps上的网站,让我们抛弃ftp工具来上传文件的方式,一键commit到网站目录下。
我们在nodejs服务端render数据到前端,并用juicer来渲染,然后在瀑布流waterfall中使用socket.io来无限制加载数据,用redis做服务器。


一、先讲位于日本东京的服务器aws ec2
使用aws ec2,都说位于美国西海岸的ping值低,事实上比较一下美国西海岸、新加坡、日本到中国的距离就知道了,新加坡网络节点还要绕到意大利再回中国,这个地方的VPS根本没法用,慢的要死,事实上速度最快的要数位于日本东京的ec2机房了,建议大家使用这个,其ping值在上海或是宁波、深圳的地方可以低于80ms,而美国西海岸的ping值都大于250ms,日本东京要快得多。

这和你是不是国人,爱不爱国没有关系,因为在上海到日本有一条海底光缆。

先启动一个Instance,我们使用Ubuntu 12.04
aws ec2默认不让ping。你只需要点左侧Security Groups,再点右侧Inbound的All ICMP 确定就可以ping通了
最后说一下Bitvise SSH ,它比Putty可强大多了,而且还带有sftp功能。你不得不用。

二、VPS Ubuntu 的配置
安装一些常用的比如 g++ make git libssl等

最主要的是在这里配置好git服务器,并同时让git server 自动同步到网站目录下,也就是说,比如我在本地机器win7上 commit了代码到了git server,那么访问http://sogego.com它就是最新修改过的,而且是带有版本号的,这样方便以后出现错误做回滚操作,不使用ftp工具,而是使用aws的 pubkey ,用ssh的方式做commit操作,当然也可以使用sftp。

安装Nginx来做负载均衡,让它指向nodejs的地址 比如:http://localhost:3000

安装redis来做缓存数据库,以后再详细说明在nodejs中使用redis的操作。

三、程序开发
推荐webstorm开发工具,带有git和nodejs的语法支持,如果你非要用Notepad++,我个人只能说你是个二。

我们在nodejs中使用最新的express 3框架,它与express 2有了一些改变

我们不使用jade这个模板,原因是什么,自己去想吧,个人觉得与html相距太大,不习惯,
而是使用juicer,它是一个极限渲染模板,其写法与速度你自己试了就不会再用其它的
我已和juicer的作者沟通多次解决bug和添加功能,目前版本号是0.6.0.使用完全没有问题

我们安装一个npm install jquery来分析抓取到的网页数据

我们还要安装一个npm install iconv-lite它比iconv要快一些,用来解决非utf8编码,大多的国内网站还在使用gb2312的编码。