self-confidence,the source of all the power

导航

ubuntu 安装apache2并配置cgi,搭建mimetex转化公式图片的服务

一.Apache的安装

 在终端输入:

sudo apt-get install apache2

二.启动、停止Apache服务

 Apache的启动和停止文件是:/etc/init.d/apache2

 启动服务

sudo apache2ctl -k start

 停止服务

sudo apache2ctl -k stop

重启服务

sudo apache2ctl -k restart   或 sudo /etc/init.d/apache2 restart

三. 配置文件的结构

The configuration layout for an Apache2 web server installation on Ubuntu systems is as follows:

/etc/apache2/
|-- apache2.conf
|       `--  ports.conf
|-- mods-enabled
|       |-- *.load
|       `-- *.conf
|-- conf-enabled
|       `-- *.conf
|-- sites-enabled
|       `-- *.conf
上面这段话是摘自apache2的主页,可以通过http://localhost/访问得到,这里简单翻译一下。
  • apache2.conf 是主要的配置文件,当启动web 服务的时候,它通过include的方式引入其它的配置文件来进行配置。
  • ports.conf 总是被主配置文件(apache2.conf)include进来,主要用于监听进来的连接的端口。
  • 在目录 mods-enabled/conf-enabled/ and sites-enabled/ 下的配置文件分别负责一些其它的配置,诸如模块的管理,全局变量,虚拟机等的配置,这块的配置我也没碰过,以后碰到再补充。

   使用vi apache2.conf查看文件,可以看到如下关键配置,里面的注释和一些其它配置没有贴出来

Include ports.conf
<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>
<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
IncludeOptional conf-enabled/*.conf

# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf

     从上面的配置看,它引用了ports.conf, conf-enabled/目录,sites-enabled/目录下面的配置文件。

四、 启动服务

      运行前面说的命令启动服务,看是否我们的web服务能否正常访问。

      在执行命令后会报错:“Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName”。 不用担心,可以在ports.conf里加下一句 ServerName   localhost:80 

      再次重启服务,这下应该没有问题了。

.CGI的配置 

     1.首先在根目录下建一个cgi-bin的目录,即/var/www/cgi-bin/。cgi程序都放在这个cgi-bin的目录中,不能放在其他的目录中。

我是从 http://www.forkosh.com/mimetexmanual.html 下载了一个cgi文件放到该目录下,这个文件的作用就是将latex的文本转化为gif形式的图片公式,主要用于数学等一些理工科领域的公式编辑。

可以参考另一篇文章http://www.cnblogs.com/lovemo1314/p/5614769.html,这篇文章是用android访问的第三方网站http://latex.codecogs.com的api。本文则是采用mimetex.cgi在本地搭建

一个服务,遗憾的是这两种都不支持中文的转换。mimetex文档参看 http://www.sciencechatforum.com/documents/

     2. cgi配置成功后,只要我输入http://localhost/cgi-bin/mimetex.cgi?x^2,后端就会为我返回一个x^2(这里是数学中样子打不出来,只能以计算机中的样子示人,稍后上图看结果)。 mimetex.cgi为

转化图片的程序bin文件。
     3.打开/etc/apache2/sites-enabled/000-default,可以看到

DocumentRoot /var/www/     ##默认的是指向/var/www/html,这一句一定要改,我就是在这里被坑了好久,不然会一直提示找不到
Include conf-available/serve-cgi-bin.conf

     如果这句被注释掉就打开。

     4. 接下来我们再打下配置文件 serve-cgi-bin.conf, 这个文件是cgi的主要配置。

<IfModule mod_alias.c>
        <IfModule mod_cgi.c>
                Define ENABLE_USR_LIB_CGI_BIN
        </IfModule>

        <IfModule mod_cgid.c>
                Define ENABLE_USR_LIB_CGI_BIN
        </IfModule>

        <IfDefine ENABLE_USR_LIB_CGI_BIN>
                ScriptAlias /cgi-bin/ /var/www/cgi-bin/            ###指定目录
                <Directory "/var/www/cgi-bin">
                        AllowOverride None
                        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                        Require all granted
                        AddHandler cgi-script cgi         ###添加cgi脚本的处理
                </Directory>
        </IfDefine>
</IfModule>

     5. 编译出来的cgi文件放到/var/www/cgi-bin目录下就可以运行了,但是一定要保证该文件是可执行的,所以最好修改下的权限

sudo chmod a+x  xxx.cgi

     在配置到这一步了,正常情况下只要重启服务就可以成功的访问了,但是我在访问时,得到的是cgi文件本身,老是提示保存文件,也就是说服务器只是把它当做普通的文件了,而不是cgi脚本。

这有可能没有配置好,但是在第4步中,addhandler cgi-script cgi就已经做好了的。检查了好久,在快要放弃的时候,看到两种命令

sudo a2enmod cgi
sudo service apache2 restart

    然后就好了, 好了,好了,,,,,我也不知道原因。

六、结果展示

     最后来看结果,浏览器输入一个复杂点的公式吧,就这 http://localhost/cgi-bin/mimetex.cgi?x=\frac{-b\pm\sqrt{b^2-4ac}}%20er,如图

技巧,在不知道环境是否配置好不确定的情况下,又不确定自己编译的cgi文件是否没问题的情况,在出错时,很难排错,我觉得可以写个小小的helloworld程序测试下是很有必要的,比如写个perl

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, World.";

将它放到cgi-bin目录下,当然不要忘记了将它的权限修改成777。

 

posted on 2016-06-28 15:57  漩涡鸣人  阅读(1656)  评论(0编辑  收藏  举报