Linux 上的 CGI 脚本:Apache CGI-bin 配置示例Linux 上的 CGI 脚本:Apache CGI-bin 配置示例Linux 上的 CGI 脚本:Apache CGI-bin 配置示例Linux 上的 CGI 脚本:Apache CGI-bin 配置示例
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

Linux 上的 CGI 脚本:Apache CGI-bin 配置示例

通用网关接口 (CGI) 是一项重要技术,充当 Web 客户端和服务器之间的链接,支持在 Web 服务器上执行脚本和程序。尽管较新的技术已在很大程度上取代了 CGI,但它仍然是 Linux 系统管理员通过 Web 浏览器快速进行系统监控和管理任务的有用工具。

在本教程中您将学习:

  • 如何在 Ubuntu Linux 上安装 Apache Web 服务器
  • 如何用各种编程语言创建和执行 CGI 脚本
  • 如何从 Web 浏览器访问和测试 CGI 脚本

有关 LINUX 上的 CGI 和 APACHE 的有趣事实
由于其稳健性和灵活性,Linux 上的 Apache 历来是 CGI 的主要平台之一。尽管新技术不断兴起,但 CGI 仍然适用于需要生成外部程序的任务或以 Web 服务器本身不支持的语言运行脚本时。一个值得注意的方面是 Apache 能够利用 Linux 强大的进程隔离机制安全高效地处理 CGI 脚本。此外,Apache 可以配置为执行几乎任何编程语言的 CGI 脚本,这使其成为动态内容生成的多功能工具。

安装和设置

在开始使用 CGI 脚本之前,必须设置 Apache Web 服务器并准备 CGI 执行环境。该过程涉及几个详细步骤,以确保 Apache 正确配置为执行 CGI 脚本。

  1. 安装 Apache: 首先在 Ubuntu 系统上安装 Apache Web 服务器。打开终端并输入以下命令:

    $ sudo apt update
    $ sudo apt install apache2
  2. 此命令会更新您的软件包列表并安装 Apache 2 Web 服务器。 Apache 预先配置了默认网站和执行 CGI 脚本的能力。

  3. 启用 CGI 模块: Apache 需要启用 CGI 模块才能运行 CGI 脚本。通过执行以下命令启用该模块:

    $ sudo a2enmod cgi
  4. 此命令启用“cgi”模块,这是处理 CGI 脚本执行所必需的。

  5. CGI 的 Apache 配置:要执行用各种语言(例如 Python、Perl 或 Bash)编写的 CGI 脚本,必须将 Apache 配置为正确识别和处理这些文件。修改 Apache 配置文件,该文件通常位于 /etc/apache2/sites-available/ 中或直接位于主配置文件中,具体取决于您的系统设置。添加或确保存在以下配置:

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI
        AddHandler cgi-script .cgi .pl .py .sh .rb .go .js .php
        Require all granted
    </Directory>
  6. 此配置设置一个 URL 路径,映射到存储 CGI 脚本的目录 (ScriptAlias),允许在指定目录中执行 CGI 脚本 (Options +ExecCGI),通知 Apache 具有 .cgi、.pl 等扩展名的文件、.py、.sh、.rb、.go、.js、.php 应被视为 CGI 脚本(AddHandler),并允许所有用户访问 CGI 脚本,可能需要根据安全策略进行限制(要求全部授予)。

  7. 重新启动 Apache 以应用更改:配置设置后,重新启动 Apache 以确保所有更改生效:

    $ sudo systemctl restart apache2
  8. 验证 Apache 安装:要确认 Apache 已成功安装并正在运行,您可以在网络浏览器中访问服务器的 IP 地址。您应该会看到默认的 Apache Ubuntu 默认页面。

创建 CGI 脚本

一旦 Apache 配置为运行 CGI 脚本,您就可以开始使用各种编程语言创建脚本。每个脚本必须是可执行的并且位于指定的 CGI 目录中。请按照以下详细步骤使用 Bash、Python、Perl 和 C/C++ 创建 CGI 脚本。

  1. 创建 Bash CGI 脚本:从输出 HTML 内容的简单 Bash 脚本开始。使用您最喜欢的文本编辑器在 /usr/lib/cgi-bin/ 目录中创建一个名为 example-bash.sh 的文件。

    #!/bin/bash
    echo "Content-type: text/html"
    echo ""
    echo "<html><head><title>CGI Bash Example</title></head><body>"
    echo "<h1>Hello from Bash CGI!</h1>"
    echo "</body></html>"

    保存脚本并使其可执行:

    $ sudo chmod +x /usr/lib/cgi-bin/example-bash.sh
  2. 该脚本发送 HTTP 标头和 HTML 内容作为输出,可在 Web 浏览器中查看。

  3. 创建 Python CGI 脚本:Python 脚本也可以用于 CGI 目的。在 /usr/lib/cgi-bin/ 目录中创建一个名为 example-python.py 的文件。

    #!/usr/bin/python3
    print("Content-type: text/html\n\n")
    print("<html><head><title>CGI Python Example</title></head><body>")
    print("<h1>Hello from Python CGI!</h1>")
    print("</body></html>")

    保存脚本并使其可执行:

    $ sudo chmod +x /usr/lib/cgi-bin/example-python.py
  4. 该脚本执行与 Bash 脚本类似的功能,使用 Python 输出 HTML。

  5. 创建 Perl CGI 脚本:Perl 是另一种流行的 CGI 脚本语言。在 /usr/lib/cgi-bin/ 目录中创建一个名为 example-perl.pl 的文件。

    #!/usr/bin/perl
    print "Content-type: text/html\n\n";
    print "<html><head><title>CGI Perl Example</title></head><body>";
    print "<h1>Hello from Perl CGI!</h1>";
    print "</body></html>";

    保存脚本并使其可执行:

    $ sudo chmod +x /usr/lib/cgi-bin/example-perl.pl
  6. 该 Perl 脚本将 HTML 输出到浏览器,演示了 CGI 脚本如何在 Perl 中运行。

  7. 创建 C CGI 脚本:C 还可以用于 CGI 脚本来处理更复杂的处理任务。首先,确保您的系统上安装了 GCC 编译器:

    $ sudo apt install gcc

    接下来,在 /usr/lib/cgi-bin/ 目录中创建一个名为 example-c.c 的文件:

    #include <stdio.h>
    int main(void) {
        printf("Content-Type: text/html\n\n");
        printf("<html><head><title>CGI C Example</title></head><body>");
        printf("<h1>Hello from C CGI!</h1>");
        printf("</body></html>");
        return 0;
    }

    编译 C 程序以创建适合 CGI 处理的可执行文件:

    $ sudo gcc -o /usr/lib/cgi-bin/example-c /usr/lib/cgi-bin/example-c.c
  8. 此步骤将 C 源代码编译为名为 example-c 的可执行文件,该可执行文件存储在 CGI 目录中,允许 Web 服务器将其作为 CGI 脚本执行。此示例演示如何使用编译为 CGI 脚本的 C 程序输出 HTML 内容。

  9. Ruby CGI 脚本:Ruby 是一种易于使用的脚本语言,非常适合快速脚本。首先,确保 Ruby 已安装:

    $ sudo apt install ruby

    在 /usr/lib/cgi-bin/ 目录中创建一个名为 example-ruby.rb 的文件:

    #!/usr/bin/ruby
    puts "Content-type: text/html\n\n"
    puts "<html><head><title>CGI Ruby Example</title></head><body>"
    puts "<h1>Hello from Ruby CGI!</h1>"
    puts "</body></html>"

    保存此脚本并使其可执行:

    $ sudo chmod +x /usr/lib/cgi-bin/example-ruby.rb
  10. 该脚本输出 HTML 内容,与前面的示例类似,但使用 Ruby。数据保险丝=“22189504506”>

  11. Node.js CGI 脚本: Node.js 通常用于完整的服务器应用程序,但可以通过正确的设置运行 CGI 脚本。首先安装 Node.js:

    $ sudo apt-get install nodejs

    在 /usr/lib/cgi-bin/ 目录中创建一个名为 example-node.js 的文件:

    #!/usr/bin/node
    console.log("Content-type: text/html\n\n");
    console.log("<html><head><title>CGI Node.js Example</title></head><body>");
    console.log("<h1>Hello from Node.js CGI!</h1>");
    console.log("</body></html>");

    使脚本可执行:

    $ sudo chmod +x /usr/lib/cgi-bin/example-node.js
  12. 此示例在 Node.js 环境中使用 JavaScript 来提供 CGI 内容。

  13. PHP CGI 脚本: PHP 也可以用作 CGI 脚本。如果 PHP CLI 尚不可用,请安装:

    $ sudo apt install php-cli

    在 /usr/lib/cgi-bin/ 目录中创建一个名为 example-php.php 的文件:

    #!/usr/bin/php
    <?php
    echo "Content-type: text/html\n\n";
    echo "<html><head><title>CGI PHP Example</title></head><body>";
    echo "<h1>Hello from PHP CGI!</h1>";
    echo "</body></html>";

    将文件更改为可执行文件:

    $ sudo chmod +x /usr/lib/cgi-bin/example-php.php
  14. 当通过 Web 服务器访问时,该 PHP 脚本将生成 HTML 内容。

  15. Go CGI 脚本:Go 以其性能和效率而闻名。安装Go:

    $ sudo apt install golang-go

    在 /usr/lib/cgi-bin/ 目录中创建名为 example-go.go 的 Go 脚本:

    // File: example-go.go
    package main
    import "fmt"
    func main() {
        fmt.Println("Content-type: text/html\n\n")
        fmt.Println("<html><head><title>CGI Go Example</title></head><body>")
        fmt.Println("<h1>Hello from Go CGI!</h1>")
        fmt.Println("</body></html>")
    }

    编译 Go 程序并使其可执行:

    $ sudo go build -o /usr/lib/cgi-bin/example-go /usr/lib/cgi-bin/example-go.go
  16. 该脚本使用 Go 生成用于 CGI 目的的 HTML 输出。

  17. Tcl CGI 脚本: Tcl 是另一种适合 CGI 脚本的脚本语言。安装Tcl:

    $ sudo apt install tcl

    在 /usr/lib/cgi-bin/ 目录中创建名为 example-tcl.tcl 的 Tcl 脚本:

    #!/usr/bin/tclsh
    puts "Content-type: text/html\n\n"
    puts "<html><head><title>CGI Tcl Example</title></head><body>"
    puts "<h1>Hello from Tcl CGI!</h1>"
    puts "</body></html>"

    使脚本可执行:

    $ sudo chmod +x /usr/lib/cgi-bin/example-tcl.tcl
  18. 该脚本演示了使用 Tcl 生成 HTML 内容的 CGI 功能。

测试 CGI 脚本

用各种编程语言创建 CGI 脚本后,测试它们以确保它们正确运行至关重要。这涉及通过 Web 浏览器访问每个脚本以验证它们是否执行并呈现预期输出。

  1. 访问 CGI 脚本:使用 Web 浏览器导航到您创建的每个 CGI 脚本。例如,要访问 Bash CGI 脚本,您可以使用:

    http://cgi-example.local/cgi-bin/example-bash.sh
  2. 同样,将 example-bash.sh 替换为其他脚本的名称,例如 example-python.py、example-perl.pl、example-ruby.rb 等来测试这些脚本。

  3. 查看 CGI 输出:访问脚本的 URL 后,您的 Web 服务器会执行它们并将其输出作为网页发送。检查输出以确保其正确显示并反映脚本的预期内容。这确认了脚本正常运行并且服务器已正确配置为处理 CGI 脚本。

结论

尽管 CGI 可能被视为过时,但它提供了一种将外部编程脚本集成到 Web 环境中以实现有效系统管理的强大方法。通过遵循本指南,您可以为 Linux 服务器上的各种管理和监视任务部署 CGI 脚本。

©2015-2025 艾丽卡 support@alaica.com