SQLite3 数据库学习(六):Qt 嵌入式 Web 服务器详解

参考引用

  • SQLite 权威指南(第二版)
  • SQLite3 入门

1. Apache 搭建 cgi 环境

1.1 什么是 Apache

  • Apache 是世界使用排名第一的 Web 服务器软件
    • 它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用

1.2 具体搭建流程

通浏览器 /Qt 程序访问 apache2 后的 cgi 程序
SQLite3 数据库学习(六):Qt 嵌入式 Web 服务器详解_第1张图片

  • 1、安装 apache2 服务器

    $ sudo apt install apache2
    
  • 2、测试是否安装成功

    • 在浏览器中输入虚拟机 ip 地址,显示下图则表示安装成功
      SQLite3 数据库学习(六):Qt 嵌入式 Web 服务器详解_第2张图片
  • 3、配置 apache2 支持 cgi 程序

    • 进入 /etc/apache2/mods-enabled 目录下,把 cgi 配置文件创建软连接到当前目录下
    $ cd /etc/apache2/mods-enabled
    $ sudo ln -s ../mods-available/cgid.conf cgid.conf
    $ sudo ln -s ../mods-available/cgid.load cgid.load
    $ sudo ln -s ../mods-available/cgi.load cgi.load
    
    • 在 apache2.conf 文件最前面添加 ServerName 127.0.0.1
    $ cd /etc/apache2/
    $ sudo vim apache2.conf 
    
    • 重启 apache
    $ sudo apachectl restart
    
    • 进入 /usr/lib/cgi-bin/ 目录下写 cgi 程序(c/c++ 语言程序)并编译
    $ cd /usr/lib/cgi-bin/
    $ sudo vim main.c
    $ sudo gcc -o main.cgi main.c
    
    // main.c
    #include 
    int main(void) {
        printf("Content-type:text/html;charset=utf-8\n\n");  // 防止乱码
        printf("hello world\n\n");
        printf("hello world\n\n");
        printf("hello world\n\n");
    
        return 0;
    }
    
    • 查看放置 cgi 程序的目录(无需操作,了解即可)
    $ cd /etc/apache2/conf-enabled
    $ vim serve-cgi-bin.conf
    

SQLite3 数据库学习(六):Qt 嵌入式 Web 服务器详解_第3张图片

  • 4、测试
    SQLite3 数据库学习(六):Qt 嵌入式 Web 服务器详解_第4张图片

2. cgi 接收客户端的数据

访问 cgi 程序并且把 number=100 参数传递给 cgi 程序

  • 浏览器 get 请求:实际是 GET,它将数据打包放置在环境变量 QUERY_STRING 中作为 URL 整体的一部分传递给服务器,cgi 通过获取环境变量得到数据
  • 在 cgi 程序中查询环境变量获取数据
    // main.c
    #include 
    #include 
    
    int main(void) {
        printf("Content-type:text/html;charset=utf-8\n\n");
    
        char *str = getenv("QUERY_STRING");  //str = "number=100";
        if (str == NULL) {
            printf("arg error\n\n");
        } else {
            //str = "number=100";
            int data = 0;
            sscanf(str, "number=%d", &data);  // 解析出 100 存储在 data 中
            printf("hello world %d^2=%d\n\n", data, data*data);
        }
    
        return 0;
    }
    

SQLite3 数据库学习(六):Qt 嵌入式 Web 服务器详解_第5张图片

以下内容待更新…


3. Qt 访问 cgi 程序

4. Qt 获取 linux 目录

5. Qt 通过 cgi 登录注册

6. Qt 通过 cgi 访问数据库和 linux 命令

你可能感兴趣的:(SQLite入门学习,数据库,sqlite,学习,apache,c语言,CGI)