TinyHTTPd是一个开源的轻量级HTTP服务器,使用C语言实现,整个代码500多行,10多个函数。

官网:https://tinyhttpd.sourceforge.net/

一、在Debain9下编译运行TinyHTTPd

  1. 打开官网,点击最后的【project page】,并在打开的页面中点击【Download】下载源码。
  2. 下载【libsocket】的源码,下载地址:https://github.com/dermesser/libsocket
  3. 登录Debain9,安装cmake:
    apt-get install cmake
    
  4. 进入libsocket解压后的目录,通过以下命令编译安装libsocket:
    mkdir build
    cd build
    cmake ..
    make
    make install
    
  5. 进入TinyHTTPd解压后的目录,通过修改httpd.c第478行,更改服务启动时绑定的端口号:
    u_short port = 8008;
    
  6. 通过以下命令编译并运行HTTPD:
    make
    ./httpd
    
  7. 通过服务器IP和端口进行访问。

二、测试静态文件

在htdocs目录下新建目录demo,并在demo下创建index.html,输入以下内容:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
  </head>
  <body>
    <p>This is a demo.</p>
  </body>
</html>

启动httpd,页面访问http://{ip}:8008/demo/index.html显示页面。

三、测试Shell CGI

  1. 在demo目录下,创建person.sh.cgi,输入以下内容:
    #!/bin/sh
    echo "Content-type: application/json;charset=utf-8"
    echo ""
    echo "{"
    echo "\"name\":\"$QUERY_STRING\""
    echo "}"
    
  2. 将person.sh.cgi加上可执行权限:
    chmod a+x person.sh.cgi
    
  3. 启动httpd,页面访问http://{ip}:8008/demo/person.sh.cgi?Jack ,页面响应以下JSON数据:
    {
    "name":"Jack"
    }