在CentOS中使用Crow-基于C++的Web服务

  • 前言
  • 目录
  • 1.搭建C++开发环境
  • 2.安装安装crow所需依赖
  • 3.测试
  • 参考

前言

crow是一个基于C++的web微服务框架,在使用上和python中的flask框架类似,利用它我们可以设计RESTful Api。使用crow需要在CentOS中搭建C++开发环境,安装所需依赖。

目录

  1. 搭建C++开发环境
  2. 安装crow所需依赖
  3. 测试

1.搭建C++开发环境

安装以下工具

yum -y install gcc
yum -y install gcc-c++
yum -y install gdb
yum -y install git
yum -y install cmake
yum -y install vim*

测试hello world程序

hello.cpp:#include <stdio.h>
int main(){printf("hello World\n");return 0;
}

编译运行:

2.安装安装crow所需依赖

项目地址:https://github.com/ipkn/crow
克隆到本地:git clone https://gitclone.com/github.com/ipkn/crow.git
只是为了使用的话,可以直接下载完整的头文件:https://github.com/ipkn/crow/releases/download/v0.1/crow_all.h
crow依赖于boost library,可以进行编译安装,或者选择简单的方法:yum install boost boost-devel,若系统缺少openssl,也需安装yum install openssl openssl-devel

3.测试

首先需要搭建一个C++项目,这样可以使用cmake命令帮助我们编译

mkdir crowTest
cd crowTestmkdir bin
mkdir lib
mkdir src
mkdir include
mkdir build
touch CMakeLists.txt

将前文中下载的 crow_all.h 文件放入include文件夹中,同时在src下新建 hello.cpp 文件,内容参考crow项目中的自带示例:

hello.cpp:#include "crow_all.h"int main()
{crow::SimpleApp app;CROW_ROUTE(app, "/")([](){return "Hello world\n";});app.port(18080).multithreaded().run();
}

CMakeLists.txt 中的内容如下:

project(crowTest)set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
include_directories(${PROJECT_SOURCE_DIR}/include)set(BOOST_ROOT "/usr/include/boost")
set(BOOSTROOT "/usr/include/boost")
include_directories(/usr/include)
link_directories(/usr/lib)FIND_PACKAGE(Threads REQUIRED)
SET(Boost_USE_MULTITHREADED ON)
find_package(Boost REQUIRED COMPONENTS system)add_executable(crowTest src/hello.cpp)
target_link_libraries(crowTest boost_thread boost_system ${CMAKE_THREAD_LIBS_INIT})

1-4行设置项目相关信息,接下来设置boost相关信息,需要根据boost的安装位置来设置

完成后进行编译:

cd buildcmake ..
make

编译成功后进入项目的bin目录下,启动:

正式环境下我们需要使用nohup在后台运行,这里是为了方便测试,我们可以在另一个会话中进行测试:

测试成功

对于已有程序,可以结合crow,对外提供服务。

参考

CentOS搭建C++开发环境
centos 安装vim
Linux安装openssl
搭建C++微服务 crow
Linux下使用cake构建c++项目

【在CentOS中使用Crow-基于C++的Web服务】相关推荐

  1. 基于 REST 的 Web 服务:基础

    from: https://www.ibm.com/developerworks/cn/webservices/ws-restful/ 基础 REST 定义了一组体系架构原则,您可以根据这些原则设计以 ...

  2. 【scrapy、flask】如何在社区版 PyCharm 中调试 scrapy爬虫和 flask web 服务

    软件版本 PyCharm 2020.2 (Community Edition) ,此为官网上的免费社区版 Windows 10 操作系统 调试 scrapy 爬虫 编写 scrapy 爬虫启动的入口文 ...

  3. 在centos 下安装配置基于gitosis 的git 服务

    前言 这里我用的系统是centos 6.2, 在服务器上的准备工作(服务器IP为10.0.2.8 ): 1.安装 openssh服务器与客户端工具 [plain] view plaincopy $ s ...

  4. 实践 | Centos 7搭建LVS+Keepalived高可用Web服务群集群

    LVS + Keepalived 高可用集群 Keepalived的设计目标是构建高可用的LVS负载均衡的集群,可以调用ipvsadm工具创建虚拟机,不仅仅用作双机热备,还可以使用keepalived ...

  5. 在ubuntu 下安装基于 Tomcat6的web服务

    安装 ubuntu 6.0 server 版本,安装成功如下 配置IP地址 修改/etc/network/interfaces 文件内容如下 auto lo iface lo inet loopbac ...

  6. php intval0.57100,应用NuSoap构建新型的基于PHP的Web服务

    一个例子便能说明一切,让我们先看一个例子 为了说明如何应用nusoap和php来构建web services,我们将举一个简单的例子.这个例子应用程序由一个php web services的服务器端和 ...

  7. 在ASP.NET AJAX 1.0框架中访问Web服务

    一. 简介     如今,微软最新推出的AJAX框架为ASP.NET AJAX 1.0(下载地址为[url]http://ajax.asp.net/downloads/default.aspx[/ur ...

  8. 基于OWL-S的Web服务质量本体的描述模式的设计(转)

    1 语义Web服务的描述语言OWL-S Web服务的发现,自动组合和互操作,都需要对服务进行一定的语义描述,基于WSDL的Web服务描述语言主要集中于数据交换和服务发布的语法标准,计算机缺乏对服务描述 ...

  9. IBM Lotus Domino 7 中的实用 Web 服务,第 1 部分: 什么是 Web 服务以及它们为何如此重要

    Julian Robichaux, 开发人员, 独立顾问 Julian Robichaux 是专门研究 IBM Lotus Notes 和 Java 开发的软件开发人员和专业程序员.他擅长于各种与开发 ...

最新文章

  1. 乱思。。。。。。。、、、、、
  2. !--处理:借款冲销不自动冲减预算--
  3. switch判断条件
  4. flyme禁止系统更新_魅族Flyme更新8.1.2.3A:重要系统更新!
  5. 医院(jzoj 1611)
  6. 算法高级(33)-拓扑排序-maven依赖关系的确定
  7. (二)javascript中int和string转换
  8. java 传绝对路径无效_又传噩耗!知名主持人小济南因突发肺栓塞不幸去世,享年36岁...
  9. 【重点】剑指offer——面试题27:二叉搜索树与双向链表
  10. Leetcode 200.岛屿数量
  11. 开机时出现Windows will now check the disk怎么办
  12. 最新常用会计科目表及详细解释
  13. 量子计算与通讯的基本原理(量子纠缠)
  14. H3C ipsec psk aggressive mode配置
  15. python地图可视化前端页面展示_利用pyecharts实现地图可视化的例子
  16. 深入 WEP和 WPA密码原理 1
  17. 关于Linux系统之VM安装配置
  18. 究竟什么是图数据库,它有哪些应用场景?
  19. 翻译Beginning iOS 7 Development中文版
  20. 如何完成微信小程序的登录功能

热门文章

  1. 职称计算机考试输入破折号,2015职称计算机考试Dreamweaver考前测试题及答案
  2. Word格式之参考文献交叉引用
  3. 浏览器相关及知识积累
  4. 动态生成多条插入语句 存入文本文档中
  5. 【钉钉-场景化能力包】钉钉群机器人助力工单管理
  6. 图片突出显示(图片高亮显示)-jQuery实现-案例
  7. 04_dubbo_ioc
  8. 基于C++的俄罗斯方块游戏的开发与设计
  9. python数据分析基础试题_Python数据分析基础知识
  10. js使用rgb和argb