1. Matlab web Server 简介
Matlab Web Server可以在WWW环境中开发网络上的应用程序:用户在浏览器上输入数据,提交给服务器上的Matlab,进行计算,把计算结果在浏览器上进行显示。 Matlab Web Server应用包括M文件、HTML和图形。建立Matlab Web Server应用需要以下几部分的工作:
(1) 建立一个向Matlab提交数据的HTML输入文档。
(2) 建立一个显示Matlab计算结果的HTML输出文档。
(3) 建立一个处理输入数据和计算结果的 M文件。
(4) 建立一个测试文件对代码进行测试。
Matlab Web服务器需要运行在TCP/IP网络上。
(1)应用环境:Matlab Web服务器可以适用于类似以下形式的网络上,如下图所示:
运行要求系统上必须安装TCP/IP网络软件;客户端必须安装浏览器 (Netscape Communicator Release 4.7或者Microsoft Internet Explorer 5.0.。旧的版本也许可以但没有经过测试)。服务器上必须安装了 Web服务器软件(如I I S,Apache等),并且要能运行C G I程序。本人的运行环境是windows xp +Apache.+matlab7.0.+ MyIE2下面就介绍在这个环境下如何安装和配置,实现matlab web server的功能。
2. Apache的安装和配置
(1) Apache简介和获取:
Apache是世界上排名第一的服务器,根据Netcraft所做的调查,世界上百分之五十以上的Web服务器在使用Apache。而且Apache是免费的。
首先,到www.apache.org 下载安装程序。
http://httpd.apache.org/dist/httpd/binaries/wind32/ 目录下有多种安装文件,在这里编者选择1.3.20版的。
注意:如果读者不能直接连接到国外网站,需要用代理服务器(例如 218.25.251.168 端口 80)。
(2) Apache安装说明:
下载完后即可安装。在安装过程中需要注意的是,出现如下对话框时,如下图示:
#p#副标题#e#安装程序要求三项都必须填写。如果没有申请域名,(Network Domain)项可随便填,以后也可以在配置文件httpd.conf中修改,主机名(Server Name),填写自己的IP地址也可以。
安装目录为方便起见,选择在C: ,安装完后所有的文件都在c:Apache目录下。(安装目录可以自己选择,无强制要求,下面的介绍均以安装在C盘根目录下为例,若安装到其他目录下,操作是类似的)。
(3) Apache安装完测试:
安装结束后,将文件C:Apachehtdocsindex.html.en 改名为index.html.。 目录c:Apachehtdocs就是WWW服务器的根目录,index.html为首页。在浏览器中输入http://localhost,则出现如下Apache的测试页面,如下图。(如果显示不正常则可能安装有问题)。
安装成功后,还要对Apache进行一系列的设置。可以参考Apache的联机文档,或者参考http://apache.winet.cn/。下面只对与相关的内容进行说明。
(4) Apache相关设置语法说明:(Windows环境下)
i)DocumentRoot 指令
说明:组成网络上可以观看的主文档树的目录
语法:DocumentRoot 目录路径
系统默认值为DocumentRoot "C:/Apache/htdocs" Apache根据请求定位文件的默认操作是,取出URL路径(即,URL中主机名和端口后面的部分)附加到由DocumentRoot 指定的文件系统路径后面,组成在网上所看见的文件树结构比如说:
DocumentRoot "C:/Apache/htdocs"
假设主机的域名www.myhost.com,于是对于http://www.myhost.com/index.html的访问就会指向C:/Apache/htdocs/index.html
ii) Alias 指令
说明:映射URL到文件系统的特定区域
语法:Alias 虚拟目录 实际目录
Alias指令使文档可以被存储在DocumentRoot以外的本地文件系统中。 以虚拟路径开头的URL可以被映射到以 实际目录开头的本地文件。
例如: Alias /icons/ "C:/Apache/icons/" 对虚拟目录/icons的访问,实际将指向目录C:/Apache/icons/
iii) ScriptAlias 指令
说明:映射一个URL到文件系统并视之为CGI脚本
语法:ScriptAlias 虚拟目录 实际目录
ScriptAlias指令的行为与Alias指令相似.
例子:ScriptAlias /cgi-bin/ "C:/Apache/cgi-bin/"
执行虚拟目录下/cgi-bin/matweb.exe 程序,实际将执行C:/Apache/cgi-bin/matweb.exe
(5) 例子说明:
为了帮助读者学习和操作,本章以matlab自带的例子Peaks Plot Generator 为基础,介绍如何对Apache进行配置。以及在后面将针对该例介绍如何进行matlab web server 编程。
步骤1:
在 C盘根目录下新建文件夹C:testweb
在testweb文件夹中包含了演示项目所需要的文件即:
(a)向matlab提交数据的HTML输入文档。
(b)显示matlab计算结果的HTML输出文档。
(c)处理输入数据和计算结果的 M文件。
(d)测试文件
(e)cgi-bin文件夹
(f)icons 文件夹,放置所需要的图片,包括MATLAB运行过程生成的图片
#p#副标题#e#步骤2:
准备所以相关的文件和程序放置在对应的文件夹中
(1)将本例子中使用到的webpeaks1.html、dummy.html、peaksplot.html 和webpeaks2.html四个HTML文档以及M文件webpeaks.m(在%matlab%toolboxwebserverwsdemos下)复制到目录c:testweb下,其中webpeaks1.html定义了显示的框架,dummy.html为初始显示在框架下半部分的页面,peaksplot.html生成输入界面,webpeaks2生成输出界面;
(2)把%matlab%toolboxwebserverwsdemos下的matweb.conf和 matweb.exe 复制到C:testwebcgi-bin。
(3)把%matlab%toolboxwebserverwsdemos 下的peaks-jr.jpg复制到c:testwebicons下。
(4)把webpeaks1.html 重命名为index.html.
(5)配置Apache相关参数。所有的配置基本上都在文件c:Apacheconfhttpd.conf 中实现。
步骤3:
修改默认根目录:
将默认根目录指向c:testweb
在httpd.conf文件中找到DocumentRoot 项,将”c:Apachehtdocs”改为 “c:/testweb”,如下图所示:
步骤4:
设置CGI
MATLAB Web Server 是通过CGI方式工作的,为了让Apache使用CGI(这里是matweb.ext)程序,必须为cgi-bin目录打开特定的特权
在配置文件中找到ScriptAlias /cgi-bin/ "C:/Apache/cgi-bin/" 这一项,如下图示:
将其修改为
ScriptAlias /cgi-bin/ "C:/testweb/cgi-bin/",以后对/cgi-bin/中文件的访问实际上是对c:/testweb/cgi-bin/中的文件进行访问。同时将
中的
Options None 改为Options ExecCGI。表示允许在C:/testweb/cgi-bin目录下运行CGI程序。修改的结果如下图示:
步骤5:
设置icons目录:
对icons目录的设置不是每个应用项目都需要的,一般来说,对于需要调用或者生成图片的应用项目,为了方便管理,将所有图片放置在同个文件夹(如icons文件夹)中。MATLAB Web Server 的演示程序中有需要生成图片和调用图片,所以对icons进行设置。
在配置文件httpd.conf中找到以下内容,如下图示:
将其修改如下图所示:
即将虚拟目录/icons/映射到目录c:/testweb/icons/,以后对/icons/的访问实际上是对c:/testweb/icons/的访问。
注意:每次对httpd.conf文件修改后,要重启Apache,设置的修改才起作用。
#p#副标题#e#3. matlab web server 的安装和配置
Web Server 的系统配置文件位于%MATLAB%webservermatlabserver.conf.(%MATLAB%表示实际的安装目录)初次安装后,该文件中只有一行
-m 1
这一参数表示允许同时运行的MATLAB进程数。默认为1。可以修改为更大的数值,数值越大,MATLAB服务器的负担越大。
对matlabserver.conf的说明:
当matlabserver启动时,从matlabserver.conf文件获取初始设置数据,当安装Matlab Web server时生成了这个文件,位于 %matlab%/webserver目录中,配置设置必须显示在matlabserver.conf的第一行,其基本的设置选项为:
选项
说明
-p [n]
Matlabserver 侦听的端口号 默认值是8888
-m [n]
Matlabserver同时运行的最大线程数 m,默认值是1
-o timeout
等待Matlabserver开始的秒数,默认值300
-a path
#p#副标题#e#Web Server 的配置文件为:
%MATLAB%toolbox webserver wsdemosmatweb.conf
Web Server 的CGI程序为
%MATLAB%toolbox webserver wsdemosmatweb.exe或者
%MATLAB%webserverbinwin32matweb.exe.
对matweb.conf文件的说明:
matweb 连接matlabserver 需要的配置文件,必须同matweb 程序一起放在虚拟目录 /cgi-bin中。
Matlab自带例子中初始的配置文件内容如下图所示:
在同一个工程中,不同应用的配置必须在同一个配置文件中。例如matlab自带的例子可视为一个工程,其中有四个应用webmagic , webpeaks , webstockrnd ,players .
选项
说明
参考值
[application]
(必须)
Matlab应用运行的M文件名
[webpeaks]
mldir
(可选)
读写文件的工作目录,设定后将自动添加到Matlab的搜索目录中
mldir=c:/testweb/icons
mllog
(可选)
产生一个记录应用和Matlab进行信息交换的日志文件。运行时需将它关闭,否则降低程序的性能
c:/testweb/webpeaks.log
mlserver
(必须)
运行matlabserver主机名
K;也可以是IP地址211.66.15.83
mlport
(可选)
Matlabserver侦听的端口号,必须与Matlabserver.conf中一致
默认8888
mltimeout
(可选)
等待matlabserver的最大超时时间的秒数
默认180
my_var
用户自定义的配置变量
按编者自己的实际配置修改如下图示:
#p#副标题#e#要特别注意一下,必须在[webpeaks]和项中加入
mldir=C:/testweb/icons
否则,程序运行生成的图片将被放置在根目录即c:testweb下,而调用显示图片时是在c:testwebicons里查找文件。结果是无法显示生成的图片。
4. 运行例子
根据上述操作后,完成了一个简单的matlab web server 应用的配置,在局域网中其他机子上的浏览器地址栏中输入211.66.15.83可出现如下页面,如下图示:
选择参数,并按下Generate Plot 按钮后,出现如下画面,如下图示:
5. matlab web server 应用程序的编写
1. Matlab web server 工作原理:
Matlab Web Server 组件包括matlabserver.exe、matweb.exe、matweb.m和两个配置文件matlabserver.conf、matweb.conf。
matlabserver管理Web 应用和Matlab之间的通信,matlabserver是一个多线程的基于 T C P/IP的服务器,它运行输入HTML 文档内的隐藏域mlmfile 的值指定的M文件,这是通过唤起文件matweb.m,再由它来执行这个 M文件. matlabserver可以侦听任何一个合法的 TCP/IP 端口,不过要配置matlabserver.conf 文件,并且在该文件中还可以设置同时最多有几个连接。Matweb是matlabserver 的一个客户端应用,利用 C G I 把 H T M L 的输入数据传送给matlabserver; matweb.m是调用 Web 应用要运行的 M文件matweb.conf是matweb 连接Matlabserver 需要的配置文件。
#p#副标题#e#2. 代码分析
2.1 主页index.html(即webpeaks.html)的代码如下: