实验室想做在线服务器,而我一直用的是Perl,因此想到了用perl写CGI脚本,然后由Apache来调用该脚本。对于我这么一个对Web服务器完全不懂的人来说,这个问题比较难,不过作为做科研的人对于接触新的东西还是蛮感兴趣的。做就做吧,Google了半天,知道只要装上Apache就可以搞定在本机的在线服务器调试了,因此开始了漫长的配置Apache之旅。
首先,下载和安装Apache,我用的版本是2.2.这一步没有什么可说的。
接下来是配置Apache。基本的配置也没有什么好说的,参考网上的大量教程。我参考的主要是下面
http://www.blabla.cn/php/install_apache_228_window_xp_80516.html 的教程。Apache的配置主要是在其配置文件httpd.conf中修改,该文件位于安装Apache的文件夹里面,比如我把Apache安装在D:Program FilesApache Software FoundationApache2.2下面,则httpd.conf在其子目录conf里面。这里需要注意的是,修改配置文件之前最好做备份,以防修改了之后出问题了不知道怎么恢复。一般的安装好之后Apache就可以运行了,打开IE输入http://localhost如果出现“It works!"说明安装成功。
安装成功了并不能说明就可以用来发布网页了。这其中还有重要的一步是调用CGI脚本。在打开网页提交任务之后,网页上出现的 Internal server error,并没有出现想要的结果。这说明Apache并没有成功的调用CGI脚本。问题可能出在CGI脚本本身,我这里的问题很明显就是在于Apache不知道怎样去执行该脚本,即Apache和CGI脚本之间没有建立联系。那么怎样去建立两者的联系呢?反复Google了很久,终于搞定了这个问题。可以通过下面的两种方法来解决:
1 在CGI脚本的第一行加上perl.exe所在的路径。在Linux中写的脚本的第一行一般是#!/usr/bin/perl,但是在WindowXP中perl并不是安装在/usr/bin/里面,因此需要告诉Apache去哪里调用perl解释器去执行这个脚本。
2 修改Apache的ScriptInterpreterSource,它可以取下面三种方式:"Registry","Registry-Strict"和"Script"
它的默认方式是第三种,即通过脚本中给出的地址去调用解释器,也就是上面所说的第一种方式。如果我们不想修改从Linux直接copy过来的codes,那么可以选择前面两种方式,这样Apache在执行脚本的时候是根据注册表中给出的地址来实现的,它忽略CGI脚本的第一行。我们首先需要在httpd.conf中加上下面的句子告诉Apache调用解释器的方式:
ScriptInterpreterSource Registry - Strict
然后我们需要修改注册表来告诉Apache去哪里调用perl,即在.cig/下添加/Shell/ExecCGI/Command,把它的值设为perl.exe所在的路径,并且加上-wT的选项,如下所示:
HKEY_CLASSES_ROOT.cgiShellExecCGICommand(Default) => C:Perlbinperl.exe -wT
现在问题解决了,我可以在WindowXp中发展在线服务器了。
转载本文请联系原作者获取授权,同时请注明本文来自彭友松科学网博客。 链接地址: https://blog.sciencenet.cn/blog-54276-513712.html
上一篇:
计算生物学/生物信息学的未来是什么? 下一篇:
关于聚类的一些经验及其在R中的实现