Backend&Devops

    [Node.js] Selenium 크롤링 사용

    [Node.js] Selenium 크롤링 사용

    1. 개요 프로젝트를 진행하다보니 실제 프로젝트에 사용할 데이터가 필요할 때가 있는데, 이 데이터를 얻기 위해 자연스럽게 인터넷의 정보를 쉽게 얻어 올 수 있기 위해 크롤링을 사용해야 했습니다. 2. 패키지 먼저 폴더를 하나 생성하고 npm init -y 로 node.js 기반 패키지를 생성해줍니다. 사용할 라이브러리는 selenium으로 npm install selenium-webdriver 위의 패키지를 설치해줍니다. selenium 크롤링을 사용하기 위해서는 브라우저의 드라이버를 사용해야 합니다. http://chromedriver.storage.googleapis.com/index.html 저는 크롬 드라이버를 사용했기 때문에, 위의 링크에서 최신 크롬 드라이버를 받아주면 됩니다. 다운 받은 드라..

    [Nginx] Nginx Proxy Manager 설치

    [Nginx] Nginx Proxy Manager 설치

    1. 개요 Nginx Proxy Manager를 재설치해야 하는 일이 빈번히 있어서 설치과정을 정리했습니다. Nginx Proxy Manager는 리버스 프록시, 리다이렉션, 보안 인증, SSL 인증서 관리를 GUI로 할 수 있게 도와주는 툴입니다. 가이드 참고 https://nginxproxymanager.com/guide/#features Nginx Proxy Manager Docker container and built in Web Application for managing Nginx proxy hosts with a simple, powerful interface, providing free SSL support via Let's Encrypt nginxproxymanager.com 2. doc..

    [Nginx] SSL 설정(HTTPS 적용)

    [Nginx] SSL 설정(HTTPS 적용)

    1. 개요 기존에 웹 사이트를 HTTP로 운영하고 있다가, 사용자의 정보같은 민감한 정보를 사용하게 될 경우에는 SSL 인증서를 사용한 보안처리를 해야합니다. 웹서버에 SSL 인증서를 사용해 웹사이트를 HTTPS로 열 수 있게끔 Nginx 프록시 서버에 SSL 인증서를 적용하는 방법을 확인해보겠습니다. 2. 준비물 도메인, SSL 인증서(chain key, private key) 도메인은 유료로도 발급할 수 있지만, 저는 개발용이기 때문에 무료로 도메인을 발급해주는 no-ip라는 사이트를 통해서 받았습니다. https://www.noip.com/ Sign In - No-IP × Please select your Language To view website content in your Language, p..

    [OpenSSL] SSL 인증서 발급 방법 요약

    [OpenSSL] SSL 인증서 발급 방법 요약

    1. 개요 웹 서버에 https 적용을 위한 SSL 인증서를 발급 받는 방법을 정리했습니다. 2. openssl for windows 다운 https://code.google.com/archive/p/openssl-for-windows/downloads Google Code Archive - Long-term storage for Google Code Project Hosting. code.google.com 윈도우에서 SSL 인증서 생성을 위해 위의 링크에 접속해서 프로그램을 다운받습니다. k, e, d와 같은 라벨이 있는데 저는 e로 다운받고 진행했습니다. 3. 환경변수 설정 2번에서 압축 파일을 받고 푼 다음, /bin 경로에 있는 openssl.exe를 시스템 환경변수에 등록해줍니다. 4. pri..

    [Nginx] 리버스 프록시(Reverse Proxy) 개념 및 사용법

    [Nginx] 리버스 프록시(Reverse Proxy) 개념 및 사용법

    1. 개요 리버스 프록시란? 클라이언트 요청을 대신 받아 내부 서버로 전달해주는 것을 리버스 프록시(Reverse Proxy) 라고 합니다. 저도 사실 프록시라는 개념이 낯설었는데요, 일단 프록시라는 개념부터 확인해야 합니다. 프록시란 대리라는 의미로, 정보를 대신 전달해주는 주체라고 생각하면 되는데, 만약 이 프록시 없이 웹 서버를 운영한다고 가정합니다. localhost:3000 라고 하는 웹서버를 열어서 운영했을 때, 사용자가 갑자기 많아지거나, 웹서버가 그대로 노출되어 있기 때문에 보안적으로 위험성이 있겠죠? nginx를 사용하면 로드 밸런싱으로 부하를 줄여줄 수 있고, 분산 처리 또한 가능하며 웹서버의 SSL 인증도 적용할 수 있습니다. 따라서 아래와 같이 사용자 -> nginx -> 웹서버로 ..

    [Jenkins] ERROR: Couldn't find any revision to build. Verify the repository and branch configuration for this job. 오류 해결

    [Jenkins] ERROR: Couldn't find any revision to build. Verify the repository and branch configuration for this job. 오류 해결

    1. 개요 Jenkins를 통해 Github와 웹훅으로 연결해서 자동배포를 하는데, 새 프로젝트를 연결하면서 ERROR: Couldn't find any revision to build. Verify the repository and branch configuration for this job. 라는 오류가 발생했습니다. 2. 오류 해결 레포지토리 또는 브런치 구성이 유효한지 한번 확인해라?? 같은 느낌이었는데, github 레포지토리 설정하는 부분에서 브런치가 자동적으로 */master로 설정되는 부분이 있었습니다. */master -> */main 기본적으로 git을 사용하면 root 브런치가 main으로 잡히기 때문에 위로 변경해주면 됩니다.

    [Nginx] connect() failed (111: Connection refused) while connecting to upstream 오류 해결

    1. 개요 Next.js 웹 서버(3000)와 Nginx(80)로 리버스 프록시를 연결하는 과정에서 docker-compose를 사용해 2개의 컨테이너를 묶어서 빌드하는 과정에서 발생했던 오류였습니다. 오류내용 *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.24.0.1, server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3000/", host: "localhost" *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.24.0...

    JWT(Json Web Token) 토큰이란?

    JWT(Json Web Token) 토큰이란?

    1. 개요 회원의 로그인 기능을 구현하려고 하다보니 자연스럽게 JWT토큰에 대해 알게 되었고, 대부분의 웹 서비스는 이 JWT토큰를 사용해서 로그인과 로그인 상태를 유지하고 있었습니다. 이러한 기능을 구현하기 위해서는 JWT토큰에 대한 이해와 로그인 서비스에 대한 이해가 필요합니다. 2. 인증(Authentication)과 인가(Authorization) 로그인 서비스에 대해 알아보기 전에 먼저 인증과 인가에 대한 차이를 알아야 합니다. 인증(Authentication): 대표적인 로그인 기능입니다. 아이디와 패스워드 등을 통해 특정 서비스에 일정 권한이 주어진 사용자임을 인증받는 서비스입니다. 인가(Authorization): 사용자가 한 번 인증을 받은 후에, 해당 특정 서비스를 이용할 수 있는 지에..

    서비스 지향 아키텍처란? (SOA, Service Oriented Architecture)

    서비스 지향 아키텍처란? (SOA, Service Oriented Architecture)

    1. 정의 서비스 지향 아키텍처(SOA)는 백엔드에서 사용되는 아키텍처 중 하나로 대규모 컴퓨터 시스템을 구축할 때, 애플리케이션의 기능을 비즈니스 적인 의미를 가지는 기능 단위로 묶어서 표준화된 호출 인터페이스(Rest API 등)를 통해 서비스로 구현하고, 이 서비스들을 기업의 업무에 따라 어플리케이션을 구성하는 소프트웨어 개발 아키텍처를 의미합니다. * 토마스 얼에 의한 정의로는 SOA는 공개, 기민성, 확장, 연합, 자립적 요소들로 구성된 조합가능한 아키텍처, 서비스 품질, 다양한 벤더, 상호 운영성, 서비스 발견 그리고 잠재적으로 재사용 가능한 서비스들이 웹서비스로 구현된다. SOA는 비지니스 로직과 기술을 추상화하여, 이 도메인 간에 느슨한 결합을 유도한다. SOA는 과거 플랫폼의 진화물로서,..

    [Docker] 도커 안에 젠킨스 설치 (도커 인 도커, Docker In Docker, D in D)

    [Docker] 도커 안에 젠킨스 설치 (도커 인 도커, Docker In Docker, D in D)

    1. 개요 젠킨스와 같이 CI/CD 툴을 컨테이너에 설치하고 젠킨스에서 프로젝트를 생성하고, 프로젝트에서 컨테이너를 관리하는 환경을 구축하고 싶을 때 도커 인 도커라고 불리우는 방법을 사용해서 구축합니다. 컨테이너는 독립된 환경인데, 컨테이너에 설치된 젠킨스가 컨테이너들을 관리하려면 도커 볼륨을 연동해서 아래와 같은 느낌으로 구성해줍니다. 컨테이너에 젠킨스를 설치할 때 '/var/run/docker.sock:/var/run/docker.sock' 볼륨에 위와 같은 옵션을 주어서 호스트와 컨테이너가 같은 장소를 공유할 수 있도록 해줍니다. 2. 도커 인 도커 구성 도커 인 도커를 구성하는 방법은 간단합니다. 여러가지 요구되는 옵션이나 dependency가 많기는 하지만, 컨테이너에 젠킨스를 설치할 때 Do..