• 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{-bpmsqrt{b^2-4ac}}%20er,如图

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

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

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

     
  • 相关阅读:
    485串口接线
    mvc3 升级mvc5
    VB连接ACCESS数据库,使用 LIKE 通配符问题
    VB6 读写西门子PLC
    可用的 .net core 支持 RSA 私钥加密工具类
    解决 Win7 远程桌面 已停止工作的问题
    解决 WinForm 重写 CreateParams 隐藏窗口以后的显示问题
    解决安装 .net framework 发生 extracting files error 问题
    CentOS7 安装配置笔记
    通过特殊处理 Resize 事件解决 WinForm 加载时闪烁问题的一个方法
  • 原文地址:https://www.cnblogs.com/lovemo1314/p/5623762.html
Copyright © 2020-2023  润新知