workflow是搜狗的一个基于C++的并行计算与异步网络引擎。支撑搜狗几乎所有后端C++在线服务,包括所有搜索服务,云输入法,在线广告等,每日处理超百亿请求。这是一个设计轻盈优雅的企业级程序引擎,可以满足大多数C++后端开发需求。
项目地址:workflow in gitee
本文介绍了在centos7系统中如何通过源码下载和安装workflow,以及利用cmake配置项目环境,跑通demo的过程。
cmake源码安装 必要的软件安装(已有则无需安装)- make/g++
sudo yum -y install gcc automake autoconf libtool make sudo yum install gcc-c++
- cmake
wget https://github.com/Kitware/CMake/releases/download/v3.15.5/cmake-3.15.5.tar.gz tar xvzf cmake-3.15.5.tar.gz cd cmake-3.15.5 ./bootstrap && make -j4 && sudo make install
- openssl
sudo yum install openssl openssl-devel -y
- gtest
git clone https://gitee.com/zhang1021/googletest.git cd googletest mkdir build cd build cmake .. make make install
如果在编译过程中遇到std相关问题,可能是gcc版本过低导致的,可按如下方式解决:
sudo yum install centos-release-scl sudo yum install devtoolset-8-gcc* scl enable devtoolset-8 bash
然后删除CMakeCache.txt文件,重新构建编译即可。
workflow编译安装下载源码
git clone https://gitee.com/sogou/workflow.git
编译安装
cd workflow make cd tutorial make cd .. make installdemo 项目
创建demo项目目录demo_server
新建test_01.cpp文件,添加以下内容:
#include#include #include "workflow/WFHttpServer.h" int main() { WFHttpServer server([](WFHttpTask *task) { task->get_resp()->append_output_body("Hello World!"); }); std::cout << "server start!" << std::endl; if (server.start(8888) == 0) { // start server on port 8888 getchar(); // press "Enter" to end. server.stop(); } return 0; }
新建CMakeLists.txt文件,并添加以下内容:
cmake_minimum_required(VERSION 3.6)
project(demo_server)
#directly link to the libraries.
LINK_LIBRARIES("/usr/local/lib64/libworkflow.so")
if (WIN32)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP /wd4200")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /wd4200 /std:c++14")
else ()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -fPIC -pipe -std=gnu90")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fPIC -pipe -std=c++11 -fno-exceptions -Wno-invalid-offsetof")
endif ()
add_executable(demo_server test_01.cpp)
构建项目并编译:
cmake ./ make
测试运行:
./demo_server


![[c++] 基于workflow开发web服务器(入门) [c++] 基于workflow开发web服务器(入门)](http://www.mshxw.com/aiimages/31/939613.png)
