当前位置: 首页 > 软件库 > 服务器软件 > HTTP服务器 >

cppweb

web 服务器
授权协议 GPL
开发语言 Java C/C++ Python
所属分类 服务器软件、 HTTP服务器
软件类型 开源软件
地区 国产
投 递 者 黄宏毅
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

cppweb 是一个基于C++开发的 WEB 服务器,支持C/C++、Python、Java等多语言混合开发WEB应用。

功能说明

  1. 作者初衷是编写一个web框架支持C++开发cgi程序,于是cppweb诞生了。
  2. 作者希望cppweb是一个大一统的框架,即可用于传统服务端编程也可用于web编程,作者希望http协议能做的更多,框架包括以下两个核心服务:
    webserver:业务服务容器,通过配置也可升级为服务注册中心与定时任务调度中心。
    webrouter:接口路由网关服务,对外提供统一的流量入口,主要负责请求分发以及黑白名称配置。
    
  3. cppweb在读数据采用epoll网络模型,以任务队列的方式处理具体请求,回包也在任务队列中处理,理论上cppweb可支持单机10000个以上的并发连接。
  4. cppweb易拓展,作者开发Java、Python等模块,用于支持Java、Python等语言开发cgi程序,开发者可以直接使用C/C++、Java、Python等语言进行混合开发。
  5. cppweb追求小而巧,对于开源库是拿来即用,源码工程自带zlib、sqlite等源码代码,开发者无需另外下载,再此感谢zlib、sqlite等开源库的作者与开发团队。
  6. 我们对linux与windows下的文件系统、共享内存、信息量等系统接口进行统一的封装,保证一份代码可以再不同的系统中编译运行,您也可以用cppweb基础库进行其他方面的跨平台开发工作。
  7. 基于cppweb的微服务集群框架如下图所示,图中绿色部分包括服务注册中心与业务服务集群由webserver服务构成;图中红色部分包括外部接口网关与内部接口网关由webrouter接口路由网关服务构成。关于cppweb的更新内容可访问https://www.winfengtech.com/cppweb查看。

测试数据

  1. cppweb在普通PC机(4核8G)上至少可支持每秒10000笔请求。
  2. cppweb在1核1G的低配centos系统上至少支持每秒3000笔请求。
  3. 下图是cppweb自身的流量监控数据:

安装编译

下面我们以centos与ubuntu系统的安装编译为例,讲解如何编译运行cppweb开发框架,后续我们将补充windows系统下cppweb的安装说明文档。如果系统没有自带openssl开发客户端,需要自行进行安装,ubuntu下可以执行apt-get install libssl-dev命令进行安装。

  1. 执行以下命令下载源码
    git clone https://gitee.com/xungen/cppweb.git
    
  2. 进入源码目录执行source configure命令,为使环境变量在当前会话中生效必须使用source命令执行configure进行编译配置。命令输出结果如下:
    initialize configure
    ---------------------------------------------
    1.check openssl success
    2.check g++ compiler success
    3.check java compiler success
    4.create product directory success
    5.export environment variable success
    ---------------------------------------------
    >>> initialize build-essential success
    
  3. 在源码目录下执行make命令,正常情况3~5分钟完成编译。在windows系统中你可以用mingw编译器在git bash中进行编译。
  4. 执行webserver -init $SOURCE_HOME/webapp/etc命令初始化配置,命令执行成功后会在$SOURCE_HOME/webapp/etc目录下生成以下文件:
    sqlite.db:基础数据文件
    config.lua:启动配置文件
    dbconfig.lua:数据库配置文件
    mimeconfig.luaMIME类型映射文件
    
  5. 初始化完成后执行strsvr命令便可启动webserver服务。
  6. 用浏览器打开http://localhost:8888地址进入webserver管理中心,如果webserver不是部署在本机需要将地址中的localhost替换为webserver所在服务器的IP地址,登陆用户与初始密码都为system
  • 常见的 CPP 编写的 Web 框架有: Poco:一个开源的 C++ 库,提供了很多用于 Web 开发的功能。 Wt:一个使用 C++ 编写的 Web 应用框架,可以让你快速构建功能丰富的 Web 应用。 CppCMS:一个使用 C++ 编写的 Web 应用框架,支持多种模板引擎和数据库后端。 Webkit:一个开源的浏览器引擎,支持 C++ 和其他语言的开发。 Casablanca:微软开发的

 相关资料
  • 如何包含Eureka服务器 要在项目中包含Eureka服务器,请使用组org.springframework.cloud和工件id spring-cloud-starter-eureka-server的启动器。有关 使用当前的Spring Cloud发布列表设置构建系统的详细信息,请参阅Spring Cloud项目页面。 如何运行Eureka服务器 示例eureka服务器; @SpringBoot

  • hprose 为发布服务提供了多个方法,这些方法可以随意组合,通过这种组合,你所发布的服务将不会局限于某一个函数,某一个方法,某一个对象,而是可以将不同的函数和方法随意重新组合成一个服务。 AddFunction 方法 AddFunction(name string, function interface{}, option ...Options) Service 该方法的用于发布一个函数(命名函

  • Debug 字段 该设置默认值是 false,当发生错误时,只返回错误信息本身。 当该字段设置为 true 时,当发生 panic 时,会将整个 panic 的错误堆栈信息返回给客户端,在用户进行 hprose 服务开发时,该设置可以帮助你快速定位错误位置。 ErrorDelay 字段 该设置为整型值,默认值为 10 秒。 该字段表示在调用执行时,如果发生异常,将延时一段时间后再返回给客户端。 在

  • null null Tomcat服务器正在运行servlet,为mySQL数据库执行一些业务逻辑和hibernate框架。 现在我有点糊涂了。两台服务器都能接收HTTP请求吗?就像servlet从网页接收https请求和我的apache服务器一样? 并且两者都可以连接到数据库--使用php的apache服务器,正如我提到的,同时使用servlet的tomcat?

  • 如何在生产环境中将hazelcast服务器作为linux服务运行? java-server-cp hazelcast。jar com。黑兹卡斯特。例子。StartServer StartServer运行带有输出到std终端的服务器,将其作为linux服务运行并将日志写入文件的最简单方法是什么 我必须将其设置为EC2实例中的服务并将其捆绑。当EC2自动缩放启动实例时,hazelcast服务器将启动并

  • 创建 http 服务器 package main   import ( "net/http"   "github.com/hprose/hprose-golang/rpc" )   func hello(name string) string { return "Hello " + name + "!" }   func main() { service := rp

  • 我正在开发一个基于云的后端HTTP服务,该服务将公开用于与一些on-prem系统的集成。客户机系统是由外部供应商定制的,它们是带有自己数据库的后端系统。这些系统部署在我们客户的公司中,我们无法访问它们,也无法控制它们。我们向供应商提供我们的API规范,他们实现客户机代码。 我的服务与客户交换的数据格式基于XML,并遵循一定的标准。供应商用不同的编程语言实现他们的客户机系统,随着时间的推移,新的供应

  • 问题 你想在网络上提供一个服务器。 解决方案 创建一个基本的 TCP 服务器。 在 Node.js 中 net = require 'net' domain = 'localhost' port = 9001 server = net.createServer (socket) -> console.log "Received connection from #{socket.remo