linux迷你web服务器(的Linux轻量级Web服务器)
《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个开源的C Web 服务器——TinyWebServer。
TinyWebServer是一个开源的C 轻量级Web服务器,该项目非常适合初学者快速实践网路编程,搭建属于自己的服务器。
特性- 使用 线程池 非阻塞socket epoll(ET和LT均实现) 事件处理(Reactor和模拟Proactor均实现) 的并发模型
- 使用状态机解析HTTP请求报文,支持解析GET和POST请求
- 访问服务器数据库实现web端用户注册、登录功能,可以请求服务器图片和视频文件
- 实现同步/异步日志系统,记录服务器的运行状态
- 经Webbench压力测试可以实现上万的并发连接数据交换
Demo演示
注册演示
登录演示
请求图片文件演示(6M)
请求视频文件演示(39M)
压力测试
在关闭日志后,使用Webbench对服务器进行压力测试,对listenfd和connfd分别采用ET和LT模式,均可实现上万的并发连接,下面列出的是两者组合后的测试结果。
- 并发连接总数:10500
- 访问服务器时间:5s
- 所有访问均成功
Proactor,LT LT,93251 QPS
Proactor,LT ET,97459 QPS
Proactor,ET LT,80498 QPS
Proactor,ET ET,92167 QPS
Reactor,LT ET,69175 QPS
注意: 使用本项目的webbench进行压测时,若报错显示webbench命令找不到,将可执行文件webbench删除后,重新编译即可。
源码下载目前有两个版本,版本间的代码结构有较大改动,文档和代码运行方法也不一致。重构版本更简洁,原始版本(raw_version)更大保留游双代码的原汁原味,从原始版本更容易入手。
如果遇到github代码下载失败,或访问太慢,可以从以下链接下载,与Github最新提交同步。
github:https://github.com/qinguoyi/TinyWebServer
重构版本下载地址:https:///share/init?surl=PozKji8Oop-1BYcfixZR0g 提取码 : vsqq
快速运行
原始版本(raw_version)下载地址:https:///share/init?surl=asMNDW-zog92DZY1Oa4kaQ 提取码 : 9wye
服务器测试环境
- Ubuntu版本16.04
- MySQL版本5.7.29
浏览器测试环境
- Windows、Linux均可
- Chrome
- FireFox
- 其他浏览器暂无测试
测试前确认已安装MySQL数据库
// 建立yourdb库 create database yourdb; // 创建user表 USE yourdb; CREATE TABLE user( username char(50) NULL, passwd char(50) NULL )ENGINE=InnoDB; // 添加数据 INSERT INTO user(username, passwd) VALUES('name', 'passwd');
修改main.cpp中的数据库初始化信息
//数据库登录名,密码,库名 string user = "root"; string passwd = "root"; string databasename = "yourdb";
build
sh ./build.sh
启动server
./server
浏览器端
ip:9006
—END—
开源协议:Apache2.0
开源地址:https://github.com/qinguoyi/TinyWebServer
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com