tinyhttpd – 超轻量型 Http Server
tinyhttpd 全部代码在500 行左右,是一个超轻量型 Http Server,这是是学习C/C++入门非常棒的一个开源项目,可以帮助我们真正理解服务器程序的本质。无论是 unix 的编程,还是 GET/POST 的 Web 处理流程,都清晰了不少。
(水平有限,如有错误之处,欢迎指正)
首先确保你的Linux环境:
如果之前运行过其他类似的工程则无需在配置
sudo apt-get update
sudo apt-get install geany
sudo apt-get install make
sudo apt-get install gcc
此处我认为你已经将Linux环境按照要求配置好了
开始
首先下载工程:https://github.com/EZLippi/Tinyhttpd
下载后得到一个tar.gz结尾的压缩包,解压缩就可以。不过我们还不能直接用还需要对这些文件进行一些修改。
第一步:修改httpd.c文件
首先在这个文件中注释掉 #include <pthread.h>
接着往下,
> //pthread_t newthread; //注释掉该变量 accept_request(client_sock);// 去掉该处注释
> //if (pthread_create(&newthread , NULL, accept_request, client_sock)
> != 0) //perror("pthread_create");// 注释掉这两行
**
第二步:修改htdocs文件中的check.cgi文件和color.cgi文件
**
两个cgi文件都只需要修改第一行的 #!/usr/local/bin/perl -Tw
我们首先要查到虚拟机上的perl位置(用which perl查询)
如图命令可以查询到,然后修改成#!/usr/bin/perl -Tw
第三步、修改htdocs中文件权限
在终端中
cd htdocs//跳转到check.cgi和color.cgi文件夹下
sudo chmod 600 index.html
sudo chmod 764 color.cgi check.cgi
第四步、修改makefile文件
all: httpd client
LIBS = -lpthread
httpd: httpd.c
gcc -g -W -Wall -pthread $(LIBS) -o $@ $<
client: simpleclient.c
gcc -W -Wall -o $@ $<
clean:
rm httpd
编译
而后在tinyhttpd目录下直接make
如果出现make: Nothing to be done for `all’
则make clean 而后再次make
运行 ./httpd
运行之后会出现一串数字4000,复制这串数字在浏览器中输入127.0.0.1:4000