当前位置: 首页 > news >正文

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)

 

 

 

 以上就是跑通整个项目的流程 

下面将会详解 整个项目的代码、实现原理

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • android kotlin基础复习 enum
  • 【C++】_list常用方法解析及模拟实现
  • 高级java每日一道面试题-2024年9月05日-数据库篇-谈一下聚集索引和非聚集索引?
  • SQL server 删除重复行
  • 〖open-mmlab: MMDetection〗解析文件:mmdet/models/detectors/two_stage.py
  • 1.9 Crash(三,Ramdump的分析)
  • 如何解决 Windows PowerShell 中 “无法加载文件 pnpm.ps1” 的错误
  • PTR_ERR 系列函数和宏
  • CCF-CSP认证考试准备第十三天:201909-3 字符画(大模拟)
  • 数据结构————单链表
  • Unity3D ARPG(动作角色扮演游戏)设计与实现详解
  • Python 基础之模块与文件操作(Basic Modules and File Operations in Python)
  • HTML、CSS实现树状图
  • ROM RAM
  • 四数相加 II--力扣454
  • 【node学习】协程
  • Android交互
  • Android框架之Volley
  • docker python 配置
  • ES6 ...操作符
  • jquery ajax学习笔记
  • mysql外键的使用
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • SpiderData 2019年2月23日 DApp数据排行榜
  • Vue--数据传输
  • 从0实现一个tiny react(三)生命周期
  • 从零开始在ubuntu上搭建node开发环境
  • 记录:CentOS7.2配置LNMP环境记录
  • 蓝海存储开关机注意事项总结
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 思考 CSS 架构
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 用jquery写贪吃蛇
  • 原生js练习题---第五课
  • 在weex里面使用chart图表
  • 转载:[译] 内容加速黑科技趣谈
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • # centos7下FFmpeg环境部署记录
  • #传输# #传输数据判断#
  • $.proxy和$.extend
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (二)Eureka服务搭建,服务注册,服务发现
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (六)vue-router+UI组件库
  • (三) diretfbrc详解
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)【Hibernate总结系列】使用举例
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)Sublime Text3配置Lua运行环境
  • (转载)Google Chrome调试JS
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .form文件_一篇文章学会文件上传
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复