Bootstrap

【git】【网络】【项目配置运行】HTTP 协议的微型简易 Web 服务器---tinyEasyMuduoWebServer

【git】【网络】【项目配置运行】HTTP 协议的微型简易 Web 服务器—tinyEasyMuduoWebServer

csdn项目:
原文链接:https://blog.csdn.net/weixin_45178775/article/details/122257814
github链接:https://github.com/wyewyewye/tinyEasyMuduoWebServer/blob/main/README.md
项目介绍:项目基于C++语言、陈硕老师的muduo网络库、mysql数据库以及jsoncpp,服务器监听两个端口,一个端口用于处理http请求、另一个端口用于处理发送来的json数据。

1 项目环境配置

1.1 必需依赖项

执行以下命令来安装所需的依赖项。

sudo apt-get install libjsoncpp-dev
sudo apt-get install mysql-server mysql-client

1.2 数据库配置

参考 https://www.cnblogs.com/wuhou/archive/2008/09/28/1301071.html
由于mysql和json我电脑已经配过了,此处不多赘述。

1.3 muduo库配置

1.3.1 环境要求

modu库github链接:https://github.com/chenshuo/muduo?tab=readme-ov-file
要求:
Linux内核版本> = 2.6.28。
GCC >= 4.7 或 Clang >= 3.5
Boost(仅适用于 boost::any。)

1.3.2 所需依赖

安装所需的软件包:

sudo apt install g++ cmake make libboost-dev

一次性安装编译 C++ 项目和使用 Boost 库所需的工具和依赖。

1.3.3下载并配置

1. 确保依赖已安装
modu 依赖 libevent,所以先安装 libevent

sudo apt update
sudo apt install libevent-dev -y
sudo apt install -y cmake g++ libboost-all-dev libprotobuf-dev protobuf-compiler

2. git clone

git clone https://github.com/chenshuo/muduo.git

3. 用 cmake 进行编译

cd muduo
mkdir build && cd build
cmake ..
make -j$(nproc)

在这里插入图片描述在这里插入图片描述
4.拷贝编译好的文件到系统目录
如 /usr/local/bin/, /usr/local/lib/

sudo make install

在这里插入图片描述

2 运行和代码修改

2.1 数据库表添加和数据添加

1.运行数据库

mysql -uroot -p
show databases;

在这里插入图片描述
2.创建license_plate数据库(代码里写的这个)

create database license_plate;

在这里插入图片描述
3.创建数据库表cars

USE license_plate;
CREATE TABLE cars (
    id INT AUTO_INCREMENT PRIMARY KEY,
    license_plate VARCHAR(20) NOT NULL,
    time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    ip VARCHAR(20) NOT NULL
);

在这里插入图片描述
4.插入数据

INSERT INTO carss (license_plate, ip) VALUES
('ABC1234', '192.168.1.1'),
('XYZ9876', '192.168.1.2'),
('LMN4567', '192.168.1.3');

在这里插入图片描述

2.2 代码修改为自己主机配置

数据库连接:修改为自己的
在这里插入图片描述
IP和端口:这里要注意端口设置 最好为常见的 Web 端口,比如:
80(HTTP 默认端口)
8080(常见 Web 开发端口)
8888(备用端口)
别的端口要另外配置
在这里插入图片描述

2.编译文件

编译命令:(这个贴出来了需要编译的文件是什么)

g++ httpcontext.cpp httprequest.cpp httpresponse.cpp httpserver.cpp jsonprocess.cpp sqlconnection.cpp main.cpp -o my_server \-lmuduo_net -lmuduo_base -lpthread -ljsoncpp -lmysqlclient

或者这个:

g++ *.cpp -o my_server \-lmuduo_net -lmuduo_base -lpthread -ljsoncpp -lmysqlclient

这些是 链接选项,用于在编译时链接 Muduo、JSON解析库、MySQL客户端库线程库。下面是每个选项的详细解释:


1. -lmuduo_net

  • 作用:链接 Muduo 的网络模块,用于创建 TCP 服务器、TCP 客户端等网络编程功能。
  • 主要包含:
    • muduo/net/TcpServer.h (TCP 服务器)
    • muduo/net/TcpClient.h (TCP 客户端)
    • muduo/net/EventLoop.h (事件循环)

2. -lmuduo_base

  • 作用:链接 Muduo 的基础模块,提供日志、线程、定时器等功能。
  • 主要包含:
    • muduo/base/Logging.h (日志)
    • muduo/base/ThreadPool.h (线程池)
    • muduo/base/TimeStamp.h (时间戳)

3. -lpthread

  • 作用:链接 POSIX 线程库,提供多线程支持。
  • 主要用于:
    • 创建 多线程服务器
    • 使用 Muduo 线程池
    • 处理 并发任务

4. -ljsoncpp

  • 作用:链接 JSON 解析库 jsoncpp,用于解析和生成 JSON 数据。
  • 主要用于:
    • 读取 JSON 配置文件
    • 解析 API 返回的 JSON 数据
    • 生成 JSON 数据发送到前端

5. -lmysqlclient

  • 作用:链接 MySQL 客户端库,用于 C++ 连接 MySQL 数据库。
  • 主要用于:
    • 查询数据库
    • 执行 SQL 语句
    • 存储数据

总结

链接选项作用
-lmuduo_netMuduo 网络库(TCP 服务器、客户端)
-lmuduo_baseMuduo 基础库(日志、线程池、定时器)
-lpthreadPOSIX 线程库(多线程支持)
-ljsoncppJSON 解析库(JSON 读写)
-lmysqlclientMySQL 客户端库(连接数据库)

3.运行结果

在这里插入图片描述
同一台Ubuntu访问:
在这里插入图片描述
同一台公网下另一台电脑的windows:
在这里插入图片描述
大概配置运行是这样子的,我们发现他项目里面的两个.pro文件没有用处,界面直接在main里面写的html,可能是用qt打开时有用吧,但是具体我qt删了没法测试。

这个是项目配置 最近大概看看逻辑 后续可能会写一下实现逻辑

;