Skip to content

🚀 CJJ WebServer是一个基于Linux平台的高性能Web服务器,采用C++实现,集成了现代Web服务器的核心组件和优化技术。项目遵循POSIX标准,采用事件驱动架构,支持高并发连接处理。

Notifications You must be signed in to change notification settings

cuijunjie18/CJJ_webserver

Repository files navigation

CJJ-WebSever

目录

风格描述
基本组件
环境配置
Get start
docker部署
开发日志

风格描述

目前的c++代码风格是偏向于C语言风格,较多使用POSIX接口

基本组件

  • 线程同步包装类.
  • 数据库连接池.
  • 线程池.
  • 定时器.
  • 日志系统.
  • http请求处理器.
  • 注册登陆主件.
  • 服务器配置类.
  • 单元测试套件.

环境配置

  • 编译工具链安装

    sudo apt-get install cmake
  • 数据库配置验证

    运行服务器前配置webdev

    # 进入root
    mysql
    create database user_info_db; # 创建数据库
    create user 'webdev'@'localhost' identified by   '12345678'; # 创建webdev用户
    grant all privileges on user_info_db.* to   webdev@localhost; # 赋予权限
    flush privileges;
    exit; # 退出
    
    # 进入webdev
    mysql -h localhost -u webdev -p
    use user_info_db;
    
    # 创建user表
    USE user_info_db;
    CREATE TABLE user(
        username char(50) NULL,
        passwd char(50) NULL
    )ENGINE=InnoDB;
    
    # 插入第一个测试数据
    INSERT INTO user(username, passwd) VALUES('manager','1234');

Get start

  • clone本仓库

    git clone --recurse-submodules https://github.com/cuijunjie18/CJJ_webserver.git
  • 编译

    cd CJJ_webserver
    make clean && make build
  • 单元测试编译

    make clean && ENABLE_UT_TEST=ON make build
  • 运行

    ./bin/main

    可以在根目录产生的日志查看服务器运行端口

  • 浏览器访问

    ip:port

开发日志

开发日志

Docker 部署

项目现已支持Docker容器化部署!

  • 使用docker-compose一键启动
# 使用docker-compose一键启动(包含MySQL数据库)
docker-compose up -d

# 访问服务
# 浏览器打开 ip:50001

详细的Docker部署说明请参考:Docker部署指南

压力测试

  • 本地测试

    cd CJJ_webserver
    make webbench
    ./WebBench/webbench # 根据使用说明使用即可
  • 目前的压力测试结果

500压测

后续规划

  • 完善单元测试
  • 完成压力测试
  • 提高webserver的并发度
  • 支持个性化启动服务器
  • 支持docker启动

收获

参考

baseline: https://github.com/qinguoyi/TinyWebServer.git
mysql_cmake: https://github.com/nryeng/hello-mysql-world
GTest: https://zhuanlan.zhihu.com/p/693222066

About

🚀 CJJ WebServer是一个基于Linux平台的高性能Web服务器,采用C++实现,集成了现代Web服务器的核心组件和优化技术。项目遵循POSIX标准,采用事件驱动架构,支持高并发连接处理。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published