14 CHN 02 安装
huan edited this page 2023-10-25 11:04:01 +08:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

English | 简体中文

本节以Ubuntu 18.04, CentOS 7.5, MacOS 12.2为例,简介安装过程,其它系统,大同小异;

系统要求

  • Linux内核应不低于2.6.964位版本
  • gcc版本不低于5.4.0, 建议使用11及以上版本
  • 构建工具是cmake,cmake版本应不低于3.5
  • git版本管理工具

依赖库

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

系统准备范例

Ubuntu 18.04

  • 环境

    sudo apt install git
    sudo apt install gcc
    sudo apt install g++
    sudo apt install cmake
    
  • jsoncpp

    sudo apt install libjsoncpp-dev
    
  • uuid

    sudo apt install uuid-dev
    
  • zlib

    sudo apt install zlib1g-dev
    
  • OpenSSL (可选提供HTTPS支持)

    sudo apt install openssl
    sudo apt install libssl-dev
    

CentOS 7.5

  • 环境

    yum install git
    yum install gcc
    yum install gcc-c++
    
    # 默认安装的 cmake 版本太低,使用源码安装
    git clone https://github.com/Kitware/CMake
    cd CMake/
    ./bootstrap && make && make install
    
    # 升级 gcc
    yum install centos-release-scl
    yum install devtoolset-11
    scl enable devtoolset-11 bash
    

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

  • jsoncpp

    git clone https://github.com/open-source-parsers/jsoncpp
    cd jsoncpp/
    mkdir build
    cd build
    cmake ..
    make && make install
    
  • uuid

    yum install libuuid-devel
    
  • zlib

    yum install zlib-devel
    
  • OpenSSL (可选提供HTTPS支持)

    yum install openssl-devel
    

MacOS 12.2

  • 环境

    MacOS 內建都有,更新即可

    # 升級 gcc
    brew upgrade
    
  • jsoncpp

    brew install jsoncpp
    
  • uuid

    brew install ossp-uuid
    
  • zlib

    brew install zlib
    
  • OpenSSL (可选提供HTTPS支持)

    brew install openssl
    

Windows

  • 环境:

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

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

connan包管理器可以提供Drogon项目的所有依赖, 如果有python环境可以通过pip安装connan包管理器。

pip install conan

当然也可以通过从官网下载connan的安装文件进行安装。

创建conanfile.txt文件中并添加如下内容:

  • jsoncpp

    [requires]
    jsoncpp/1.9.4
    
  • uuid

    不需要安装Windows 10 SDK已经包含了uuid库。

  • zlib

    [requires]
    zlib/1.2.11
    
  • OpenSSL (可选提供HTTPS支持)

    [requires]
    openssl/1.1.1t
    

数据库环境 (可选)

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

注意如果将来的开发需要用到数据库请先安装好数据库环境再安装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
    • Windows conanfile: libpq/13.2
  • 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
    • Windows conanfile: libmariadb/3.1.13
  • Sqlite3

    • ubuntu: sudo apt-get install libsqlite3-dev
    • centOS: yum install sqlite-devel
    • MacOS: brew install sqlite3
    • Windows conanfile: sqlite3/3.36.0
  • Redis

    • ubuntu: sudo apt-get install libhiredis-dev
    • centOS: yum install hiredis-devel
    • MacOS: brew install hiredis
    • Windows conanfile: hiredis/1.0.0

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

安装drogon

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

  • Linux源码安装

    cd $WORK_PATH
    git clone https://github.com/drogonframework/drogon
    cd drogon
    git submodule update --init
    mkdir build
    cd build
    cmake ..
    make && sudo make install
    

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

    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 源码安装

    1. 下载Drogon源码

      cd $WORK_PATH
      git clone https://github.com/drogonframework/drogon
      cd drogon
      git submodule update --init
      
    2. 安装依赖库

      mkdir build
      cd build
      conan profile detect --force
      conan install .. -s compiler="msvc" -s compiler.version=193 -s compiler.cppstd=17 -s build_type=Debug  --output-folder . --build=missing
      

      编辑conanfile.txt文件可以添加依赖,修改依赖库的版本。

    3. 编译并安装

      cmake ..  -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE="conan_toolchain.cmake" -DCMAKE_POLICY_DEFAULT_CMP0091=NEW -DCMAKE_INSTALL_PREFIX="D:"
      cmake --build . --parallel --target install
      

    注意: conan和cmake的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
    
  • Windows vcpkg安装

    观看安装教程

    安装 vckpg:

    1. git安装vcpkg

      git clone https://github.com/microsoft/vcpkg
      cd vcpkg
      ./bootstrap-vcpkg.bat
      

      说明: 要升级vcpkg, 只需要输入git pull

    2. vpckg路径添加到环境变量 path.

    3. 终端中输入vcpkg或者vcpkg.exe检查vcpkg已经正确安装。

    正式安装 Drogon:

    1. 输入指令安装drogon框架:

      • 32-Bit: vcpkg install drogon
      • 64-Bit: vcpkg install drogon:x64-windows
      • extra : vcpkg install jsoncpp:x64-windows zlib:x64-windows openssl:x64-windows sqlite3:x64-windows libpq:x64-windows libpqxx:x64-windows drogon[core,ctl,sqlite3,postgres,orm]: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查看。

    2. 添加__drogon_ctl命令和依赖到环境变量path__:

      C:\Dev\vcpkg\installed\x64-windows\tools\drogon
      
      C:\Dev\vcpkg\installed\x64-windows\bin
      
      C:\Dev\vcpkg\installed\x64-windows\lib
      
      C:\Dev\vcpkg\installed\x64-windows\include
      
    3. 重启 powershell, 输入:drogon_ctl或者drogon_ctl.exe, 如果出现:

      usage: drogon_ctl [-v | --version] [-h | --help] <command> [<args>]
      commands list:
      create                  create some source files(Use 'drogon_ctl help create' for more information)
      help                    display this message
      press                   Do stress testing(Use 'drogon_ctl help press' for more information)
      version                 display version of this tool
      

      说明已经安装好了。

说明: 你需要熟悉用这些生成CPP库的工具: gcc或者g++(msys2, mingw-w64, tdm-gcc)或Microsoft Visual Studio compiler。

请考虑使用**make.exe/nmake.exe/ninja.exe**来进行构建,因为它们的配置和行为和 Linux上的make一致 如果使用Linux/Windows混合开发再发布到Linux上在进行系统切换时可以减少错误。

  • 使用docker镜像

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

  • 使用Nix包

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

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

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

    { pkgs ? import <nixpkgs> {} }:
    pkgs.mkShell {
      nativeBuildInputs = with pkgs; [
        cmake
      ];
    
      buildInputs = with pkgs; [
        drogon
      ];
    }
    

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

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

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

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

      buildInputs = with pkgs; [
        (drogon.override {
          sqliteSupport = false;
        })
      ];
    
  • 使用CPM.cmake

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

    include(cmake/CPM.cmake)
    
    CPMAddPackage(
        NAME drogon
        VERSION 1.7.5
        GITHUB_REPOSITORY drogonframework/drogon
        GIT_TAG v1.7.5
    )
    
    target_link_libraries(${PROJECT_NAME} PRIVATE drogon)
    
  • 直接包含drogon源码

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

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

03 快速开始