系统:Ubuntu20.04
前提:由于最近得一个项目需要使用Perl来解析网站里的一些cgi文件。所以需要开启Apache2对Perl的引用
修改/etc/apache2/sites-available/000-default.conf,删掉cgi的注释#
1
Include conf-available/serve-cgi-bin.conf
修改网站的配置文件 xx.conf 在VirtualHost下添加以下内容
1
2
3
4
5
6
7ScriptAlias /cgi-bin/ /var/www/xxx/ #这里是重点
<Directory "/var/www/xxx">
Options Indexes FollowSymLinks Includes ExecCGI #这里是重点
AllowOverride All
AddType text/html .shtml .html .htm
AddOutputFilter INCLUDES .shtml .html .htm
</Directory>修改
/etc/apache2/conf-available/serve-cgi-bin.conf
1
2
3
4
5
6
7
8<IfDefine ENABLE_USR_LIB_CGI_BIN>
ScriptAlias /cgi-bin/ /var/www/xxx/ #这里是重点,修改自己的项目目录
<Directory "/var/www/cfc_old">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Require all granted #这里是重点
</Directory>
</IfDefine>链接/etc/apache2/mods-available/cgi.load到 mods-enabled
1
ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/cgi.load
修改/etc/apache2/mods-available/mime.conf,添加
1
AddHandler cgi-script .cgi .pl .sh .py .php
重启Apache服务,即可。
提供一个测试代码
1 |
|
多数CGI的错误不外乎
- 使用了windows的换行,文件却在linux下执行,解决方法,就是直接将文件转成LF格式即可。编辑器都有
- cgi代码太老。 解决方法,去/var/log/apache2/error.log中去查找错误信息。
- defined(%hash),由于不使用了,直接删掉!!