C语言之CGI编程(一)

环境是ubuntu系统

1.apache2的安装和启动

安装命令:sudo apt-get install apache2

启动 sudo /etc/init.d/apache2 start " 启动apache服务

最后的参数stop start 和restart分别代表停止,开始和重启apache2服务

测试一下有没有安装成功:在浏览器中输入localhost/index.html如果看到apache的页面,就表示这一步已经通过了,安装完后默认的端口号是80,修改端口号比较简单,

在/etc/apache2 目录下的ports.conf。

2.第一个简单的CGI程序

CGI文件默认是放在/usr/lib/cgi-bin/目录下的,需要修改这个关联目录,可以参考修改Apache2配置文件的相关博客,这里为了简单,

先不介绍,在以后的博客中陆续介绍。如果没有cgi-bin目录就在/usr/lib文件夹下建立一个这样的文件夹,这一步不需要修改apache的任何配置。

可以用vim编辑器建立一个hello.c文件:

#include <stdlib.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
	printf("Content-type:text/html

");
	printf("hello world!
");
	return 0;
}

 需要注意的是第一个的末尾需要输出

gcc -o hello.cgi hello.c

生成hello.cgi可执行文件,用./hello.cgi,如果权限不对,需要用chmod命令修改文件的权限

到这一步,还是不能执行hello.cgi

3.运行第一个用C语言编写的cgi程序

在浏览器中输入localhost/cgi-bin/hello.cgi

如果不能出现hello world!字样,是需要进行一下操作:

参考:http://www.cnblogs.com/hpcpp/p/6995513.html

(1)“ cd /etc/apache2 ” 进入到apache2的目录里输入ls查看
可以看到这两个文件夹 ” mods-enabled “ 和 ” mods-available 
其中 ” mods-enabled “ 为常用的(也就是默认开启的), ” mods-available “为不常用的(也就是默认不开启)


(2)cd /mods-available " 进入该目录,输入 "  ls *cgi*.*  " 查找带cgi的文件,可以找到 " cgid.conf ", "cgid.load ", " cgi.load ", " proxy_fcgi.load ", " proxy_scgi.load "

其中 "proxy_fcgi.load ", " proxy_scgi.load " 我们暂不用,只需要前三个  " cgid.conf ", " cgid.load ", " cgi.load "  就可以了


(3)接下来,使用 " ln -s *.* *.* " 将这三个文件软链接到 " mods-enabled " 目录下

ln -s /etc/apache2/mods-available/cgid.conf /etc/apache2/mods-enabled/cgid.conf

ln -s /etc/apache2/mods-available/cgid.load /etc/apache2/mods-enabled/cgid.load

ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/cgi.load

 (4)在浏览器中输入localhost/cgi-bin/hello.cgi

如果修改了端口的,就在localhost:8080/cgi-bin/hello.cgi这样,加上 :端口号进行访问。

如果发生了错误,要快速定位错误,需要查看日志文件,从而可以快速解决问题。日志文件位于/var/log/apache2/

我第一次就遇到过一次500错误,查看日志,快速定位解决的。通过日志来查找错误,是很好的方法之一。

详情可以参考:http://blog.sina.com.cn/s/blog_59d97a63010181me.html

原文地址:https://www.cnblogs.com/hpcpp/p/7003927.html