http://www.centoscn.com/CentosServer/test/2014/1120/4153.html

OpenVPN是一个用于创建虚拟专用网络(Virtual Private Network)加密通道的免费开源软件。使用OpenVPN可以方便地在家庭、办公场所、住宿酒店等不同网络访问场所之间搭建类似于局域网的专用网络通道。

使用OpenVPN配合特定的代理服务器,可用于访问Youtube、FaceBook、Twitter等受限网站,也可用于突破公司的网络限制。

一、服务器端安装及配置

服务器环境:干净的CentOS6.3 64位系统

内网IP:10.143.80.116

外网IP:203.195.xxx.xxx

OpenVPN版本:OpenVPN 2.3.2 x86_64-redhat-linux-gnu

    1、安装前准备

# 关闭selinux
setenforce 0
sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config
# 安装openssl和lzo,lzo用于压缩通讯数据加快传输速度
yum -y install openssl openssl-devel
yum -y install lzo
# 安装epel源
rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
sed -i 's/^mirrorlist=https/mirrorlist=http/' /etc/yum.repos.d/epel.repo

    2、安装及配置OpenVPN和easy-rsa

# 安装openvpn和easy-rsa
yum -y install openvpn easy-rsa
# 修改vars文件
cd /usr/share/easy-rsa/2.0/
vim vars
# 修改注册信息,比如公司地址、公司名称、部门名称等。
export KEY_COUNTRY="CN"
export KEY_PROVINCE="Shandong"
export KEY_CITY="Qingdao"
export KEY_ORG="MyOrganization"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="MyOrganizationalUnit"
# 初始化环境变量
source vars
# 清除keys目录下所有与证书相关的文件
# 下面步骤生成的证书和密钥都在/usr/share/easy-rsa/2.0/keys目录里
./clean-all
# 生成根证书ca.crt和根密钥ca.key(一路按回车即可)
./build-ca
# 为服务端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)
./build-key-server server
# 每一个登陆的VPN客户端需要有一个证书,每个证书在同一时刻只能供一个客户端连接,下面建立2份
# 为客户端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)
./build-key client1
./build-key client2
# 创建迪菲·赫尔曼密钥,会生成dh2048.pem文件(生成过程比较慢,在此期间不要去中断它)
./build-dh
# 生成ta.key文件(防DDos攻击、UDP淹没等恶意攻击)
openvpn --genkey --secret keys/ta.key

查看keys目录下生成的文件:

<img title="QQ截图20141111125019_副本.png" data-original="http://www.centoscn.com/uploads/allimg/141120/01454S634-0.jpg" alt="wKioL1RhllmyOZW9AAKmWJ5x4tg383.jpg" />

    3、创建服务器端配置文件

# 在openvpn的配置目录下新建一个keys目录
mkdir /etc/openvpn/keys
# 将需要用到的openvpn证书和密钥复制一份到刚创建好的keys目录中
cp /usr/share/easy-rsa/2.0/keys/{ca.crt,server.{crt,key},dh2048.pem,ta.key} /etc/openvpn/keys/
# 复制一份服务器端配置文件模板server.conf到/etc/openvpn/
cp /usr/share/doc/openvpn-2.3.2/sample/sample-config-files/server.conf /etc/openvpn/
# 查看server.conf里的配置参数
grep '^[^#;]' /etc/openvpn/server.conf
# 编辑server.conf
vim /etc/openvpn/server.conf
port 1194
# 改成tcp,默认使用udp,如果使用HTTP Proxy,必须使用tcp协议
proto tcp
dev tun
# 路径前面加keys,全路径为/etc/openvpn/keys/ca.crt
ca keys/ca.crt
cert keys/server.crt
key keys/server.key  # This file should be kept secret
dh keys/dh2048.pem
# 默认虚拟局域网网段,不要和实际的局域网冲突即可
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
# 10.0.0.0/8是我这台VPN服务器所在的内网的网段,读者应该根据自身实际情况进行修改
push "route 10.0.0.0 255.0.0.0"
# 可以让客户端之间相互访问直接通过openvpn程序转发,根据需要设置
client-to-client
# 如果客户端都使用相同的证书和密钥连接VPN,一定要打开这个选项,否则每个证书只允许一个人连接VPN
duplicate-cn
keepalive 10 120
tls-auth keys/ta.key 0 # This file is secret
comp-lzo
persist-key
persist-tun
# OpenVPN的状态日志,默认为/etc/openvpn/openvpn-status.log
status openvpn-status.log
# OpenVPN的运行日志,默认为/etc/openvpn/openvpn.log 
log-append openvpn.log
# 改成verb 5可以多查看一些调试信息
verb 5

4、配置内核和防火墙,启动服务

# 开启路由转发功能
sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf
sysctl -p
# 配置防火墙,别忘记保存
iptables -I INPUT -p tcp --dport 1194 -m comment --comment "openvpn" -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
service iptables save
# 启动openvpn并设置为开机启动
service openvpn start
chkconfig openvpn on

    5、创建客户端配置文件

# 复制一份client.conf模板命名为client.ovpn
cp /usr/share/doc/openvpn-2.3.2/sample/sample-config-files/client.conf client.ovpn
# 编辑client.ovpn
vim client.ovpn
client
dev tun
# 改为tcp
proto tcp
# OpenVPN服务器的外网IP和端口
remote 203.195.xxx.xxx 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
# client1的证书
cert client1.crt
# client1的密钥
key client1.key
ns-cert-type server
# 去掉前面的注释
tls-auth ta.key 1
comp-lzo
verb 3

二、Windows客户端安装及配置

客户端系统:Windows7 64位

内网IP:172.16.4.4

OpenVPN版本:OpenVPN 2.3.3 Windows 64位

    1、下载安装OpenVPN

OpenVPN 2.3.3 Windows 32位 安装文件:

http://swupdate.openvpn.org/community/releases/openvpn-install-2.3.3-I002-i686.exe

OpenVPN 2.3.3 Windows 64位 安装文件:

http://swupdate.openvpn.org/community/releases/openvpn-install-2.3.3-I002-x86_64.exe

    2、配置client

将OpenVPN服务器上的client.ovpn、ca.crt、client1.crt、client1.key、ta.key上传到Windows客户端安装目录下的config文件夹(C:\Program Files\OpenVPN\config)

    3、启动OpenVPN GUI

在电脑右下角的openvpn图标上右击,选择“Connect”。正常情况下应该能够连接成功,分配正常的IP。

<img title="20141111120945.png" data-original="http://www.centoscn.com/uploads/allimg/141120/0151164428-0.jpg" alt="wKiom1RhjGbijB7xAABMoQo3Tnc522.jpg" />

<img title="QQ截图20141111121534.png" data-original="http://www.centoscn.com/uploads/allimg/141120/01454W631-2.jpg" alt="wKioL1RhjgyxiZ17AAIRIRCqqws094.jpg" width="650" />    

    4、测试

<img title="QQ截图20141111121655.png" data-original="http://www.centoscn.com/uploads/allimg/141120/01454RS1-3.jpg" alt="wKiom1RhjfPD8_AYAAGxUvt_PCA503.jpg" width="650" />

ping通服务器的内网IP,说明已经接入到服务器的内部网络。

到OpenVPN服务器上查看客户端的连接情况,查看状态文件/etc/openvpn/openvpn-status.log:

<img class="aligncenter size-full wp-image-655" data-original="http://www.151051.com/wp-content/uploads/2015/01/千与千寻励志.jpg" alt="千与千寻励志" width="1920" height="1080" />

从2013年4月份开始至今,就有传闻称小米一直在秘密研发的mios系统。果不其然,mios真的来了。近日,有消息称,小米与联芯合作开发的399元超廉价新机将会在今年12月底发布,这将是首部采用mios系统的小米手机。

<img data-original="/app/get_remote_pic.php?file=http://ugc.qpic.cn/adapt/0/e185b1bd-8770-5f5b-0bb9-dfd1598ec4ff/800.jpg" alt="" data-img-idx="0" />

那这到底是怎么回事呢,为什么小米要研发MIOS系统呢?小米为什么要推出399元的超廉价新机呢?别急,且听ROM基地小编慢慢道来。看完本文,你也许就能找到答案。

一、安卓系统正在逐步走向封闭

在谈到这个问题之前,我们先来说说另一件事。很多人可能不知道的是,谷歌正在收紧最Android的控制权,并开始逐步封闭root权限。如果你的手机是Android 4.4以上系统,你想要获取root的权限可是异常的艰难,这一点相信不用我说很多人也是深有体会的。

细心的朋友可能还会发现,你的手机在开机的时候屏幕下方会出现“Powered by Android”字样,这也是谷歌强制要求的。另外,全球除了包括中国在内的少数几个国家,只要是安卓手机,就必须预装Google Play套件等20个谷歌自家的软件,如果厂商敢不这么做,将被永久取消安卓系统的授权使用权利。为什么中国的手机不需要预装谷歌的软件,因为就算给我们装了我们用不了,其中的原因我不细说,聪明人都懂。

<img data-original="/app/get_remote_pic.php?file=http://ugc.qpic.cn/adapt/0/d154cc89-7b0e-0cbc-7edb-a533b3f82cc2/800.jpg" alt="" data-img-idx="1" />

魅族已经想到了解决办法,现在你买到的魅族MX4全部都是YunOS版的,它有效的逃脱了谷歌的控制。值得一提的是,在UI界面还是使用体验上都和基于Android的Flyme一模一样,唯一不同的是开机动画,从“Flyme powered byAndroid”改成了“Flyme powered byYunOS”。虽然只是一个单词的改动,魅族和阿里的工程师都付出了巨大的努力。

面对野心勃勃的谷歌,小米也不能坐吃等死啊。等到安卓系统铺满了整个手机行业,如果哪一天谷歌的安卓要收大额的专利费呢?到时候后悔就晚了。所以小米一直都在秘密的研发新系统,避免将来发展壮大后受到谷歌方面的控制。

二、MIOS的的本质到底是什么呢?

小米为了自家mios系统,还特地收购了mios.cn和mios.com.cn两个域名。那mios系统到底是什么呢?其实他的前身就是FirefoxOS,中文名称为火狐系统,也可以叫火狐OS。通俗点讲,mios是只是基于火狐OS开发对UI进行了大幅度的改造,并进行深度优化,这有点类似于基于Android深度定制的MIUI系统。说的难听点,就是为火狐OS做了一层皮肤,话虽然难听但却是是事实。

全新的mios基于火狐OS深度定制的,但是经过小米的高度优化后,使用起来和目前的MIUI体验相差无几。火狐OS与安卓类似,采用Linux核心,应用于智能手机。火狐OS的所有应用都基于网页技术,运行的app,你可以称它为webapp。

<img data-original="/app/get_remote_pic.php?file=http://ugc.qpic.cn/adapt/0/c291c33b-4f48-bf59-8158-599c457ef3d7/800.jpg" alt="" />

一直以来,很多人有个误区,这个系统是不是要时时刻刻联网才能用呢?胡扯,根本就不是你想的那样。网页不同于网络的,是已经从云端下载下来了的页面。火狐OS的webapp只需要第一次联网后,以后使用就不需要耗费多少流量,也不需要时时刻刻联网。目前的兼容Android系统的YunOS 3.0在主屏往左滑动的那些卡片APP就是类似于webapp的应用,这一点和火狐OS类似。

不服气的朋友,我再举个例子,就算是我们目前使用的安卓应用,在下载了APK软件后,其实内容也是从云端抓取的,包括淘宝/微博/今日头条这样的APP提供的只是一个基本内容和API接口的框架,其实大部分内容都是从云端的服务器推送给你的,包括今日头条在内的这些APP还会智能分析用户的兴趣爱好,精准的推送你喜欢的内容。

三、安卓APP开发已经陷入困境

众所周知,安卓设备由于硬件不同,所以碎片化严重。光是CPU的就有ARM/X86/MIPS等多种架构,屏幕分辨率和设备的尺寸更是种类繁多,所以开发者的适配工作非常麻烦。

<img data-original="/app/get_remote_pic.php?file=http://ugc.qpic.cn/adapt/0/6e7c541f-121b-a72d-36e1-c325cafb4cca/800.jpg" alt="" />

有时候为了满足一个软件能同样很多机型,不得不适配很多dpi大小的框架和图片。这也就是为什么ROM基地曾报道过,曾有一位Android开发者狂买600多款不同的Android设备,而且他还抱怨还有很多设备买不到,因为他必须反复测试APP的的兼容性。

为了满足日益增长的手机屏幕大小和超高分辨率的需求,现在安卓的的APP也是越做越大,APP越做越大对手机的硬件需求就越来越大了,仅仅以QQ为例,三年时间,从最早的2M的体积么猛增至20多M的体积。从最早128M内存的手机都能流畅运行QQ,到现在就算是1G内存的手机只要开了QQ后再用其他软件都可能卡成狗。

四、火狐OS的优势体现在哪?

既然现在目前所有APP的内容都是云端推送,那么火狐OS为何不像安卓一样也搞个框架呢?其实这才是火狐OS的优越之处。安卓系统和众多操作系统一样,都是应用先下载再运行,需要考虑到硬件的兼容性问题,而火狐OS完全就不用考虑这个问题。

<img data-original="/app/get_remote_pic.php?file=http://ugc.qpic.cn/adapt/0/2d7e2ed9-fdae-81d5-e2fb-42d08d7af864/800.jpg" alt="" />

火狐OS是一个完全基于HTML5的系统,没有所谓的“原生应用”。无论是打电话、发短信、玩游戏,使用的都是HTML 5技术。这倒不是说这些应用都需要时刻联网才能用,而是他们的结构采用了目前国家通用的HTML 5架构,你可以这么理解,这些APP都是一个个已经下载好的网页。

而火狐OS的应用webapp正是一个个网页,你首次联网后,这个app就会像网页一样被下载并缓存到本地,因为目前的HTML 5都是响应式的网页,也就是自适应网页。

火狐OS下载的webapp会根据你手机的屏幕尺寸自适应大小,避免了安卓app想一个apk通吃所以安卓设备面临困境。所以火狐OS与其他系统相比,它的webapp对硬件配置的要求非常低,单核512M内存的手机运行一大堆软件后依然非常流畅。

由于产品定位的关系,火狐OS从来都不和高端市场进行竞争,因为就算是竞争也打不过人家。所以它选择的目标是低价的入门级别手机,第一个国家选择巴西,随后是印度等东南亚国家,一直火狐OS都刻意的避开了手机系统争夺战很激烈的的确,包括美国、中国等国家。

五、为什么小米要做MIOS?

小米公司到目前位置,已经涉及到了包括手机、智能穿戴、智能家居、新能源汽车、包括小米公寓在内的所以能触及到的领域。之所以一开始选择做手机,是因为手机是获取用户群最快最直接的工具。

单单从和国内手机的竞争来看,小米的老对手可以通过自家海思芯片主打高端市场,并获得自主研发的好评。所以小米也不甘示弱,小米与联芯合作推出联芯1860方案的399廉价手机,是为了更低端手机进军,抢占低端市场。目前推广一台火狐OS可以得到4美元的补贴,也就是25块钱人民币,补贴到399元的廉价新机上也是一笔不少的钱。

<img data-original="/app/get_remote_pic.php?file=http://ugc.qpic.cn/adapt/0/6b1c0202-c8fa-c072-9bc7-fc58d4c5e5f3/800.jpg" alt="" />

从国际市场来看,小米试图进入国际市场,专利方面的缺乏绝对是小米的一块心病。硬件方面,小米选择之所以选择和大唐电信旗下的联芯合作是为了解决专利难题,因为大唐电信拥有一大批与电子通讯有关的专利,在小米海外扩张后,可以让小米规避专利风险等问题。

软件方面,小米可以通过和火狐OS合作,推出自家的mios以逃脱和被谷歌控制的厄运。俗话说,要防范于未然,这有点类似于微软在中国推广Office一样,微软当初放任Office盗版后火速占领中国市场,把老牌的WPS打的元气大伤。现在很多朋友看到WPS都会误以为WPS是模仿Office,其实WPS才真的是办公软件的祖师爷,比微软的Office早了十几年。

现在谷歌发布了免费的Android系统就有点类似于当年的微软一样,像是在撒网,等谷歌真动起手来收网的时候,众多手机厂商就像网中的鱼一样要任由宰割了。

目前唯一不能确定的是,尽管mios在界面上和设计交互上可以和miui一样,但小米的mios系统能否像魅族的“Flyme powered byYunOS”一样兼容安卓应用。小米研发团队的工程师可要加油了,加入mios要是也能兼容安卓应用,那绝对会有一大批发烧友买单的。

转:http://blog.chinaunix.net/uid-14735472-id-4220089.html

云计算用一个朋友的话来说:”做云计算最苦逼的就是得时时刻刻为一些可能一辈子都碰不到的事做

好准备。更苦逼的就是刚以为一个问题不会遇到,立刻就发生了。。。“。这个还真的没有办法,

谁让哥我是搞云计算的呢,简单一个虚拟化就搞的你蛋疼,你还能想其它的吗?一直纠结在做虚

拟化使用什么镜像格式,刚刚开始用了raw的file,后来发现LVM的很多特性对于虚拟化还是有比较

理想的能力,而且性能也很不错就用了LVM。后来被VMware骗了跑去搞Esxi接触了VMDK,最近

研究openstack发现了qcow2格式,貌似现在很流行呀。也说不上分析这些镜像格式的能力,就简单

说说自己的一些使用心得。

 

目前主要有那些格式来作为虚拟机的镜像:

raw


(default) the raw format is a plain binary image of the disc image, and is very portable. On filesystems that suppor

t sparse files, images in this format only use the space actually used by the data recorded in them.

老牌的格式了,用一个字来说就是裸,也就是赤裸裸,你随便dd一个file就模拟了一个raw格式的镜

像。由于裸的彻底,性能上来说的话还是不错的。目前来看,KVM和XEN默认的格式好像还是这

个格式。因为其原始,有很多原生的特性,例如直接挂载也是一件简单的事情。
裸的好处还有就是简单,支持转换成其它格式的虚拟机镜像对裸露的它来说还是很简单的(如果

其它格式需要转换,有时候还是需要它做为中间格式),空间使用来看,这个很像磁盘,使用多

少就是多少(du -h看到的大小就是使用大小),但如果你要把整块磁盘都拿走的话得全盘拿了

(copy镜像的时候),会比较消耗网络带宽和I/O。接下来还有个有趣的问题,如果那天你的硬盘

用着用着不够用了,你咋办,在买一块盘。但raw格式的就比较犀利了,可以在原来的盘上追加空间:
dd if=/dev/zero of=zeros.raw bs=1024k count=4096(先创建4G的空间)
cat foresight.img zeros.raw > new-foresight.img(追加到原有的镜像之后)

如果你看见这个舞女是顺时针转,说明你用的是右脑;如果是逆时针转,说明你用的左脑。耶鲁大学耗时5年的研究成果,据说,14%的美国人可以两个方向都能看见。

<img title="" data-original="/app/get_remote_pic.php?file=http://www.webkaka.com/blog/upload/68342_080616144006.gif" alt="" />

顺时针转的话,属於是用右脑较多的类型,逆时针转属於使用左脑较多的类型。大部分人的眼里里是逆时针方向转动,但也有人看来是顺时针方向转动的。顺时针的情况 , 女性比男性多。逆时针转动的,突然变成顺时针的话,IQ是160以上!
科学人杂志--天才的特殊思维

顶叶负责掌管脑中的数学和逻辑,这也是爱因斯坦成为天才的秘密。但不可否认的,爱因斯坦丰富的想像力与创造力,是使他的右脑不断激发出潜在能力的重要因素之一。

左脑因为是以语言处理讯息、控制知识、判断力、思考力因此被称为「知性脑」;右脑则控制著自律神经与字宙波动共振,由于是图像脑,因此造型能力优越,被称为「艺术脑」。

有关右脑的神奇功能研究,是始于1 9 8 1年,加州理工学院罗杰· 史贝利博士研究右脑获得诺贝尔奖以后,人们才开始对右脑有所认识,在此之前,人们并不认为左脑与右脑的功能有那么大的差别。史贝利在分割脑的实验中发现,左脑与右脑这两个半球完全以不同的方式在进行思考,他发现左脑用语言进行思考,右脑则是以图像进行思考;左脑偏向语言、逻辑性的思考,右脑则是影像和心像的思考。

根据七田真博士的研究,原来人在诞生之初,右脑的能力还很发达,右脑具备了超越常识那种几乎可称为全然未知的天才似的能力,这种能力自古以来就隐藏在人们脑海里,是一种超越时间、空间,与无限境界相连结的能力,但是因为人类世界是以教导、开启左脑为主,让小孩子努力学习语言以及往后生存所必需的知识,久而久之,左脑越来越发达,右脑却因为少用而日形退化。至于什么样的成人比较容易打开右脑,七 田真博士认为,心思专注、纯真没有成见的人,比较容易进入神奇的右脑世界。

http://www.webkaka.com/blog/archives/how-to-set-gzip-for-js-in-Nginx.html

Nginx启用gzip很简单,只需要设置一下配置文件即可完成,可以参考文章Nginx如何配置Gzip压缩功能。不过,在群里常有人提到,他们的网站Gzip压缩虽然成功了,但检测到JS仍然没有压缩成功,这是为什么呢?经过我的检查发现,原来是他们的gzip_types设置不对造成的,本文就为遇到同样情况的人解决这一问题。

Nginx启用Gzip压缩js无效

某群友在群里提到,他启用了网站的Gzip压缩,通过站长工具Gzip压缩检测检测到启用成功了,想着其他文件如CSS、JS等也都压缩成功了,但是通过进一步检测各种类型的压缩情况,发现JS文件并没有启用Gzip压缩,这令他非常纳闷,不知何故。

<img data-original="/app/get_remote_pic.php?file=http://www.webkaka.com/blog/upload/2014/9/201409121759472216.jpg" alt="Nginx启用Gzip压缩js无效" />

图1:Nginx启用Gzip压缩js无效

<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> centos-5-x86-devel.tar.gz 21-Oct-2014 22:12 197M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> centos-5-x86-devel.tar.gz.asc 21-Oct-2014 22:36 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> centos-5-x86.tar.gz 21-Oct-2014 22:11 174M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> centos-5-x86.tar.gz.asc 21-Oct-2014 22:37 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> centos-5-x86_64-devel.tar.gz 21-Oct-2014 22:15 213M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> centos-5-x86_64-devel.tar.gz.asc 21-Oct-2014 22:36 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> centos-5-x86_64.tar.gz 21-Oct-2014 22:13 189M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> centos-5-x86_64.tar.gz.asc 21-Oct-2014 22:36 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> centos-6-x86-devel.tar.gz 21-Oct-2014 22:07 234M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> centos-6-x86-devel.tar.gz.asc 21-Oct-2014 22:37 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> centos-6-x86-minimal.tar.gz 21-Oct-2014 22:06 103M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> centos-6-x86-minimal.tar.gz.asc 21-Oct-2014 22:37 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> centos-6-x86.tar.gz 21-Oct-2014 22:05 203M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> centos-6-x86.tar.gz.asc 21-Oct-2014 22:37 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> centos-6-x86_64-devel.tar.gz 21-Oct-2014 22:10 249M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> centos-6-x86_64-devel.tar.gz.asc 21-Oct-2014 22:37 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> centos-6-x86_64-minimal.tar.gz 21-Oct-2014 22:09 103M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> centos-6-x86_64-minimal.tar.gz.asc 21-Oct-2014 22:37 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> centos-6-x86_64.tar.gz 21-Oct-2014 22:08 216M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> centos-6-x86_64.tar.gz.asc 21-Oct-2014 22:37 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> centos-7-x86_64-minimal.tar.gz 21-Oct-2014 22:16 131M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> centos-7-x86_64-minimal.tar.gz.asc 21-Oct-2014 22:38 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> centos-7-x86_64.tar.gz 21-Oct-2014 22:16 201M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> centos-7-x86_64.tar.gz.asc 21-Oct-2014 22:38 198
<img data-original="http://download.openvz.org/icons/folder.gif" alt="[DIR]" /> contrib/ 18-Nov-2014 13:04 -
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> debian-6.0-x86-minimal.tar.gz 21-Oct-2014 22:03 77M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> debian-6.0-x86-minimal.tar.gz.asc 21-Oct-2014 22:38 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> debian-6.0-x86.tar.gz 21-Oct-2014 22:02 148M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> debian-6.0-x86.tar.gz.asc 21-Oct-2014 22:38 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> debian-6.0-x86_64-minimal.tar.gz 21-Oct-2014 22:04 79M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> debian-6.0-x86_64-minimal.tar.gz.asc 21-Oct-2014 22:38 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> debian-6.0-x86_64.tar.gz 21-Oct-2014 22:04 150M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> debian-6.0-x86_64.tar.gz.asc 21-Oct-2014 22:38 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> debian-7.0-x86-minimal.tar.gz 21-Oct-2014 22:00 84M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> debian-7.0-x86-minimal.tar.gz.asc 21-Oct-2014 22:38 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> debian-7.0-x86.tar.gz 21-Oct-2014 21:59 224M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> debian-7.0-x86.tar.gz.asc 21-Oct-2014 22:39 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> debian-7.0-x86_64-minimal.tar.gz 21-Oct-2014 22:01 84M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> debian-7.0-x86_64-minimal.tar.gz.asc 21-Oct-2014 22:38 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> debian-7.0-x86_64.tar.gz 21-Oct-2014 22:01 224M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> debian-7.0-x86_64.tar.gz.asc 21-Oct-2014 22:38 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> fedora-19-x86.tar.gz 21-Oct-2014 21:50 190M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> fedora-19-x86.tar.gz.asc 21-Oct-2014 22:39 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> fedora-19-x86_64.tar.gz 21-Oct-2014 21:52 190M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> fedora-19-x86_64.tar.gz.asc 21-Oct-2014 22:39 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> fedora-20-x86.tar.gz 21-Oct-2014 21:48 184M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> fedora-20-x86.tar.gz.asc 21-Oct-2014 22:39 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> fedora-20-x86_64.tar.gz 21-Oct-2014 21:49 185M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> fedora-20-x86_64.tar.gz.asc 21-Oct-2014 22:39 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> scientific-6-x86.tar.gz 21-Oct-2014 22:18 197M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> scientific-6-x86.tar.gz.asc 21-Oct-2014 22:40 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> scientific-6-x86_64.tar.gz 21-Oct-2014 22:19 210M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> scientific-6-x86_64.tar.gz.asc 21-Oct-2014 22:39 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> suse-12.3-x86.tar.gz 21-Oct-2014 21:42 190M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> suse-12.3-x86.tar.gz.asc 21-Oct-2014 22:40 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> suse-12.3-x86_64.tar.gz 21-Oct-2014 21:43 191M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> suse-12.3-x86_64.tar.gz.asc 21-Oct-2014 22:40 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> suse-13.1-x86-minimal.tar.gz 21-Oct-2014 21:45 55M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> suse-13.1-x86-minimal.tar.gz.asc 21-Oct-2014 22:40 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> suse-13.1-x86.tar.gz 21-Oct-2014 21:45 229M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> suse-13.1-x86.tar.gz.asc 21-Oct-2014 22:40 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> suse-13.1-x86_64-minimal.tar.gz 21-Oct-2014 21:47 56M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> suse-13.1-x86_64-minimal.tar.gz.asc 21-Oct-2014 22:40 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> suse-13.1-x86_64.tar.gz 21-Oct-2014 21:47 232M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> suse-13.1-x86_64.tar.gz.asc 21-Oct-2014 22:40 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> ubuntu-10.04-x86.tar.gz 21-Oct-2014 21:57 133M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> ubuntu-10.04-x86.tar.gz.asc 21-Oct-2014 22:41 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> ubuntu-10.04-x86_64.tar.gz 21-Oct-2014 21:58 137M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> ubuntu-10.04-x86_64.tar.gz.asc 21-Oct-2014 22:41 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> ubuntu-12.04-x86-minimal.tar.gz 21-Oct-2014 21:55 57M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> ubuntu-12.04-x86-minimal.tar.gz.asc 21-Oct-2014 22:41 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> ubuntu-12.04-x86.tar.gz 21-Oct-2014 21:55 123M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> ubuntu-12.04-x86.tar.gz.asc 21-Oct-2014 22:41 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> ubuntu-12.04-x86_64-minimal.tar.gz 21-Oct-2014 21:56 58M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> ubuntu-12.04-x86_64-minimal.tar.gz.asc 21-Oct-2014 22:41 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> ubuntu-12.04-x86_64.tar.gz 21-Oct-2014 21:56 125M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> ubuntu-12.04-x86_64.tar.gz.asc 21-Oct-2014 22:41 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> ubuntu-14.04-x86-minimal.tar.gz 21-Oct-2014 21:53 73M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> ubuntu-14.04-x86-minimal.tar.gz.asc 21-Oct-2014 22:41 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> ubuntu-14.04-x86.tar.gz 21-Oct-2014 21:52 145M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> ubuntu-14.04-x86.tar.gz.asc 21-Oct-2014 22:41 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> ubuntu-14.04-x86_64-minimal.tar.gz 21-Oct-2014 21:54 75M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> ubuntu-14.04-x86_64-minimal.tar.gz.asc 21-Oct-2014 22:41 198
<img data-original="http://download.openvz.org/icons/compressed.gif" alt="[ ]" /> ubuntu-14.04-x86_64.tar.gz 21-Oct-2014 21:54 147M
<img data-original="http://download.openvz.org/icons/text.gif" alt="[TXT]" /> ubuntu-14.04-x86_64.tar.gz.asc 21-Oct-2014 22:41 198

http://download.openvz.org/template/precreated/

http://npm.taobao.org/

淘宝 NPM 镜像

这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。

  • 当前 registry.npm.taobao.org 是从 registry.npmjs.org 进行全量同步的.
  • 当前 npm.taobao.org 运行版本是: cnpmjs.org@2.0.0-beta3
  • 本系统运行在 Node.js@v0.11.14 上.
  • nodejs.org/dist 镜像: npm.taobao.org/dist
  • phantomjs downloads 镜像: phantomjs mirror
  • Node.js 文档镜像: Node.js Document
113,488 个模块 615,221 个模块版本 7 次删除
22,867 次本日下载 474,895 次本周下载 1,792,093 次本月下载
68,299 次昨日下载 488,804 次上周下载 2,211,639 次上月下载

同步状态

This registry will sync all packages from official registry.

上次同步完成时间: Fri Nov 28 2014 13:55:10 GMT+0800 (中国标准时间)

告别node-forever,拥抱PM2
http://www.oschina.net/translate/goodbye-node-forever-hello-pm2?cmp

<img data-original="/app/get_remote_pic.php?file=http://static.oschina.net/uploads/img/201307/29151744_a70t.png" alt="pm2 logo" />devo.ps团队对JavaScript的迷恋已经不是什么秘密了;node.js作为服务器端,AngularJS作为客户端,某种程度上说,我们的堆栈是用它建成的.我们构建静态客户端和RESTful JSON API的方法意味着我们跑了很多的node.js,我必须承认尽管node.js的一切都令人敬畏,但当我们在生产环境中运行它时它仍然会让我们感到头疼.相比一些更加成熟的语言,它的工具和最佳实践仍然缺乏(试想一下:监控,日志,错误处理).

到目前为止,我们仍然依赖漂亮俏皮的node-forever模块.它是非常伟大的模块,不过依然缺失一些功能:

  • 有限的监控和日志功能,
  • 进程管理配置的支持差,
  • 不支持集群,
  • 代码库老化(意味着在升级node.js时频繁的失败).

这就是为什么我们要在过去的几个月里去写PM2模块.在我们即将发布针对生产环境的正式版之前我们想先让您看一眼.

PM2到底是什么个东西呢?

首先第一件事,你需要先通过 npm 来安装它:

npm install -g pm2

让我们通过表格来对比下:

Feature Forever PM2
Keep Alive
Coffeescript
Log aggregation
API
Terminal monitoring
Clustering
JSON configuration

现在让我来介绍一点点主要特性...

原生的集群化支持

Node v0.6引入了集群特性,允许你在多个Node应用中共享socket.问题在于,它不能在容器外运行而且需要一些额外的配置来处理主进程和子进程.

PM2原生支持处理这个问题,而且不需要额外的代码:PM2本身作为主进程,然后它将你的代码封装到一个特殊的集群进程里,就像node.js一样,为你的代码文件添加一些全局变量.想要启动一个使用所有CPU核心的集群,你只需要键入如下的指令:

$ pm2 start app.js -i max

然后;

$ pm2 list

然后就会显示类似下面的东西(ASCII UI FTW);

<img data-original="/app/get_remote_pic.php?file=http://static.oschina.net/uploads/img/201307/29151744_iiYh.png" alt="pm2 list" />

就像你看到的,现在你的应用有多少个进程就取决于你的CPU核心数了.

按照termcaps-HTOP(Linux下的系统监控与进程管理软件)的方式管理

通过pm2 list命令来观察所有运行的进程以及它们的状态已经足够好了.但是怎么来追踪它们的资源消耗呢?别担心,用这个命令:

$ pm2 monit

你可以得到进程(以及集群)的CPU的使用率和内存占用.

<img data-original="/app/get_remote_pic.php?file=http://static.oschina.net/uploads/img/201307/29151746_LbVd.png" alt="pm2 monit" />

声明: node-usage 到目前为止还不支持MacOS(随便什么性能要求),不过它在Linux下运行良好.

现在,让我们来核实一下我们的集群,还有对内存堆栈的垃圾回收,我们假设你已经有一个HTTP基准测试工具(如果没有,你一定要使用 WRK):

$ express bufallo // Create an express app $ cd bufallo
$ npm install
$ pm2 start app.js -i max
$ wrk -c 100 -d 100 http://localhost:3000/

在另一个终端,运行监控选项:

$ pm2 monit

耶~

实时集中log处理

现在你不得不管理多个集群进程:一个爬取数据,一个处理数据,等等...这就意味着大量log,你可以按照老式的方法处理:

$ tail -f /path/to/log1 /path/to/log2 ...

但我们想的很周到,我们增加了logs功能:

$ pm2 logs

<img data-original="/app/get_remote_pic.php?file=http://static.oschina.net/uploads/img/201307/29151747_jrUM.png" alt="pm2 monit" />

快速恢复

现在事情一切顺利,你的进程嗡嗡的运行着,你需要做一次硬重启(hard restart).现在吗?是的,首先,dump掉:

$ pm2 dump

然后,你可以从文件中恢复它:

$ pm2 kill // 让我们假设一个PM2停掉了
$ pm2 resurect // 我所有的进程又满血满状态复活了

强健的API

比方说,你想要监控所有被PM2管理的进程,而且同时还想监控运行这些进程的机器的状态(甚至希望创建一个Angular应用来调用这些API...):

$ pm2 web

打开浏览器输入 http://localhost:9615 ,我嘞个去!!

对了,还有很多特性...

  • 全部测试通过,
  • 新一代的update-rc.d(pm2 startup),当然它还是alpha版,
  • 开发模式下更改文件自动重启(pm2 dev),也同样还是草稿,
  • 自动刷新log,
  • 快捷的通过JSON文件管理你的应用,
  • 在error log里记录未捕获的异常,
  • 记录重启的次数和时间,
  • 退出时自动杀死进程.

 

下一步计划?

首先,你可以去Github上粉我们(我们喜欢stars): https://github.com/Unitech/pm2.

我们开发的PM2提供了先进完整的Node进程管理解决方案.我们希望能有更多的人来帮助我们:更多的pull requests.一些还停留在开发路线图上面的功能我们会尽快完成,下面这些就是:

  • 远程管理/状态校验,
  • 嵌入式跨进程通信通道(消息总线),
  • V8垃圾回收的内存泄漏检查,
  • Web界面,
  • 监控数据持久化,
  • 邮件通知.

特别感谢 Makara Wang 的观点和工具,还有 Alex Kocharin 提的建议和提交的代码.

varnishstat是查看varnish状态的工具,但里面有些参数官方网站都没介绍清楚,在这里备忘一下。

<img class="aligncenter size-full wp-image-586" data-original="http://www.151051.com/wp-content/uploads/2014/11/346.gif" alt="346" width="580" height="748" />

Hitrate ratio由三个数字组成,第一个数字范围0-10,第二个数字范围0-100,第三个数字范围0-1000。分别表示过去N秒内的Hitrate avg。上图由于我是刚打开varnishstat,因此三个数字都是4,表示过去4秒内的平均hitrate,如果打开的时间足够长,以上三个数字就会 逐渐变成10,100,1000。

Hitrate avg里的内容是命中率,需要乘以100转换成百分比,例如上图表示命中率为99.23%