2018의 게시물 표시

[Nginx-C++로 서버 구축을 해보자] Nginx-Module 연결 [3]

이미지
이전에는 설치를 진행하였고, (https://warguss.blogspot.com/2018/12/nginx-c-nginx-centos-2.html) 이번에는 따로 만들 모듈로 요청을 받는 것을 진행 해 보겠습니다. 우선 간단한 에코 서버를 준비합니다... (https://gist.github.com/suyash/2488ff6996c98a8ee3a84fe3198a6f85 이 사이트의 server.c를 그냥 사용했습니다) 빌드 후 다시 띄워주세요 (g++ -o server 파일) ./server 여기서 port만 우선 사용할 포트로 수정합니다.  (저는 10002 port를 사용하였습니다) nginx 설정을 수정합니다. 요런식으로 수정하고 nginx 다시 띄웁니다. 그리고 다시 웹으로 접속합니다. [root@localhost.localdomain back_module] $ ./server client connected with ip address: 0.0.0.0 received: 'GET / HTTP/1.0 Host: 127.0.0.1:10002 Connection: close Cache-Control: max-age=0 Upgrade-Insecure' 잘 찾아오네요.... 정리하자면  1. back module 개발 2. nginx 설정에서 특정 Command는 Back Module로 보내게끔 수정(port 일치 필요) 3. back module 띄움 4. nginx 재시작 5. 접속 테스트 이렇게 될거 같네요.  nginx가 요청 - Logic 모듈이 잘 분리되어 있는거 같습니다.  이를 토대로 Common한 Http Server를 개발해볼 예정입니다. 감사합니다~ 추가로 읽으면 좋을 것 ...

[Nginx-C++로 서버 구축을 해보자] Nginx-Centos 설치 [2]

이미지
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]

이미지
간단한 프로젝트 진행 중.... (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) 입니다. 설정 파일들에 대한 자세한 설명들이 있지만, 이건 사용 방법 이라 판단 되기에 바로 설치로 넘어가도록 하겠습니다. ...

[EffectiveC++ 요약] 1장. C++에 왔으면 C++의 법을 따릅시다.

항목1. C++은 여러 언어의 연합체 = C = 객체 지향 개념의 C++ = 템플릿 = STL = 위 4가지로 구성 항목2. #define을 쓰려거든 const, enum inline을 떠올리자 Ex] #define TEST_Ratio 1.653 사용 시, 기호 테이블에 들어가지 않음 (Symbol Table) = 소스 -> 전처리기 -> 컴파일러 순으로 진행 시, = TEST -> 1.653으로 바꿔버려 어디에 오류가 있는지 찾기 힘듬 (사족) 컴파일 에러를 말하는지, Logic 에러를 말하는지 모르겠네 = TEST_Ratio가 사용된 만큼 메모리가 사용 (TEST_Ratio -> 1.653으로 바꾸기에, TEST_Ratio 등장 횟수 만큼 리소스 사용 = 매크로 대신 상수를 쓰는 방법으로 대체 (const double TestRatio = 1.653) = 상수 포인터 정의하는 경우 주의 사항 = char* 형식 문자열 상수 정의시 , ptr과 value까지 const로 선언하는 것이 보통 Ex] const char* const AuthorName = "Test Author"; -> const char* (Ptr에 대한 Const) -> const AuthorName (Value에 대한 Const) char* 보단 std::string을 쓰는것이 좋다 const std::string AuthorName("Test Author"); 항목2-1. 클래스 상수 정의 Ex] class Player{ private:  static const int NumTurns = 5; //상수 선언  ... }; (사족) numTurns는 객체가 사용되기 이전에 PreProcess 단계에서 만들어지기에 static이 필요할것으로 보인다. (미리 메모리에 올라가 있어야하니...) = NumTurns는 선언 된 것, 정의가 아니다. (...

git clone SSL Connection Error

실제 게임서버를 운영해보고자 서버 설치 작업을 ncloud통해 만들고 git clone을 사용해서 올리려 하였는데 git clone 자체가 fail 나는 현상이 발견되었습니다. git version도 1.7 -> 1.8로 올려도보고 다른 방법을 사용해보았지만 먹통이었는데, 해당 command처리를 통해 해결되었습니다. OS : Centos 6.6 64bit $ yum update -y nss curl git이 git clone시 curl을 통해 받아온다고 하는데, 그 과정에서 문제가 있었던것 같습니다.

[프로젝트 RTS] 게임서버를 만들어보자 [1]

이미지
최근 회사 일만으로 개발 실력 향상에 부족한 거 같아 게임을 만들어보자라는 계획을 잡고 후배와 진행중입니다.. (유니티 Client Unix C++ 서버 ) 목표로는 웜즈와 비슷한 UI로 Real Time 대전 액션 게임...인데 현실은... ... 어쩃든! 현재는 로그인/로그아웃만 구현이 되어있습니다. 이제 이동 및 이벤트에 대해 처리해야하는데, 갈길이 머네요 ㅎㅎ... 게임 서버 아키텍쳐에 대해서도 고민이 되고 구현 방식에도 참 다른점을 많이 느꼈습니다. (특히 protobuf가 지옥이었습니다..) 또, real time 서버에서는 구역화를 나누는게 어렵더군요 (전체 유저에게 이벤트 정보를 주기보다 구역을 나눠 근처에 있는 유저에게만 주는?) 현재 위 이슈에서 막혀있습니다... 좀더 노력을 해봐야겠네요 로그인 까지의 코드는 해당 github에 있습니다. ( https://github.com/warguss/ProjectRTS ) 추가로 읽으면 좋을 것

이 블로그의 인기 게시물

윤석열 계엄령 선포! 방산주 대폭발? 관련주 투자 전략 완벽 분석

대통령 퇴진운동 관련주: 방송·통신·촛불수혜주 완벽 분석

키움 OPEN API MFC 개발 (1)