C++入门项目:Linux下C++轻量级Web服务器 跑通|运行|测试(小白进)
TinyWebServer是一个开源的项目,适合小白入门C++网络编程,注意该项目是在linux系统下。
Linux下C++轻量级Web服务器,助力初学者快速实践网络编程,搭建属于自己的服务器.
- 使用 线程池 + 非阻塞socket + epoll(ET和LT均实现) + 事件处理(Reactor和Proactor均实现) 的并发模型
- 使用状态机解析HTTP请求报文,支持解析GET和POST请求
- 访问服务器数据库实现web端用户注册、登录功能,可以请求服务器图片和视频文件
- 实现同步/异步日志系统,记录服务器运行状态
- 经Webbench压力测试可以实现上万的并发连接数据交换
本文参照README(TinyWebServer::fire: Linux下C++轻量级WebServer服务器 - GitCode)、网上博文(c++ 经典服务器开源项目 Tinywebserver的使用与配置(百度智能云服务器安装ubuntu18.04可用公网ip访问)-CSDN博客,WebServer 跑通/运行/测试(详解版)_webserver测试-CSDN博客),结合自己的实现过程,进行详细的梳理,适合小白看。
1、 配置环境
检查是否有git,还有g++编译器
git --version
g++ --version
2、克隆源码
先给出clone命令,下面讲怎么clone
sudo git clone https://gitcode.com/gh_mirrors/ti/TinyWebServer.git
在克隆的时候输入要clone项目的连接,连接在官网上找 我用的是镜像地址
下面的地址是GitHub官网
链接:GitHub - qinguoyi/TinyWebServer: :fire: Linux下C++轻量级WebServer服务器
进入项目主页,点击clone -> 复制链接 ->粘贴到控制终端
github上也是一样的
安装MYSQL,安装好还需要设置MYSQL密码 我的电脑里原本就有mysql 所以就没有这一步
sudo apt-get mysql-server
进去mysql
sudo mysql -uroot -p
创建一个hx数据库 -> 选择创建的数据库hx -> 创建表user -> 添加用户名字和密码等数据
项目作者给了MYSQL的语句,可以在README看
// 建立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');
创建完毕,可以查看你建的数据库
show tables;
select *from user;
3、编译tinywebserver
首先需要确认main.cpp里的数据库和你mysql数据库配置相同。
查看数据库名称和密码
cd /etc/mysql
sudo vim debian.cnf
输入以上命令,就会出现一下页面
找到clone 下来的TinyWebServer项目 找到main.cpp文件(一般都在主目录下面),然后打开,可以在控制台打开,也可以以文件的方式打开
注意 如果clone的项目文件被锁了 不能进行写操作,这时候需要解锁,使用一下命令
sudo chmod -R 777 TinyWebServer
改了权限之后才能对main.cpp文件进行写操作
然后修改main.cpp文件脚本,使用文本编辑器打开main.cpp 方便修改
最后对应之前数据库的用户名和密码 修改main.cpp中的 数据库信息
修改后 2,编译Tinywebserver(编译运行)
cd Tinywebserver
sh ./build.sh
如果出现以上问题;就需要安装libmysqlclient-dev
pt-get install libmysqlclient-dev
如果安装上面的链接库也出现了问题(没有出问题 就直接跳过这里)
就需要安装libssl-dev
pt-get install libssl-dev
如果还是报错 报错依赖问题 像像下面这种
解决方法就是:使用aptitude软件包管理来安装:
然后再安装 libmysqlclient-dev
安装成功后 输入sh ./build.sh
此时他会创建server文件
最后在命令行输入 ./server
./server
没有退出 就是保持链接的
4、浏览器查看效果
在浏览器搜索框 输入ip:9006就可以进行登录注册操作了(输入localhost:9006)
以上就是跑通整个项目的流程
下面将会详解 整个项目的代码、实现原理