配置Apache支持CGI

  • A+
所属分类:菜鸟笔记

尝试让apache运行cgi程序
环境ubuntu 18.04

参考链接: https://www.cnblogs.com/pengdonglin137/articles/6830091.html

安装apache2

apt install apache2
* 如果之前装了apache需要完全卸载干净 *

修改配置文件

  • Apache的配置文件位于/etc/apahce2
  • 其中./apache2.conf是主配置文件,其中Include了其它几个配置文件
    > 注意很多配置文件目录分为xxx-enablexxx-available,前者目录下都是指向后者的软连接,便于运维而已。

./apache2.conf

一般而言没啥可改的,可以看看里面Include了哪些配置文件

./ports.conf

  • 监听端口号,注意需要和后续配置的内容吻合

例子:

Listen 8080

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

./conf-available/serve-cgi-bin.conf

  • 这步主要目的是指明cgi文件的目录,按照约定俗成一般是/var/www/cgi-bin
  • 首先mkdir创建这个目录,然后把提前准备好的CGI程序改名为index.cgi放进去,完整路径就是/var/www/cgi-bin/index.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
                </Directory>
        </IfDefine>
</IfModule>

这个配置文件指明了所有对/cgi-bin/虚拟路径的访问都将被映射到/var/www/cgi-bin/。比如http://hostname:port/ 和 http://hostname:port/cgi-bin/index.cgi 都是一个效果。知道原理即可,实际环境需要根据具体需求来设置。

./mods-available/cgi*

主要涉及以下三个文件:
- ./mods-available/cgid.conf
- ./mods-available/cgid.load
- ./mods-available/cgi.load
这三个中只要修改./mods-available/cgi.load,目的是指明几种cgi文件后缀,可以是shell脚本,python脚本或者c/c++程序。理论上而言只要是有标准输入输出就行。

如下:

LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so
AddHandler cgi-script .cgi .pl .py .pyc .sh

修改完后要做软连接到./mods-enable,我也没注意是不是默认没有软连接,但是做一下总无妨:

ln -s /etc/apache2/mods-available/cgid.conf /etc/apache2/mods-enabled/cgid.conf
ln -s /etc/apache2/mods-available/cgid.load /etc/apache2/mods-enabled/cgid.load
ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/cgi.load

./sites-available/000-default.conf

  • 这步比较简单主要是配置默认站点的相关信息
  • 端口(要和之前设置的监听端口一样)
  • ServerName(按照实际需要设置,默认是注释掉的)

例如:

<VirtualHost *:8080>
        ServerName arm.eqqie.cn

        ServerAdmin root@arm.eqqie.cn
        DocumentRoot /var/www/cgi-bin

        ErrorLog {APACHE_LOG_DIR}/error.log
        CustomLog{APACHE_LOG_DIR}/access.log combined

        ErrorLog {APACHE_LOG_DIR}/error.log
        CustomLog{APACHE_LOG_DIR}/access.log combined
</VirtualHost>
  • 这里省略了部分注释内容,有需要的可以自行配置 *

重启服务

/etc/init.d/apache2 restart/etc/init.d/apache2ctl restart
用其他方式启动容易报错

检查效果

直接访问

eqqie

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

    • gpwxvpeod gpwxvpeod 0

      配置Apache支持CGI | 赤道企鹅的博客
      [url=http://www.g79kc972xzo8084s225homltbh39eh10s.org/]ugpwxvpeod[/url]
      gpwxvpeod http://www.g79kc972xzo8084s225homltbh39eh10s.org/
      agpwxvpeod