本节以Linux为例,简介安装过程,其它系统,大同小异;

系统要求

  • Linux内核应不低于2.6.9,64位版本;
  • gcc版本不低于5.4.0;
  • 构建工具是cmake,cmake版本应不低于3.5;
  • git版本管理工具;

依赖库

  • trantor,non-blocking I/O C++网络库,也是作者开发,已作为git仓库submodule,无需提前安装;
  • jsoncpp,json的c++库,版本不低于1.7
  • libuuid,生成uuid的c库;
  • zlib,用于支持压缩传输;
  • OpenSSL,并非必须,如果安装了OpenSSL库,drogon将支持HTTPS,否则drogon只支持HTTP;
  • c-ares, 并非必须,如果安装了ares库,drogon对DNS的支持会具有更好的性能;
  • libbrotli,并非必须,如果安装了brotli库,drogon的HTTP响应会支持brotli压缩;
  • boost,版本不低于1.61,只在C++编译器不支持c++17或STL库不完整支持std::filesystem时才需要安装;
  • postgreSQL, mariadb, sqlite3的客户端开发库,并非必须,安装后drogon会提供对响应的库的访问能力;
  • gtest, 并非必须,如果安装了gtest库,drogon的单元测试代码可以被编译;

系统准备范例

Ubuntu 18.04

环境
  1. sudo apt install git
  2. sudo apt install gcc
  3. sudo apt install g++
  4. sudo apt install cmake
jsoncpp
  1. sudo apt install libjsoncpp-dev
uuid
  1. sudo apt install uuid-dev
OpenSSL
  1. sudo apt install openssl
  2. sudo apt install libssl-dev
zlib
  1. sudo apt install zlib1g-dev

CentOS 7.5

环境
  1. yum install git
  2. yum install gcc
  3. yum install gcc-c++

默认安装的cmake版本太低,使用源码安装

  1. git clone https://github.com/Kitware/CMake
  2. cd CMake/
  3. ./bootstrap && make && make install

升级gcc

  1. yum install centos-release-scl
  2. yum install devtoolset-8
  3. scl enable devtoolset-8 bash

注意: scl enable devtoolset-8 bash命令仅是临时性的使新的gcc生效,直到会话结束。如果想永久使用新版gcc,可以使用命令echo "scl enable devtoolset-8 bash" >> ~/.bash_profile, 系统重新启动后将自动使用新版gcc。

jsoncpp
  1. git clone https://github.com/open-source-parsers/jsoncpp
  2. cd jsoncpp/
  3. mkdir build
  4. cd build
  5. cmake ..
  6. make && make install
uuid
  1. yum install libuuid-devel
OpenSSL
  1. yum install openssl-devel
zlib
  1. yum install zlib-devel

MacOS

环境

MacOS內建都有 更新即可

升級gcc
  1. brew upgrade
jsoncpp
  1. brew install jsoncpp
uuid
  1. brew install ossp-uuid
OpenSSL
  1. brew install openssl
zlib
  1. brew install zlib

Windows

环境

安装Visual Studio 2019专业版,安装选项中至少包括:

  • MSVC C++ 生成工具
  • Windows 10 SDK
  • 用于Windows的C++ CMake工具
  • Google Test测试适配器
包管理器

如果有python环境,可以通过pip安装conan包管理器,当然也可以通过从官网下载connan的安装文件进行安装。

  1. pip install conan

conan包管理器可以提供Drogon项目的所有依赖。

数据库环境

注意:下面的这些库都不是必须的, 用户可以根据实际需求选择安装一个或者多个数据库。

注意:如果将来的开发需要用到数据库,请先安装好数据库环境,再安装drogon, 否则,会出现找不到数据库的问题。

PostgreSQL

PostgreSQL的原生C库libpq是需要安装的,安装方法如下:

  • ubuntu 16: sudo apt-get install postgresql-server-dev-all
  • ubuntu 18: sudo apt-get install postgresql-all
  • centOS 7: yum install postgresql-devel
  • MacOS: brew install postgresql

MySQL

MySQL的原生库不支持异步读写,而通过同步接口+线程池的方式对上层提供异步接口并不是一个好的策略,幸好,MySQL还有一个原开发者社区维护的版本MariaDB,该版本和MySQL的对应版本兼容,并且它的开发库支持异步读写,因此,Drogon的MySQL支持采用MariaDB开发库,你的系统,Mysql和MariaDB最好不要混用,可以统一安装成MariaDB。

安装方法如下:

  • ubuntu: sudo apt install libmariadbclient-dev
  • centOS 7: yum install mariadb-devel
  • MacOS: brew install mariadb

Sqlite3

  • ubuntu: sudo apt-get install libsqlite3-dev
  • centOS: yum install sqlite-devel
  • MacOS: brew install sqlite3

Redis

  • ubuntu: sudo apt-get install libhiredis-dev

注意: 上述有些命令只安装了开发库,如果还要安装server端,请自行google。

安装drogon

假设上述系统环境和库依赖都已经准备好,安装过程是非常简单的;

Linux源码安装

  1. cd $WORK_PATH
  2. git clone https://github.com/drogonframework/drogon
  3. cd drogon
  4. git submodule update --init
  5. mkdir build
  6. cd build
  7. cmake ..
  8. make && sudo make install

默认是编译debug版本,如果想编译release版本,cmake命令要带如下参数:

  1. cmake -DCMAKE_BUILD_TYPE=Release ..

安装结束后,将有如下文件被安装在系统中(CMAKE_INSTALL_PREFIX可以改变安装位置):

  • drogon的头文件被安装到/usr/local/include/drogon中;
  • drogon的库文件libdrogon.a被安装到/usr/local/lib中;
  • drogon的命令行工具drogon_ctl被安装到/usr/local/bin中;
  • trantor的头文件被安装到/usr/local/include/trantor中;
  • trantor的库文件libtrantor.a被安装到/usr/local/lib中;

Windows源码安装

安装了conan包管理器后,可以在Visual Studio 2019的PowellShell中执行

  1. cd $WORK_PATH
  2. git clone https://github.com/drogonframework/drogon
  3. cd drogon
  4. git submodule update --init
  5. mkdir build
  6. cd build
  7. conan install .. -s compiler="Visual Studio" -s compiler.version=16 -s build_type=Debug -g cmake_paths
  8. cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=D:/ -DCMAKE_TOOLCHAIN_FILE=./conan_paths.cmake
  9. cmake --build . --parallel --target install

注意: conan和camke的build type必须保持一致。

安装结束后,将有如下文件被安装在系统中(CMAKE_INSTALL_PREFIX可以改变安装位置):

  • drogon的头文件被安装到D:/include/drogon中;
  • drogon的库文件drogon.dll被安装到D:/bin中;
  • drogon的命令行工具drogon_ctl.exe被安装到D:/bin中;
  • trantor的头文件被安装到D:/include/trantor中;
  • trantor的库文件trantor.dll被安装到D:/bin中;

添加bincmake路径到path环境变量。 D:\bin D:\lib\cmake\Drogon D:\lib\cmake\Trantor

使用vcpkg安装

在windows下最简便的安装方式是使用vcpkg

  1. vcpkg.exe install drogon

或者

  1. vcpkg.exe install drogon:x64-windows

如果你尚未安装vckpg:

  1. 观看安装教程
  2. 假设你尚未安装cmake.exe,make.exevcpkg.exe
  3. 确保你已经安装了windows版的git
  4. 首先,定位到你想安装vcpkg的目录。

    • 此例中,我们将使用C:/Dev目录。
    • 如果还不存在此目录,使用administrator管理员登陆 powershell :

      • cd c:/
      • mkdir Dev
      • cd Dev
      • git clone https://github.com/microsoft/vcpkg
      • cd vcpkg
      • ./bootstrap-vcpkg.bat 安装 vcpkg.exe

        说明: 要升级vcpkg, 只需要输入git pull 确保vcpkg目录可以访问: 将 C:/dev/vpckg 添加到环境变量 path. 重启 powershell

  5. 通过输入vcpkg或者vcpkg.exe检查vcpkg已经正确安装。
  6. 输入指令安装drogon框架:

    • 32-Bit: vcpkg install drogon
    • 64-Bit: vcpkg install drogon:x64-windows

      等待所有依赖安装完毕。

    • 注意:
      • 如果有依赖包没有安装而出现错误, 只需安装这个包,例如:
        • zlib : vcpkg install zlib 或者 vcpkg install zlib:x64-windows for 64-Bit
      • 检查已经正确安装:
        • vcpkg list
      • 需要运行vcpkg install drogon[ctl](32 bit)或者vcpkg install drogon[ctl]:x64-windows(64 bit)以包含drogon_ctl。更多的安装特性选项请运行vcpkg search drogon查看。
  7. 添加 drogon_ctl 命令和依赖到环境变量 path:

    1. C:\Dev\vcpkg\installed\x64-windows\tools\drogon
    1. C:\Dev\vcpkg\installed\x64-windows\bin
    1. C:\Dev\vcpkg\installed\x64-windows\lib
    1. C:\Dev\vcpkg\installed\x64-windows\include
  8. 重启 powershell, 输入:

    • drogon_ctl 或者 drogon_ctl.exe
    • 再输入 enter 回车键
    • 如果出现:
      1. usage: drogon_ctl [-v | --version] [-h | --help] <command> [<args>]
      2. commands list:
      3. create create some source files(Use 'drogon_ctl help create' for more information)
      4. help display this message
      5. press Do stress testing(Use 'drogon_ctl help press' for more information)
      6. version display version of this tool
      说明已经安装好了。
  9. 说明:
    • 你需要熟悉用下面的工具生成CPP库:
      • gcc 或者 g++
      • Microsoft Visual Studio compiler

使用docker镜像

我们也在docker hub上提供了构建好的docker镜像. 在这个docker里Drogon和它所有的依赖都已经安装完毕,用户可以在上面直接开发Drogon应用程序。

使用Nix包

Nix包管理器在版本21.11后提供了Drogon的Nix包。

你可以在你项目的根目录下添加下面的shell.nix使用Drogon包:

  1. { pkgs ? import <nixpkgs> {} }:
  2. pkgs.mkShell {
  3. nativeBuildInputs = with pkgs; [
  4. cmake
  5. ];
  6. buildInputs = with pkgs; [
  7. drogon
  8. ];
  9. }

通过运行nix-shell进入shell。它将安装Drogon, 并使你拥有安装了所有依赖的环境。

Drogon的Nix包有一些选项,你可以按照需要进行配置:

选项 默认值
sqliteSupport true
postgresSupport false
redisSupport false
mysqlSupport false

这里是如何更改选项值的一个例子:

  1. buildInputs = with pkgs; [
  2. (drogon.override {
  3. sqliteSupport = false;
  4. })
  5. ];

如果你尚未安装Nix: 你可以按照NixOS website的说明进行操作.

直接使用drogon源码

当然,你也可以在你的项目中包含drogon源码,比如将drogon放置在你的项目目录的third_party下,那么,你只需要在你项目的cmake文件里添加如下两行:

  1. add_subdirectory(third_party/drogon)
  2. target_link_libraries(${PROJECT_NAME} PRIVATE drogon)

使用CPM.cmake

你可以使用CPM.cmake来包含drogon的源代码:

  1. include(cmake/CPM.cmake)
  2. CPMAddPackage(
  3. NAME drogon
  4. VERSION 1.7.5
  5. GITHUB_REPOSITORY drogonframework/drogon
  6. GIT_TAG v1.7.5
  7. )
  8. target_link_libraries(${PROJECT_NAME} PRIVATE drogon)

03 快速开始