目录
🎂前言
Github源码
建议跟一遍原书 《Linux高性能服务器编程》 (游双 著)
源码地址👇
qinguoyi/TinyWebServer: :fire: Linux下C++轻量级WebServer服务器 (github.com)
如何跑通 里面👇有点小错误,结合我的博客看吧
c++ 经典服务器开源项目 Tinywebserver的使用与配置(百度智能云服务器安装ubuntu18.04可用公网ip访问)-CSDN博客
另外 3 篇博客
WebServer -- 架构图 && 面试题(上)-CSDN博客
Github 地址(便于检索)
意外之喜
做开源项目,遇到 BUG,先看 issues
项目作者也太好了吧,😃 花了半小时带我解决问题,,
PS:做这个项目前,最好完整看一遍《Linux高性能服务器编程》(游双)
因为 TinyWebServer 这个项目,就是抄的这本书
看完后,自己把架构分析画出来,就差不多了
再看看 Github 里的“庖丁解牛”
最后模仿着实现代码,最后的最后,背webserver八股
步骤
1)《Linux高性能服务器编程》读一遍 + 画架构分析(1~7章速刷,8章开始慢慢读,后面都是项目相关)
2)Github “庖丁解牛” 认真读一遍(我是把庖丁解牛结合Google,GPT搬到了自己的博客)
我的措施是,先写 “庖丁解牛” 的博客,再看《Linux高性能》对应章节,然后补充细节到博客里
3)源码模仿着写一遍
4)背 webserver 八股
5)用 C++11 新特性,独立重写一遍 webserver(还有时间的话)
当然,这就是是个入门的东西,别死磕,不值得
🌼跑通
上面教你如何跑通,测试,运行项目的博客,有点东西没讲清楚,下面结合我自己的过程,补充说明
跑通过程补充
(1)系统环境
(2)克隆源码
建议看完 “(2)克隆源码” 再跟,因为 github.com 的 ip 地址,需要自己去网站查,不要直接跟
先 sudo su 切换 root权限 不要用 sudo,否则有些地方行不通
还是报错 Failed to connect to github.com port 443
所以,还需要到hosts文件增加 github 的 ip 地址
sudo nano /etc/hosts 然后添加下面这2行(然后以后 git clone 直接起飞~)
保存退出
成功👇
如果发现很慢,记得重启网络和电脑(生效)
sudo /etc/init.d/networking restart sudo reboot
依然报错👇
解决方法:
命令行输入 git config --global http.postBuffer 1048576000
再次 git clone,依然报错👇
解决👇
这次又报错 Failed to connect to github.com port 443: 拒绝连接
解决👇
前面犯了个错误,github.com 的 ip 地址不要照搬网上的,因为它会变,得自己去查一下
What Is My IP Address? Free IP Lookup
拉到底下
修改 hosts 文件,保存退出
终于成功了,而且速度也有 500 k 😃
(上述操作完,第一次还是可能 clone 失败,因为里面有内存较大的图片,请多试几次,就会成功)
(3)安装和配置 Mysql
注意,下面 sudo 是不对的,要 sudo su 切 root 权限,否则最后 ./server 报错
(重要的事情说 4 遍)
sudo apt-get install mysql-server
密码我设置123456
👇下面初始化,选 y 时,密码记得也设置成 123456
后面的初始化配置 + 检查mysql状态 + 进入Mysql,没什么好说的,跟着上面的博客就行
(4)写 sql 语句
没学 Mysql 的,可以先去跟 100 个黑马的视频,然后刷掉 《Mysql必知必会》
具体的过程,跟着 Github 里,README 和 博客 都看一下就行👇
qinguoyi/TinyWebServer: :fire: Linux下C++轻量级WebServer服务器 (github.com)
c++ 经典服务器开源项目 Tinywebserver的使用与配置(百度智能云服务器安装ubuntu18.04可用公网ip访问)-CSDN博客
(5)编译 TinyWebServer
根据项目作者所说,不需要到 debian.cnf 去,用户名默认 root,密码就是你自己设置的,比如 123456,数据库就是 yourdb
所以 debian.cnf,不一定对的(但是我会保留下来)(大家可以两种都尝试下)
(反正👇可以
string user = "root"; string passwd = "123456"; string databasename = "yourdb";
debian.cnf 和 main.cpp 中的用户名,密码,数据库要对应(不一定对哦~)
改成
但是最后运行 ./server 时报错: 段错误 (核心已转储)
这个错误有点崩溃,浪费了 4 小时,最后被提醒说,可以到 issues 看看
所以啊,以后得养成看 issues 的习惯
解决过程
解决方案1:失败(loser~)
解决方案2:成功(winner!)
权限问题👇 再次感谢项目作者(ง •_•)ง
sudo su 切 root 权限,,接着对应目录 ./server(没有反应代表正常运行 / 成功)
不行的话,就删了重新拉取
按Github里 README,完美搞定(浏览器输入 localhost:9006)
(6)压力测试
语法
原理
看看参数
先测试百度
再测试TinyWebServer
开1个终端,运行webserver
再开1个,webbench测压
🌼前置知识
要会点C++,要会点Linux,要会点Mysql,要会点TCP/IP(计网 / 网络编程的内容)
(1)
(2)小林coding,可以认真看看,不理解的点就用 GPT,Google 解释下
都是面试常考八股,也有利于对 TinyWebServer 的理解
9.2 I/O 多路复用:select/poll/epoll | 小林coding (xiaolincoding.com)
(3)README
(4)别的做的WebServer详解
从零开始实现C++ TinyWebServer(一)---- 项目总述_tinywebserver项目讲解-CSDN博客