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 install
demo 项目
创建demo项目目录demo_server
新建test_01.cpp
文件,添加以下内容:
#include <stdio.h>
#include <iostream>
#include "workflow/WFHttpServer.h"
int main()
{
WFHttpServer server([](WFHttpTask *task) {
task->get_resp()->append_output_body("<html>Hello World!</html>");
});
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