[4] Nginx 서버 셋업 - Drogon 테스트 API 작성

API를 만들어보자 Drogon 으로 만들거고, 관련 해서 특정 값을 리턴하는 정도로 진행한다


1. Drogon Test Project 설정

- drogon_ctl 이 설치된 곳에서 아래 명령어를 입력한다 ``` drogon_ctl create project testAPI cd testAPI ```


2. 빌드

- 전체 경로의 경우 /root/drogon2/drogon/build/drogon_ctl/testAPI/build 가 된다

``` mkdir build cd build cmake .. make ```


만약 아래 에러 발생 시 환경변수 선언하고 drogon 재설치하는게 마음편하니 재설치하자

``` CMake Error at /usr/share/cmake/Modules/CMakeFindDependencyMacro.cmake:76 (find_package): By not providing "FindJsoncpp.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "Jsoncpp", but CMake did not find one.

Could not find a package configuration file provided by "Jsoncpp" with any of the following names:

JsoncppConfig.cmake jsoncpp-config.cmake

Add the installation prefix of "Jsoncpp" to CMAKE_PREFIX_PATH or set "Jsoncpp_DIR" to a directory containing one of the above files. If "Jsoncpp" provides a separate development package or SDK, be sure it has been installed. Call Stack (most recent call first): /root/drogon/build/CMakeFiles/DrogonConfig.cmake:39 (find_dependency) CMakeLists.txt:31 (find_package)

```

drogon이 보는 경로와 jsoncpp 설치경로의 문제 아래로 진행하자

``` 경로는 jsoncpp가 있는곳으로 해야함

export Jsoncpp_DIR=/usr/local/lib/cmake/jsoncpp

find / -name "jsoncpp-config.cmake" 2>/dev/null find / -name "JsoncppConfig.cmake" 2>/dev/null # 위 둘중에 있는 경로로 지정하면됨

이후 작업 루트에서 재설치 https://warguss.blogspot.com/2024/11/3-nginx-c.html

위 페이지 2. 프레임워크 빌드 참고

```


3. 컨트롤러 생성

``` drogon_ctl create controller testAPIController

아래 경로에 컨트롤러 생긴다 [root@vbox controllers] (master) $ pwd /root/drogon2/drogon/build/drogon_ctl/testAPI/controllers

```

3-1. 소스 작업

``` testAPIController.cc

#include "testAPIController.h"

void testAPIController::handleRequest(const HttpRequestPtr& req, std::function&& callback) { auto resp = HttpResponse::newHttpResponse(); resp->setBody("Drogon Test API"); callback(resp); }


testAPIController.h #pragma once #include

using namespace drogon;

class testAPIController : public HttpController { public: METHOD_LIST_BEGIN // 루트 경로의 GET 요청을 처리 ADD_METHOD_TO(testAPIController::handleRequest, "/myapi", Get); METHOD_LIST_END

void handleRequest(const HttpRequestPtr& req, std::function&& callback); };

```

3-2. 설정 작업

/root/drogon2/drogon/build/drogon_ctl/testAPI/config.json 위 파일 수정한다 아래 형태 참고, 뭐가 많은데 port만 수정하자 (nginx proxy port랑 맞추기위함)

``` "listeners": [ { //address: Ip address,0.0.0.0 by default "address": "0.0.0.0", //port: Port number "port": 8848, //https: If true, use https for security,false by default "https": false } ],

```

3-3. main 수정

설정 load 할수있도록 수정해야한다 /root/drogon2/drogon/build/drogon_ctl/testAPI/main.cc ``` #include int main() { //Set HTTP listener address and port //drogon::app().addListener("0.0.0.0", 5555); //Load config file // drogon::app().loadConfigFile("../config.json");

//drogon::app().loadConfigFile("../config.yaml"); //Run HTTP framework,the method will block in the internal event loop drogon::app().run(); return 0; } ```

3-4. 재빌드

``` cd /root/drogon2/drogon/build/drogon_ctl/testAPI/build make

./testAPI # App 실행

```

4. 테스트

Web 접근 확인

nginx drogon


댓글

이 블로그의 인기 게시물

[로스트아크] 제작 효율 최적화 위한 영지 세팅

[로스트아크] 로스트아크 생활 도구 옵션

한국 핵무장 논의와 방위산업 관련주: 핵무기 개발 과정과 유망 종목 분석