搜索

mywebserver使用教程

发表于 2026-10-17 01:30:17 来源:烟消火灭网

mywebserver使用教程

mywebserver是用教我自己折腾出来的一个轻量级HTTP服务器,用C语言写的用教,总共不到两千行代码。用教它跑在Linux上,用教支持静态文件服务和简单的用教CGI。说实话,用教它比不上Nginx,用教但胜在透明——你能看到每一个请求是用教怎么被处理的,这比什么黑盒服务器都强。用教

先讲安装。用教我写了个Makefile,用教你只要在源码目录里敲make,用教然后sudo make install就行。用教编译需要gcc和libpthread,用教别的用教依赖没有。装完以后,二进制文件在/usr/local/bin/mywebserver。配置文件默认在/etc/mywebserver.conf,但你完全可以用-c参数指定别的路径。我第一次跑的时候,忘了改配置里的监听端口,结果和系统自带的Apache撞了,报错Address already in use。这个坑你们别踩,改端口前先netstat -tlnp看一眼。

配置文件是INI格式,长这样:

[server] port = 8080 root = /var/www/html worker_threads = 4 [cgi] enable = true extension = .cgi 

端口不用多说。root是文档根目录,我建议你放到/var/www/html,但你要是想放自己家目录也行,就是路径别带中文。worker_threads控制线程池大小,默认4就够用了。CGI默认关着,你如果只想做个静态文件服务器,就让它一直关着。

启动很简单:sudo mywebserver。它默认以daemon方式跑,日志写到/var/log/mywebserver.log。你要是想在前台调试,加个-d参数,日志直接刷终端。我第一次调试的时候,前台跑着,浏览器访问,终端里能看到每个请求的路径、状态码、响应时间,特别直观。有一次我写了个死循环的CGI,前台模式直接把我终端卡死了,只能kill -9。

静态文件服务没啥好说的,就是文件路径映射。但有个细节:mywebserver默认不列目录,你访问/images/这种路径会返回403。想要目录列表的话,得在配置里加autoindex = true。我个人不太推荐开这个,因为没做美化,列表页丑得一批,就是纯文本文件列表。

CGI这块才是重点。mywebserver用fork+execve实现CGI,环境变量传得挺全。你写个Perl脚本或者Python脚本,只要在文件头加#!/usr/bin/perl,然后给可执行权限,扔到root目录下,文件后缀是.cgi就行。我试过用Python写了个简单的表单处理脚本,POST请求过来的数据能从STDIN读,响应用print输出就行。有一点要注意:CGI脚本的输出得带HTTP头,至少要有Content-Type,不然浏览器会显示乱码。

有个小坑我得提一下。mywebserver的CGI超时时间是30秒,脚本跑超了就自动杀掉,返回504。我之前写了个数据库查询脚本,数据量大了偶尔会超30秒,排查了好久才发现是超时问题。解决办法是调大配置文件里的cgi_timeout,或者优化你的脚本。

性能方面,我用ab工具测过,在普通台式机上,静态文件请求能跑到每秒1.2万次,CGI请求每秒大概800次。比不上Nginx的几万QPS,但作为学习工具和内部小服务,绰绰有余了。

最后说个使用技巧。mywebserver支持热重载配置——你改了配置文件后,不用重启进程,发个SIGHUP信号就行:kill -HUP $(pidof mywebserver)。我经常改端口和root目录,每次都靠这个功能,省事得很。

就这些。代码在GitHub上,MIT协议,随便用。有问题提issue,我一般三天内会看。毕竟是自己写的项目,有人用总归是开心的。

随机为您推荐
友情链接
版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright © 2016 Powered by mywebserver使用教程,烟消火灭网   sitemap

回顶部