Skip to content

centos下Meteor Server的配置

Meteor is an open source HTTP server, designed to offer developers a simple means of integrating streaming data into web applications without the need for page refreshes. Meteor是一个开源的HTTP服务器,旨在为开发人员提供简单非刷新页面的方式把程序的数据流集成到web应用程序中。Meteor不是框架,不是meteor.com。搜了下,这个还真是小众,至少中文资料非常少。说到Meteor,不得不说live Blogging。因为想在wordpress上弄一个微博,才有live blogging,然后才有meteor(认识过程)。 Live Blogging(中文名称:WordPress微博)是一个WordPress插件,允许您在WordPress网站中创建即时消息博文(类似Twitter的微博客)。该插件使用Comet技术来降低服务器负载,提升更新发布速度,提供了较好的整体用户体验。该插件发布后引起了WPer的广泛兴趣,目前正在准备一些重大的改进。该插件在2009年Weblog Tools Collection(网络博客工具集锦) 插件竞赛中获得亚军。可以通过作者提供的屏幕录像来了解该插件目前的主要功能。 Live Blogging我就不详细介绍了,链接地址为中文翻译者的博客,比较详细的介绍了这个wordpress插件。不过高级用法还有待自己摸索研究。

Live Blogging提供Meteor的平滑模式。于是我也在我的服务器安装了这个Meteor,安装过程在这里分享出来,特别是centos系统的童鞋。

网上有给出用curl安装的,在centos6以后能成功,在centos5,glibc2.5安装不成功。

一、下载解压

Meteor必须要安装perl 5,确保您的机器上安装了。

首先,建立文件夹/usr/local/meteor

mkdir /usr/local/meteor
cd /usr/local/meteor

去网站下载Meteor压缩包,并进行解压:

wget http://meteorserver.org/download/latest.tgz
tar zxvf latest.tgz

解压后会在meteor文件夹中看到如下内容

  • Meteor/- Meteor's perl modules

    • Channel.pm - A Meteor channel
    • Config.pm - Meteor configuration handling
    • Connection.pm - Common super-class for controller and subscriber
    • Controller.pm - A Meteor controller
    • Document.pm - Caching and serving mechansim for static documents
    • Message.pm - Meteor message object
    • Socket.pm - Meteor Socket additions
    • Subscriber.pm - A Meteor subscriber
    • Syslog.pm - Convenience interface to Sys::Syslog
  • public_html/- document root for static page serving

    • poll.html - JavaScript IFRAME source for polling connections
    • stream.html - JavaScript IFRAME source for streaming connections
    • meteor.js - JavaScript class required for Meteor web browser client
  • meteord - The Meteor executable

  • meteor.conf.dist - Sample configuration file

  • daemoncontroller.dist - Meteor deamon init script shell script 二、配置

复制启动脚本meteord

cp daemoncontroller.dist /etc/init.d/meteord
cp meteord.conf.dist /etc/meteord.conf

然后对这个文件进行修改

vim /etc/init.d/meteord

会看到如下内容

#!/bin/sh
# description: Runs meteord
# chkconfig: 2345 99 00

# Source function library.
. /etc/init.d/functions

case "$1" in
'start')
echo -n "Starting Meteord: "
echo 65535 > /proc/sys/fs/file-max
ulimit -n 65535
cd /usr/local/meteor
sudo -u meteor ./meteord >/var/log/meteord 2>&1 &
echo
;;
'stop')
echo -n "Stopping Meteord: "
killall meteord && success || failure
;;
'reload')
echo -n "Reloading Meteord configuration: "
killall -s SIGHUP meteord && success || failure
;;
*)
echo "Usage: $0 { start | stop | reload }"
;;
esac
exit 0

修改后的文件,取消了用meteor角色来启动服务,不知道有没有什么坏处。

#!/bin/sh
# description: Runs meteord
# chkconfig: 2345 99 00

# Source function library.
#. /etc/init.d/functions

case "$1" in
'start')
echo -n "Starting Meteord: "
echo 65535 > /proc/sys/fs/file-max
ulimit -n 65535
#cd /usr/local/meteor
#su meteor
cd /usr/local/meteor/
./meteord >/var/log/meteord 2>&1 &
echo
;;
'stop')
echo -n "Stopping Meteord: "
killall meteord && success || failure
;;
'reload')
echo -n "Reloading Meteord configuration: "
killall -s SIGHUP meteord && success || failure
;;
*)
echo "Usage: $0 { start | stop | reload }"
;;
esac
exit 0

这里很奇怪,必须要先cd /usr/local/meteor/ 进入文件夹,然后才启动,不然就各种错误,对perl不了解,所以不清楚是怎么回事。

然后将服务打开,启动服务器。

/sbin/chkconfig meteord on
/etc/init.d/meteord start

三、测试服务连接

到这里,meteorServer这个时候已经安装好并已经启动起来了。在windows下打开cmd

telnet yourIP 4670

测试订阅服务,然后输入

GET /push/1/iframe/test HTTP/1.1

会得到如下结果

Trying yourIP...
Connected to yourIP.
Escape character is '^]'.
GET /push/1/iframe/test HTTP/1.1 <Enter>
<Enter>
HTTP/1.1 200 OK
Server: meteord
Content-Type: text/html; charset=utf-8
Pragma: no-cache
Cache-Control: no-cache, no-store, must-revalidate
Expires: Thu, 1 Jan 1970 00:00:00 GMT

<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Cache-Control" content="no-store">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="Thu, 1 Jan 1970 00:00:00 GMT">
<script type="text/javascript">
window.onError = null;
var domainparts = document.domain.split(".");
document.domain = domainparts[domainparts.length-2]+"."+domainparts[domainparts.length-1];
parent.Meteor.register(this);
</script>
</head>
<body onload="try { parent.Meteor.reset(this) } catch (e) {}">
<script>ch("test", 0);</script>

<script>p(-1,"");</script>
<script>p(-1,"");</script>

说明订阅服务是正常的。然后测试控制服务

 telnet yourIP 4671
Trying yourIP...
Connected to yourIP.
Escape character is '^]'.
ADDMESSAGE test hello world <enter>
OK      0

<script>p(2,"test","hello world");</script>

到此,MeteorServer算是安装了大半了。

四、通过Nginx发布应用文件

我们下载的时候发布有一个public_html的文件夹,这个文件夹必须发布出去,这样前台的应用才能使用Meteor的脚本来实现功能。当然了push请求还是要转发给MeteorServer的。由于我用的是nginx,直接在配置文件nginx.conf中修改就行了。

server {
        listen  80;
        server_name     meteor.ueder.info;
        root /usr/local/meteor/public_html;
        location / {
                index index.html index.htm index.php;
        }
        location ~*^/push {
                proxy_pass      http://127.0.0.1:4670;
        }
        location ~.*\.(js|css)?$
        {
                expires 1d;
        }

}

然后nginx –s reload就生效了。至此,完成了在centos下meteorServer的安装。

安装不难,但是很折腾人。晚上回家搞一晚上,服务器启动起来了,快睡觉了,reboot,发现又没有启动成功,查看日志,尽是些perl出错的东西,把我给引到歧路上去了。希望我写的东西对您有用。

参考资料:

1、http://meteorserver.org/installation/