c++后台管理系统的一次尝试

1,054 阅读3分钟

开源框架

  1. [Drogon](GitHub - drogonframework/drogon: Drogon: A C++14/17/20 based HTTP web application framework running on Linux/macOS/Unix/Windows),是 an-tao 在 Github 上开源的基于 C++ 14/17 的 Http 应用框架
  2. [jwt-cpp](GitHub - Thalhammer/jwt-cpp:一个仅用于在 c++ 中创建和验证 json Web 令牌的标头库)
  3. 前端使用flutter 为什么要使用flutter 因为群里没有人愿意写前端,gui学一个就够了
  4. 数据库mysql,redis

安装依赖

Drogon依赖安装

  • 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

环境
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
OpenSSL
sudo apt install openssl
sudo apt install libssl-dev
zlib
sudo apt install zlib1g-dev
MySQL

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

ubuntu: sudo apt install libmariadbclient-dev
安装drogon
cd $WORK_PATH
git clone https://github.com/an-tao/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中;
安装 jwt-cpp
git clone https://github.com/Thalhammer/jwt-cpp
cd jwt-cpp
mkdir build
cd build
cmake ..
sudo make && sudo make install

jwt-cpp的运行示例在jwt-cpp/example下,如果报 _HMAC and _EVP_sha256错误

QQ图片20220220223721.png 请根据自己的so文件所在位置 增加两个 target_link_libraries

安装完毕请根据框架文档 运行示例

前端ui可能长这样

019789144BB9AEF5523FEBFC9611ED5B.png

最后

如果有后续更新就说明还在继续,没有就太监了....