c++高性能web框架drogon入门教程一,linux环境搭建和demo运行

2020年8月31日16:39:03

c++高性能web框架drogon入门教程一 linux环境搭建和demo运行

c++高性能web框架drogon入门教程二 windows10下安装drogon,配合vscoede搭建开发环境

c++高性能web框架drogon入门教程三 控制器和数据库客户端使用

c++高性能web框架drogon入门教程四 orm使用,csp使用

c++高性能web框架drogon入门教程五 实例小项目,web和api实例代码


drogon是目前在快速迭代性能非常高的一个mvc web框架

官方中文文档https://github.com/an-tao/drogon/wiki/01-概述

个人建议入手这个框架的最好在linux下开发,c++编译复杂的问题,windows上 我vcpkg安装完drogon_ctl 创建完项目但是等编译代码的时候告诉找不到drogon src目录
所以放弃在centos8上安装桌面版本,最后一切顺利,但是等我周末搞完回公司在服务器上搭建的时候又是各种问题,吧小的坑点慢慢填完了,避免其他人再次采坑吧

个人在windows10安装vcpkg drogon_ctl 的一些小坑

1,注意在vcpkg 下载包的时候会出现,很大机会出现下载不了,上了vpM之后,dos还是走不了vpm的,需要设置代理所以更简单的办法就是自己手动下载文件,然后吧文件扔到download文件下
2,如果出现任何错误,请多次尝试重复下载文件,因为可能是某些软件的缺失导致的,我第一次安装的就遇到问题无法解决,然后重新下载文件,然后drogon_ctl 才安装成功
3,注意git拉包很慢,只能慢慢等,不然出现文件缺失,就惨了

官方安装说明

https://github.com/an-tao/drogon/wiki/02-安装

系统要求

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时才需要安装;
postgreSQL, mariadb, sqlite3的客户端开发库,并非必须,安装后drogon会提供对响应的库的访问能力;
gtest, 并非必须,如果安装了gtest库,drogon的单元测试代码可以被编译;

以下时候各个小问题的处理方式

1,不要yum install jsoncpp

使用cmake 安装并在

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64   
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/lib64    
保存,再来一句: source /etc/profile

不然有些情况下,drogon_ctl在创建的新项目的时候会找不到jsoncpp

2,官方文档了漏掉了yum install make
3,git下载代码慢可以使用https://gitclone.com 来加速

但是如果你用的代码库不常用,就请自己慢慢下载,不然临时加速会造成代码不完整,偶尔出现,以防万一

4,cmake安装

wget https://github.com/Kitware/CMake/releases/download/v3.18.2/cmake-3.18.2.tar.gz
tar xzvf cmake-3.3.2.tar.gz
cd cmake-3.3.2
./bootstrap
gmake
make install
不要yum install cmake不然会出现cmake的安装路径不是/usr/bin下面去了 /usr/share。然后出现问题

5,不要随便颠倒安装顺序,不然可能找不到库

但是需要先把这几个包先装了
uuid
yum install libuuid-devel
OpenSSL
yum install openssl-devel
zlib
yum install zlib-devel

6,测试的时候注意关闭防火墙
7,linux chrome root无法启动

Exec=/usr/bin/google-chrome-stable %U -no-sandbox

8.升级gcc

yum install centos-release-scl
yum install devtoolset-8
scl enable devtoolset-8 bash
注意: scl enable devtoolset-8 bash命令仅是临时性的使新的gcc生效,直到会话结束。如果想永久使用新版gcc,
可以使用命令echo "/opt/rh/devtoolset-8/enable" >>/etc/profile.d/devtoolset-8.sh, 系统重新启动后将自动使用新版gcc。
注意:官方文档里是centos7.5,但是8.X不需要,请注意

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Drogon框架可以通过HTTP协议接收文件上传。以下是一个简单的示例代码,演示如何使用Drogon框架接收文件上传: ```cpp #include <drogon/HttpController.h> #include <drogon/HttpAppFramework.h> using namespace drogon; using namespace std; class FileUploadController : public drogon::HttpController<FileUploadController> { public: METHOD_LIST_BEGIN ADD_METHOD_TO(FileUploadController::upload, "/upload", HttpMethod::Post) METHOD_LIST_END void upload(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr&)>&& callback) { auto files = req->getUploadedFiles(); for (const auto& file : files) { LOG_DEBUG << "Uploaded file: " << file.getFileName(); // TODO: 保存上传的文件到服务器 } auto resp = HttpResponse::newHttpResponse(); resp->setContentTypeCode(CT_TEXT_HTML); resp->setBody("<html><body><h1>File uploaded successfully!</h1></body></html>"); callback(resp); } }; int main() { auto app = drogon::HttpAppFramework::instance(); app->addListener("0.0.0.0", 8080); app->registerController<FileUploadController>(); app->run(); return 0; } ``` 在以上示例代码中,我们使用了`getUploadedFiles()`方法获取上传的文件列表,然后可以对每个文件进行处理。注意,Drogon框架默认将上传的文件保存到内存中,如果上传的文件比较大,可能会导致内存占用过高。你可以使用`HttpRequest::getUploadFile(const std::string& filename, const std::string& tmpFilePrefix = "drogon")`方法将上传的文件保存到磁盘中,以避免内存占用过高的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值