글
라벨이 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}", Get); METHOD_LIST_END // Method declarations void handleUplo...
[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 -R 755 /root/storage sudo chown -R ...
[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 and easy to learn | S...
[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: Necessary for SSL/T...
[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 && callback, const std::string& filename); }; FileController.c...
[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_processes 10; events { wor...
[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/jsoncpp.git cd jsoncpp # 빌드 디렉터리 생성...
[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 | 0 B 00:00 E...
[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 port)> VM -(22 port)> Linux ``` 4-2. VM 내부에서 필요한 설정 수정 - ssh...
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 로...
[Nginx-C++로 서버 구축을 해보자] Nginx 간단 원리 확인 [1]
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
간단한 프로젝트 진행 중.... (https://github.com/warguss/CommonServer) NginX란? (영어 참 지옥이네요...) 하나 하나 풀어서 확인해 보겠습니다. Controlling NGINX Processes at Runtime - Master and Worker Processes = 주인 그리고 하인 수행... [Master-Worker?] = Master 스레드가 요청을 받아서, Worker 스레드에 나눠주는 개념 (프로세스로도 가능) (Worker 스레드는 기본적으로 스레드 풀로 구성) = Master가 모든 것을 관장 하신다고 보면 될거 같습니다. - 상세 = 공식 문서입니다. 전 영어 잘몰라서 번역기로 해보겠습니다... [요약하자면...] 1. Master Process와 하나 이상의 Worker Process존재 (캐싱 설정이 되어 있다면 메모리 or H/W 캐싱으로 처리가능 [무엇을?]) 2. Master Process는 conf 파일을 읽고, 지속적으로 Worker Process를 관리 3. 실제 요청 처리는 Worker Process가 처리 4. 요청에 대한 분배 처리는 OS-dependent(뭐지이거) 메카니즘으로 처리 5. worker process에 대한 갯수 설정은 nging.conf에서 하세요 (코어 갯수에 따라 자동적으로 조정되긴한다[진짠지...]) Controlling Nginx = Master Process 사용법 정도라서 넘어가겠습니다... 위 공식 문서는(https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#master-and-worker-processes) 입니다. 설정 파일들에 대한 자세한 설명들이 있지만, 이건 사용 방법 이라 판단 되기에 바로 설치로 넘어가도록 하겠습니다. ...
이 블로그의 인기 게시물
[로스트아크] 제작 효율 최적화 위한 영지 세팅
1. 대성공 확률 증가 vs. 제작 수수료 절감 - 대성공 확률 증가 : 대성공 확률이 2% 증가해도 실제 효과는 크지 않습니다. 예를 들어, 기본 대성공 확률 5%에 2% 증가를 적용해도 실질적인 효과는 0.1% 증가에 불과합니다. - 제작 수수료 절감 : 제작 수수료를 2% 절감할 경우, 제작할 때마다 발생하는 골드 비용을 직접적으로 줄일 수 있어 비용 절약 효과가 훨씬 큽니다. - 결과적으로, 제작 수수료 절감이 대성공 확률 증가보다 약 10배 더 많은 이득을 제공합니다. 따라서 대성공 확률보다는 수수료 절감에 집중하는 것이 권장됩니다. 2. 효율적인 영지 세팅을 위한 이득 극대화 세팅 - 영지 내 필수 세팅 아이템으로 "곡예사의 대기실," "찬란한 소원 나무," "여신의 가호"가 추천됩니다. - 곡예사의 대기실 : 마리샵에서 블루 크리스탈로 구매할 수 있으며, 기본적인 제작 효율을 높이는 데 필수 아이템입니다. - 찬란한 소원 나무 : 수수료 절감을 제공하여 제작 비용을 절감하는 효과가 있어 이득 극대화에 도움이 됩니다. - 여신의 가호 : 미술품 42개를 모아 획득할 수 있으며, 추가적인 제작 효율을 제공합니다. 여유가 있다면 필수로 장착하는 것이 좋습니다. - 여신의 가호 대신, 곡예사의 무기 진열대 를 구매해 사용할 수도 있으며, 경제적인 선택지로 활용할 수 있습니다. 3. 의상 세팅 (선택적 적용) - 특정 의상을 착용하면 제작 효율이 약간 증가하지만, 최적의 의상 옵션은 없기 때문에 필수는 아닙니다. 크리스탈 비용이 부담스러울 경우 생략 가능하며, 다른 세팅을 우선적으로 강화하는 것이 좋습니다. - 드레스룸 이용 : 크리스탈을 사용하여 드레스룸에서 특정 NPC와의 호감도로 얻을 수 있는 의상을 구매할 수 있습니다. - 추천 의상 : 페일린, 실리안, 엘리제로나운 의상이 추천되며, 각각 350 크리스탈로 구매할 수 있습니다. - 비용 절약 방법 : 크리스탈이 부족하거나 가성비...
[로스트아크] 로스트아크 생활 도구 옵션
생활 도구 옵션 및 확률 | 옵션 | 고급 | 희귀 | 영웅 | 전설 | 유물 | |-------------------------|-------------|------------|-------------|-------------|-------------| | 기본 보상 추가 획득률 | 5~10% | 10~20% | 15~30% | 20~40% | 25~50% | | 희귀 재료 획득률 | 5~10% | 10~20% | 15~30% | 20~40% | 25~50% | | 특수 획득 확률 | 0.5~1% | 1~2% | 1.5~3% | 2~4% | 2.5~5% | | 내구도 미차감 확률 | 2.5~5% | 5~10% | 7.5~15% | 10~20% | 12.5~25% | | 채집속도 | 1.25~2.5% | 2.5~5% | 3.75~7.5% | 5~10% | 6.25~12.5% | | 미니게임 난이도 하락 | 1 | 1~2 | 1~2 | 2~3 | 2~3 | | 미니게임 보상 획득 확률 | 5~10% | 10~20% | 15~30% | 20~40% | 25~50% | | 낚시 캐스팅 등급 | 1~2 | 2~4 | 4~6 | 6~8 | 8~10 | 생활 키트 옵션 정리 - 영웅 등급 생활 도구가 제작 비용면에서 효율 좋음 | 생활 유형 | 필수 옵션 (빨간색) ...
작은 거인 심권호: 한국 레슬링의 전설과 그의 성공 전략
# 심권호 프로필 및 수상 경력 심권호 는 대한민국을 대표하는 레슬링 선수로, 작은 체구에도 불구하고 강력한 체력과 기술로 세계적인 성과를 거둔 인물입니다. 그는 두 체급에서 올림픽과 세계 선수권 대회를 제패하며 한국 레슬링 역사상 가장 성공적인 선수로 기록되었습니다. 주요 수상 경력 - 1992년 : 아시아 주니어 선수권 - 금메달 - 1993년 : 아시아 선수권 - 금메달 - 1994년 : 히로시마 아시안 게임 - 금메달 (48kg급) - 1995년 : 세계 선수권 (체코 프라하) - 금메달 (48kg급) - 1996년 : 애틀랜타 올림픽 - 금메달 (48kg급) - 1998년 : 방콕 아시안 게임 - 금메달 (54kg급) - 1999년 : 세계 선수권 (그리스) - 금메달 (54kg급) - 2000년 : 시드니 올림픽 - 금메달 (54kg급) 그랜드슬램 달성 - 1996년 : 애틀랜타 올림픽 금메달을 획득하며, 아시아 선수권, 아시안 게임, 세계 선수권, 올림픽 금메달로 레슬링 그랜드슬램 달성 훈련 및 주요 기술 훈련 방법 - 체력 훈련 : 매일 장시간 러닝과 인터벌 트레이닝을 통해 지구력 강화. - 근력 강화 : 체중 대비 높은 힘 발휘를 위해 하체와 상체 근력 훈련 집중. - 기술 연습 : 실전에서 사용하는 기술을 반복 연습해 정확성과 속도 향상. - 유연성 훈련 : 스트레칭과 요가로 유연성 강화, 부상 방지에 주력. 자주 사용한 기술 - 들어 던지기 : 상대방을 들어 던져 균형을 무너뜨리는 기술. - 굴리기 및 뒤집기 : 상대를 회전시키며 포지션을 바꾸는 기술. - 후크 및 잠금 기술 : 상대의 다리나 팔을 걸어 잠금으로 고정. 식단 관리 - 단백질 중심 식단 : 닭가슴살, 생선, 두부, 계란 등을 통해 근육 회복과 유지. - 저지방, 저탄수화물 식단 : 체중 조절을 위해 저지방 식단 유지. - 수분 조절 : 경기 전후 수분 조절로 체중 관리 및 경기력 유지. - 비타민과 미네랄 보충 : 과일과 야채를 통한 비타민 ...