开源框架
- [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 应用框架
- [jwt-cpp](GitHub - Thalhammer/jwt-cpp:一个仅用于在 c++ 中创建和验证 json Web 令牌的标头库)
- 前端使用flutter 为什么要使用flutter 因为群里没有人愿意写前端,gui学一个就够了
- 数据库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错误
请根据自己的so文件所在位置 增加两个 target_link_libraries
安装完毕请根据框架文档 运行示例
前端ui可能长这样
最后
如果有后续更新就说明还在继续,没有就太监了....