那么只是看书学习是不够的,还需要学习别人写的优秀代码,汲取优秀的代码逻辑和编程范式,并把他融入到自己的血液中,才能在编程这条路上不断进步。
tinyhttpd 的项目,这个项目想必大家学 C 的应该都听过,这是 J. David Blackstone 在 1999 年写的一个小型 HTTP 服务器的项目,用来学习非常不错,可以帮助我们真正理解服务器程序的本质以及 HTTP 的请求响应过程。大家可以去官网下载这个项目 http://tinyhttpd.sourceforge.net 。
https://github.com/EZLippi/Tinyhttpd 直接 fork 或者 clone。
本地自己搭了一台服务器,用的是 vmvare 和 Centos 7,vmvare 可以随处下载到,Centos 7 我给大家整理了一个下载链接 https://archive.kernel.org/centos-vault/ Centos 直达即可。
https://www.cnblogs.com/tanghaorong/p/13210794.html
https://www.cnblogs.com/DJOSIMON/p/14927176.html
自己搭建完服务器之后,我们就可以尝试着在 Linux 下先把这个 TinyHttpd 源码跑起来再研究其内部逻辑。clone 完整个项目后的项目框架如下,其中的 httpd.c 就是这个 HTTP 服务器的完整代码逻辑。
vi httpd.c 后可以发现,David 已经把 TinyHttpd 在 Linux 下的编译方式给我们写清楚了。
- 注释掉 #include <pthread.h>,如下所示
- 注释掉定义在 newthread 变量的位置,在 main 函数中,如下所示
- 注释掉运行运行 pthread_create( 的位置,如下图所示
- 把注释掉的 accept_request(client_socket 函数放开
- 移除 Makefile 中的 -lsocket 选项,如下图所示
httpd.c文件了。
编译完成后会出现一个 httpd
文件,我们可以通过 ./httpd
来运行 httpd 程序,程序运行完成后会出现端口的绑定消息。
我是在 biying 上找到了一篇解决办法。
Perl 和 Perl-CGI
,没有这俩的话,那你 CGI 就是无法展示。这在 github 上也有详细的说明。
yum install perl
yum install perl-cgi
安装完成后会有 Complete! 的提示,同时我们需要知道你的 perl 安装命令,可以使用
which perl
来查询。
htdocs 中,给 color.cgi 和 index.html 分别赋权限。
chmod -R 777 color.cgi
chmod -R 666 index.html
然后我们进入到 color.cgi 中,把开头中的 perl 安装位置改为你安装 perl 的位置,如下图所示
原文链接:小而美的项目
欢迎大家关注我的个人公众号:程序员cxuan