글
라벨이 nginx인 게시물 표시
[6] Nginx Server Setup - Implementing Upload/Download + Simple Upload Client
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
With directory listing set up, let's implement file upload/download functionality using Drogon. --- ## 1. Server Function Implementation ### 1-1. Implementing Drogon Controller Register the Drogon Controller. (This step is required for it to be recognized during the build.) ``` cd /root/drogon2/drogon/build/drogon_ctl drogon_ctl create controller FileController ``` --- ### 1-2. Implement Upload/Download Functionality Source path: `/root/drogon2/drogon/build/drogon_ctl/testAPI/controllers` FileController.h #pragma once #include using namespace drogon; class FileController : public HttpController { public: std::string _storagePath = "/root/storage/"; METHOD_LIST_BEGIN // Handles POST requests for "/upload" ADD_METHOD_TO(FileController::handleUpload, "/upload", Post); // Handles GET requests for "/download/{filename}" ADD_METHOD_TO(FileController::handleDownload, "/download/{1}...
[5] Nginx Server Setup - Folder Listing on Web
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
Before implementing file upload/download functionality, let's first create a local storage directory and make it accessible via the web. --- ## 1. Create Storage and Set Permissions - Create storage directory ``` mkdir /root/storage cd /root/storage vi test.txt # Add any content, save, and exit ``` - Grant permissions to the directory for the user running NGINX ``` ps aux | grep nginx ``` --- For example, if the NGINX process runs as "nobody", change the folder's ownership: ``` [root@vbox build] (master) $ ps aux | grep nginx root 52636 0.0 0.0 4544 2412 ? Ss 01:26 0:00 nginx: master process ./nginx root 59772 0.0 0.1 13064 9600 pts/1 T 06:04 0:00 /usr/bin/vim nginx.conf nobody 60676 0.0 0.0 13168 5484 ? S 06:23 0:00 nginx: worker process nobody 60677 0.0 0.0 13168 5612 ? S 06:23 0:00 nginx: worker process ``` --- - Change permissions and ownership sudo chmod -...
[3] Nginx Server Setup - Connecting to C++ Web Framework
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
## 0. Researching C++ Web Frameworks To achieve the goal of building a server in C++, I've started by researching suitable C++ web frameworks. According to GPT recommendations, **Drogon** is popular, so I'll proceed with this framework first. --- | Framework | Advantages | Disadvantages | |------------|-------------------------------------------------------------------------------------------|------------------------------------------------------------------| | **Drogon** | Supports modern C++14/17 standards Asynchronous programming and multi-thread support Supports HTTP2 and WebSocket High performance and user-friendly API Active community and support | Initial setup can be complex due to many features | | **Pistache** | Lightweight design enables quick web server implementation Suitable for RESTful API development Simple code an...
[2] Nginx Server Setup - Downloading and Setting Up a Specific Version of Nginx
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
Instead of installing Nginx directly to the system path, this guide explains how to download, build, and set up Nginx manually. --- ## Setup Environment - Red Hat Enterprise Linux release 9.4 (Plow) ## 1. Download and Extract Nginx To download and extract Nginx: ``` wget http://nginx.org/download/nginx-1.21.6.tar.gz tar -xvf nginx-1.21.6.tar.gz ``` To download a different version, simply change the version number in the command and proceed with the steps as outlined. --- ## 2. Install Required Libraries Install essential libraries: ``` sudo yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel ``` ``` Explanation of each library: - gcc: The C compiler required to compile Nginx source code into an executable. - pcre: Provides regular expression handling for Nginx. - pcre-devel: Contains development headers needed when compiling Nginx. - zlib: Enables gzip compression in Nginx. - zlib-devel: Provides zlibs development files needed for compiling. - openssl: N...
[6] Nginx 서버 셋업 - Up/Down 구현 + 간단한 업로드 client
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
리스팅 까지 진행됫고, 업/다운을 Drogon을 통해 구현한다 --- ## 1. 서버 기능 구현 ### 1-1. Drogon Contoller 구현 Drogon Contoller 등록 진행을 한다 ( 아래 작업을 해야 빌드시 인식이 됨 ) ``` cd /root/drogon2/drogon/build/drogon_ctl drogon_ctl create controller FileController ``` --- ### 1-2. 업/다운 구현 소스 위치할 경로 ( /root/drogon2/drogon/build/drogon_ctl/testAPI/controllers ) FileController.h #pragma once #include using namespace drogon; class FileController : public HttpController { public: std:: string _storagePath = "/root/storage/"; METHOD_LIST_BEGIN // "/upload" 경로의 POST 요청 처리 ADD_METHOD_TO(FileController::handleUpload, "/upload", Post); // "/download/{filename}" 경로의 GET 요청 처리 ADD_METHOD_TO(FileController::handleDownload, "/download/{1}", Get); METHOD_LIST_END // 메서드 선언 void handleUpload(const HttpRequestPtr& req, std::function && callback); void handleDownload(const HttpRequestPtr& req, std::function && ca...
[5] Nginx 서버 셋업 - Web에서 서버 폴더 리스팅
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
업/다운로드를 구현 하기 전 우선 장비 local 저장소를 만들고 해당 저장소를 web에서 볼수있게 먼저 정의한다 --- ## 1. 저장소 생성 및 권한 부여 - 저장소 생성 ``` mkdir /root/storage cd /root/storage vi test.txt ( 적당히 아무값 넣고 저장 종료 ) ``` - nginx가 뜬 user권한을 폴더에 부여 ``` ps aux | grep nginx --- # 제 경우는 nobody 이므로 해당 폴더 소유주 변환 [root@vbox build] (master) $ ps aux | grep nginx root 52636 0.0 0.0 4544 2412 ? Ss 01:26 0:00 nginx: master process ./nginx root 59772 0.0 0.1 13064 9600 pts/1 T 06:04 0:00 /usr/bin/vim nginx.conf nobody 60676 0.0 0.0 13168 5484 ? S 06:23 0:00 nginx: worker process nobody 60677 0.0 0.0 13168 5612 ? S 06:23 0:00 nginx: worker process --- # 권한 및 소유주 변환 sudo chmod -R 755 /root/storage sudo chown -R nobody:nobody /root/storage # SELinux 보안 컨텍스트 수정 sudo chcon -R -t httpd_sys_content_t /root/storage ``` 위 작업들을 수행하지 않으면, 403 Fobbiden을 맞게된다 --- ## 2. Nginx 설정 적용 - alias 통해, list api 가 들어오면 /root/storage의 경로를 보여준다 ``` user nobody; worker_proce...
[3] Nginx 서버 셋업 - C++ 웹 프레임워크 연결
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
C++ 서버로 만들어 보는게 목표이기에 프레임워크 서치를 우선 진행 ## 0. C++ 웹 프레임워크 조사 | 프레임워크 | 장점 | 단점 | |------------|------|------| | **Drogon** | - 최신 C++14/17 지원 - 비동기 프로그래밍 및 다중 스레드 지원 - HTTP2, WebSocket 지원 - 높은 성능 및 사용자 친화적 API - 활발한 커뮤니티 및 지원 | - 초기 설정이 복잡할 수 있음 | | **Pistache** | - 경량 설계로 빠른 웹 서버 구현 - RESTful API 개발에 적합 - 간단한 코드와 쉬운 학습 | - 개발 및 업데이트 속도가 느림 - 제한된 기능성 | | **Crow** | - Flask와 유사한 직관적인 사용법 - JSON 지원 및 라우팅 기능 포함 - 경량 설계 | - 기능이 제한적이며 대규모 애플리케이션에는 부적합 - 유지보수가 부족할 수 있음 | | **CppCMS** | - 고성능 웹 애플리케이션 구축 가능 - 세션 관리 및 국제화 지원 | - 설정이 복잡하고 높은 학습 곡선 - 문서가 부족하고 사용법이 어렵다 | | **Restbed** | - RESTful API 개발에 적합 - 비동기 및 확장 가능한 설계 | - 제한된 기능으로 대규모 프로젝트에는 부적합 - 커뮤니티 지원이 활발하지 않음 | - GPT 피셜 인기 좋은 Drogon으로 우선 진행해보기로한다. --- ## 1. 프레임워크 의존성 설치 ``` sudo yum install -y git cmake gcc-c++ libuuid-devel openssl-devel zlib-devel brotli-devel jsoncpp-devel libuuid libuuid-devel ``` jsoncpp-devel 없다면 별개 설치필요 --- ### jsoncpp는 별개 설치 ``` # jsoncpp 소스 코드 다운로드 git clone https://github.com/open-source-parsers/jso...
[2] Nginx 서버 셋업 - 특정버전 nginx 다운로드하여 셋업
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
시스템 경로에 셋업하여 실행하는 법이 있지만, 다운로드 및 빌드하여 셋업하는 방법으로 진행하겠습니다. ## 구축환경 - Red Hat Enterprise Linux release 9.4 (Plow) ## 1. NGINX 다운로드 및 압축 해제 ``` wget http://nginx.org/download/nginx-1.21.6.tar.gz tar -xvf nginx-1.21.6.tar.gz ``` --- ## 2. 필요 Library 설치 ``` sudo yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel ``` - gcc: C 컴파일러로, NGINX 소스 코드를 컴파일하여 실행 가능한 프로그램으로 만드는데 필요합니다. - pcre: Perl Compatible Regular Expressions 라이브러리로, NGINX에서 정규 표현식을 처리할 수 있도록 지원합니다. - pcre-devel: PCRE 라이브러리의 개발 헤더 파일을 포함하며, NGINX를 컴파일할 때 필요합니다. - zlib: 데이터 압축을 위한 라이브러리로, NGINX의 Gzip 압축 기능을 사용하기 위해 필요합니다. - zlib-devel: zlib의 개발 파일을 포함하며, 소스 컴파일 시 필요한 헤더 파일과 라이브러리를 제공합니다. - openssl: SSL/TLS 암호화를 위한 라이브러리로, HTTPS 및 보안 연결을 처리하기 위해 NGINX에 필요합니다. - openssl-devel: OpenSSL 라이브러리의 개발 헤더 파일을 포함하며, NGINX의 SSL/TLS 지원을 컴파일할 때 필요합니다. --- 만약 설치시 아래 에러가 발생한다면 ``` Red Hat Enterprise Linux 9 for x86_64 - BaseOS (RPMs) 0.0 B/s | ...
[1] Nginx 서버 셋업 - Virtualbox 설치 및 Putty 연결
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
테스트용 Linux 셋업을 위해 가상환경 설치 진행 VMWare를 쓸려햇는데 가입이 귀찮게 되어있어 VirtualBox로 선회 ### 셋업 환경 - window10 ### 설치 ## 1. VirtualBox - Download - https://www.virtualbox.org/wiki/Downloads - 위 경로에서 다운로드 진행 ( OS에 맞게 설치, widnows hosts 로 진행 ) --- - 다운로드 이후 설치 진행 --- ## 2. RHEL(RedHat Enterprise Linux) OS 다운로드 CentOS를 주로썼지만 EOL (End of Line) 으로 이제는 RHEL쓰기를 권장 - https://developers.redhat.com/products/rhel/download (24.11.02 기준 9.4 version) - RHEL을 무료로 사용하려면 Individual Developer Subscription에 등록해야 하고 등록 비용은 발생하지 않는다. --- ## 3. VirtualBox - RHEL 가상머신 만들기 1. 머신 > 새로 만들기 ㄴ 저장소 경로 설정 --- 2. VM 비밀번호 셋업 --- 3. 가상머신 리소스 할당 ㄴ 사용 컴퓨터에 따라 동적으로 변함. 저는 4core / 8GB 할당함 (20GB) --- 4. 소프트웨어 확인 (GUI 시스템은 필요없어서 제거) --- 5. 접속 확인 --- ## 4. Putty 연결 아래 사항 확인 ### 4-1.VM 설정에서 확인 사항 ``` 1. VirtualBox를 실행하고 연결할 가상 머신을 선택한 후 설정 2. 네트워크 탭 이동 > 어댑터 1을 NAT로 설정한 후 고급 옵션 3. 포트 포워딩 규칙 설정 이름: 원하는 이름 입력 (예: SSH) 호스트 포트: 9999 (또는 사용하지 않는 포트) 게스트 포트: 22 (기본 SSH 포트, 고정) ex) putty -(9999...
Nginx 멀티 포트 설정 방법: 서버 블록과 가상 호스트 구성 비교 가이드
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
# Nginx 하나의 서버 블록 vs 여러 서버 블록 사용 비교 ## 1. 하나의 서버 블록에서 여러 포트 청취 ``` server { listen 80; # 포트 80 청취 listen 8081; # 포트 8081 청취 server_name example.com; location / { # do something proxy_pass http://localhost:8082; # 요청을 포트 8082로 프록시 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` --- ### 장점 - **설정 간소화**: 하나의 서버 블록 내에서 여러 포트를 관리할 수 있어 설정 파일이 단순해짐. - **공통 설정**: 여러 포트에서 동일한 동작을 해야 할 경우 적합. - **효율성**: 설정 중복이 없어 설정 파일이 짧고 메모리 효율적. ### 단점 - **유연성 부족**: 각 포트에 대해 다른 설정을 적용하기 어려움. - **디버깅 복잡성**: 여러 포트에서 동일한 서버 블록을 사용 시 문제 원인 파악이 어려울 수 있음. --- ## 2. 각각의 서버 블록을 사용하여 포트별 설정 ``` # 포트 80에서 들어오는 요청 처리 server { listen 80; server_name example.com; location / { # do something proxy_pass http://localhost:8082; # 포트 8082로 프록시 proxy_set_header Host $host;...
[Nginx-C++로 서버 구축을 해보자] Nginx-Centos 설치 [2]
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
Nginx 개념에 대해 확인 하였는데, 이번에는 Nginx 설치 및 기본 화면 띄우기 목적으로 진행 하였습니다. 저는 Centos환경에서 했기 때문에 차이가 있을 수 있습니다. 설치를 위해 수행해야할 루틴은 다음과 같습니다. wget http://nginx.org/download/nginx-1.15.7.tar.gz yum install pcre-devel yum install openssl-devel nginx 압축 해제 tar -xvf nginx-1.1.5.7.tar.gz 내부 ./configure --prefix=$원하는 경로 입력 make make install 순차적으로 하나씩 보자면 1. wget http://nginx.org/download/nginx-1.15.7.tar.gz = nginx library 다운로드(원하는 버전으로 골라서 하시면됩니다) 2. yum install pcre-devel (nginx 설치 시 필요한 라이브러리로 선 설치 합니다) 3. yum install openssl-devel (마찬가지입니다.) 4. 다운로드 받은 것 해제합니다. 5. 해제 되면 ./configure 를 실행합니다. (prefix를 통해 원하는 경로로 설정가능합니다) 6. make로 빌드 7. make install로 빌드한것을 configure로 설정한 경로로 셋업 합니다. 그 이후에는 설정 한 경로의 conf/nginx.conf에서 port 확인합니다. (보통 80port로 설정 되있을 텐데, 해제가 필요합니다) 저는 아래와 같이 방화벽 해제 하였습니다. 1. vi /etc/sysconfig/iptables 2. -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT 3. service iptables restart 로...
이 블로그의 인기 게시물
윤석열 계엄령 선포! 방산주 대폭발? 관련주 투자 전략 완벽 분석
## 1. 배경 2024년 12월 3일, 윤석열 대통령이 국가 비상사태를 이유로 계엄령을 선포하였습니다. 계엄령은 전시나 사변 등 국가의 안녕과 공공질서가 심각하게 위협받을 때 대통령이 군사적 권한을 통해 이를 방어하고 유지하기 위해 발효하는 특별한 조치입니다. 이러한 조치는 국내 정치·경제 전반에 큰 영향을 미치며, 특히 주식시장에서는 관련 기업들의 주가 변동이 예상됩니다. 24.12.03 오전 5시 계엄 해제로 아래 관련주 추천 - [윤석열 계엄령 해제! 이재명 관련주 급등? 투자자 필독 전략](https://warguss.blogspot.com/2024/12/yoon-martial-law-lift-lee-jaemyung-stocks.html) --- ## 2. 기업 및 관련주 ### 2-1 식품 관련주 - 계엄령이 선포되면 사회적 불안정성이 증가할 수 있으며, 이에 따라 생필품 및 음식 관련 주식이 단기적으로 강세를 보일 가능성이 있습니다. #### 1. CJ제일제당 (KOSPI: 097950) [시가총액: 약 10조 원] - **주요 산업**: 식품 및 생필품 제조 - **관련주 근거**: 국가적 위기 상황에서 식료품 수요가 증가하며, 즉석밥, 가공식품 등의 판매가 확대될 가능성이 있습니다. - **주가정보**: [네이버 차트](https://finance.naver.com/item/main.nhn?code=097950) #### 2. 오뚜기 (KOSPI: 007310) [시가총액: 약 3조 원] - **주요 산업**: 식품 제조 및 유통 - **관련주 근거**: 라면, 즉석식품 등 비축 가능한 식품 수요가 증가하며, 매출 상승이 기대됩니다. - **주가정보**: [네이버 차트](https://finance.naver.com/item/main.nhn?code=007310) #### 3. 대상 (KOSPI: 001680) [시가총액: 약 2조 원] - **주요 산업**: 식품 제조 및 발효제품 - **관련주 근거**: 계엄...
대통령 퇴진운동 관련주: 방송·통신·촛불수혜주 완벽 분석
--- ## 1. 배경 2024년 12월 3일, 윤석열 대통령이 비상계엄령을 선포했으나, 짧은 시간 내에 이를 해제하면서 정치적 긴장감이 커졌습니다. 이에 따라 대규모 촛불시위와 같은 사회적 움직임이 예상되며, 통신과 관련된 기업 및 촛불 제조와 연관된 산업에 관심이 모이고 있습니다. --- ## 2. 기업 및 관련주 대규모 시위 및 관련 활동으로 인해 통신, 미디어, 그리고 촛불 제조와 관련된 기업들이 단기적인 수혜를 볼 것으로 예상됩니다. ### 2-1. 통신 관련주 #### 1. **KT (030200) [약 12조 원]** - **주요 산업:** 통신 - **관련주 근거:** 시위 생중계 및 대규모 통신 트래픽 증가로 매출 증대 가능성 - **주가정보:** [네이버 차트](https://finance.naver.com/item/main.nhn?code=030200) #### 2. **SK텔레콤 (017670) [약 12조 원]** - **주요 산업:** 통신 - **관련주 근거:** 대규모 데이터 사용 증가로 인한 수익 상승 - **주가정보:** [네이버 차트](https://finance.naver.com/item/main.nhn?code=017670) #### 3. **LG유플러스 (KOSPI, 032640) [약 4.9조 원]** - **주요 산업:** 통신 - **관련주 근거:** 촛불시위로 인한 데이터 및 음성 서비스 사용 증가 예상 - **주가정보:** [네이버 차트](https://finance.naver.com/item/main.nhn?code=032640) --- ### 2-2. 방송 관련주 #### 1. **SBS (034120) [약 2,924억 원]** - **주요 산업:** 방송 및 미디어 콘텐츠 제작 - **관련주 근거:** 시위 관련 특집 방송 및 실시간 보도에 따른 광고 수익 증가 - **주가정보:** [네이버 차트](https://finance.naver.com/item/main.nhn?code...
키움 OPEN API MFC 개발 (1)
* 키움 API 개발 - visual studio 2019 , MFC * Visual Studio Set - 새 프로젝트 만들기 / MFC 검색 - 다음 이후, MFC 설정에서 어플리케이션 종류 변경 (대화 상자 기반) * 기본 적용 Flow ( https://www.kiwoom.com/nkw.templateFrameSet.do?m=m1408000000 ) = 우선 생략하고, Step 2 설치 = Step 3 자료실/ KhOpenApiTest_2.71.zip 다운로드 * Step 2 설치 후, 설치 경로의 OpenAPI 디렉토리 찾기 1. 파일 찾기 2. KHOpenAPI.ocx 를 프로젝트 소스에 복사 * Step 3 자료실/다운로드 1. khOpenApiTest_2.71.zip 다운/압축 풀고, 2. KHOpenAPI.cpp/h KHOpenAPICtrl.cpp/h 프로젝트 소스에 복사 * 내부 소스에 다음추가 header에 class 생성 cpp에 다음 소스 추가 * 리소스 뷰 > IDD_TRADINGAPP_DIALOG 1. 확인 우클릭 > Active X 컨트롤 삽입 2. KHOpenAPI Control 적용 하면 위 화면처럼 적용 이후 실행 시 다음 화면 이후 매수/매도 적용