首页 > 系统相关 >C++入门项目:Linux下C++轻量级Web服务器 跑通|运行|测试(小白进)

C++入门项目:Linux下C++轻量级Web服务器 跑通|运行|测试(小白进)

时间:2024-09-05 21:55:30浏览次数:14  
标签:Web clone TinyWebServer C++ mysql 服务器 main 数据库 轻量级

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)

 

 

 

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

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

标签:Web,clone,TinyWebServer,C++,mysql,服务器,main,数据库,轻量级
From: https://blog.csdn.net/weixin_45754224/article/details/141932285

相关文章

  • 【C++初窥门庭】C++入门(二)
    目录一、 引用1.1引用概念6.2引用特性6.3常引用 6.4使用场景6.5传值、传引用效率比较6.6引用和指针的区别二、 内联函数2.1概念2.2特性三、auto关键字(C++11)3.1类型别名思考3.2auto简介3.3auto的使用细则 3.4 auto不能推导的场景 四、基于范......
  • Go - Web Application 8
    Userauthentication  Openupyourhandlers.gofileandaddplaceholdersforthefive newhandlerfunctionsasfollows:func(app*application)userSignup(whttp.ResponseWriter,r*http.Request){fmt.Fprintln(w,"Displayaformforsigningu......
  • c++质因数分解
    质因数分解,最先想到了遍历1-n,找出既是质数也是因数的数。需要用到判断质数函数、while循环,复杂度三次方以上了。#include<iostream>usingnamespacestd;boolzs(intn){ for(inti=2;i<=n/2;i++){ if(n%i==0){ return1; } } return0;}intmai......
  • C++基础知识
    1、基本概念1.1 引用类型(reference)        对一个数据可以使用"引用"(reference)类型,这是C++对C的一个重要扩充,引用是一种新的变量类型,它的作用是为一个变量起一个别名inta;int&b=a;        在声明变量b时变量a的引用后,在它......
  • ctfshow-web入门-信息搜集(web1-web10)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录web1(查看源代码)右击页面查看源代码web2(js前台拦截===无效操作)打开题目地址采用burp抓包并进行重发数据包web3(没思路的时候抓个包看看,可能会有意外收获)打开题目链接查看源码无果采用burp抓包并......
  • SpringBootWeb案例(续)
    书接上回,上篇文章CSDN 复习了部门管理功能的开发。这篇文章来复习员工管理模块功能开发基于以上页面原型,我们可以把员工管理功能分为:分页查询(重点)带条件的分页查询(重点)删除员工新增员工修改员工1分页查询 1.1.基础分页 1.1.1 需求分析之前做的查询功能......
  • C++学习笔记----6、内存管理(二)---- 数组指针的双向性
            你可能已经看到指针与数组之间的一些重叠。自由内存空间分配的数组由其第一个元素的指针进行访问。栈上的数组通过使用数组语法([])或者正常变量声明来访问。你还会看到的是,其重叠不仅如此,指针与数组有更复杂的关系。1、数组退化至指针        自由内......
  • C++入门基础知识50——【关于C++数字】之C++ 数学运算
    成长路上不孤单......
  • 终于使用c++、结构体,函数实现简单数组元素的插入
    includeusingnamespacestd;//定义结构体structMyArray{intarr[100];//数组,假设最大长度为100intn;//数组当前元素数量};//输入函数voidscanf(MyArray&myArray,int&x,int&y){cin>>myArray.n;for(inti=0;i<myArray.n;i++){cin>>my......
  • Go - Web Application 7
    Thehttp.ServerstructAlthoughhttp.ListenAndServe()isveryusefulinshortexamplesandtutorials,inreal-worldapplicationsit’smorecommontomanuallycreateanduseahttp.Serverstruct instead.Doingthisopensuptheopportunitytocustomizethe......