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\n\n"); printf("hello world!\n"); return 0; }
需要注意的是第一个的末尾需要输出\n\n
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
(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错误,查看日志,快速定位解决的。通过日志来查找错误,是很好的方法之一。