一 CGI程序的工作方式
在浏览器向Web服务器请求一个后缀是cgi的URL或者提交表单的时候,Web服务器会把浏览器传过来的数据传给CGI程序,CGI程序通过标准输入来接收这些数据。CGI程序处理完数据后,通过标准输出将结果发往Web服务器,Web服务器再将这些信息发送给浏览器。
二 架设Web服务器Apache
1 用rpm来查看Apache是否安装
[root@localhost test]# rpm -qa|grep httpd
没有结果说明没有安装Apache
2 安装Apache
[root@localhost test]# yum -y install httpd
[root@localhost yum.repos.d]# rpm -qa|grep httpd
httpd-tools-2.4.6-88.el7.centos.x86_64
httpd-2.4.6-88.el7.centos.x86_64
3 检查httpd是否运行
[root@localhost yum.repos.d]# pgrep -l httpd
没有结果说明没有运行Apache
4 启动Apache
[root@localhost yum.repos.d]# service httpd start
Redirecting to /bin/systemctl start httpd.service
[root@localhost yum.repos.d]# pgrep -l httpd
1173 httpd
1174 httpd
1175 httpd
1176 httpd
1177 httpd
1178 httpd
5 测试安装是否成功
浏览器输入:http://192.168.0.110/
出现下面页面说明Apache正常运行。
6 修改配置文件
<IfModule alias_module>
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
<IfModule mime_module>
......
AddHandler cgi-script .cgi
......
</IfModule>
ScriptAlias:cgi-bin路径就是默认寻找CGI程序的地方,Apache会到这个路径下去找CGI程序并执行。
AddHandler:该指令告诉Apache,CGI程序会有哪些后缀。
7 重启Apache
service httpd restart
三 第1个C++开发的web程序
1 代码
#include <stdio.h>
int main()
{
printf("Content-Type: text/html\n\n");
printf("Hello cgi!\n");
return 0;
}
2 运行
[root@localhost test]# g++ test.cpp -o test
[root@localhost test]# cp test /var/www/cgi-bin/test.cgi
浏览器输入:http://192.168.0.110/cgi-bin/test.cgi
四 第2个C++开发的web程序
1 代码
#include <iostream>
using namespace std;
int main()
{
cout << "Content-Type: text/html\n\n";
cout << "<html>\n";
cout << "<head>\n";
cout << "<title>Hello World - First CGI Program</title>\n";
cout << "</head>\n";
cout << "<body>\n";
cout << "<h2>Hello World! This is my first CGI program</h2>\n";
cout << "</body>\n";
cout << "</html>\n";
return 0;
}
2 运行
[root@localhost test]# g++ test.cpp -o test
[root@localhost test]# cp test /var/www/cgi-bin/test1.cgi
浏览器输入:http://192.168.0.110/cgi-bin/test1.cgi