본문 바로가기

Back-End

(19)
[Jenkins] 젠킨스에서 Permission denied 에러 발생 젠킨스에서 파이프라인으로 CI 를 구축하고 빌드를 하던 중, 다음과 같이 Permission denied 에러가 발생했습니다. 이 에러의 원인은 젠킨스 컨테이너에서 전송할 때 사용할 권한은 jenkins, 즉 일반 권한인데 Remote Diretory의 권한이 이와 다르기 때문입니다. 젠킨스 서버에서 ls -al 명령어를 통해 확인을 해보면 다음과 같이 ubuntu:ubuntu 권한으로 되어 있는 것을 확인할 수 있습니다. 따라서 위 Remote Directory 의 권한을 젠킨스의 권한과 똑같이 설정해주면 됩니다. 아래의 명령어를 입력하여 설정해줍니다. $ sudo chown jenkins:jenkins server 다음과 같이 jenkins:jenkins 권한으로 변경되었고, 빌드도 잘 됨을 확인할 ..
[Jenkins] 깃허브에 없는 파일 젠킨스에 수동으로 업로드하는 방법 젠킨스로 CI 파이프라인을 구축하다가 다음과 같은 에러가 발생했습니다. Node.js 와 파이어베이스를 연동할 때 사용되는 정보들이 담긴 json 파일이 없다고 뜨는데, 깃허브에 올릴 때 gitignore 파일에 포함시켜놓았기 때문입니다. 이렇게 깃허브에 없는 파일들로 인해 젠킨스에서 빌드를 실패하게 되는데, 이런 경우 직접 젠킨스 서버에 접속해 수동으로 파일을 가져와야 합니다. gitignore 파일에 포함시킨 파일들이 많으므로 좀 더 간편하게 Back 단의 server 폴더 자체를 가져오겠습니다. server 폴더가 로컬에 있기 때문에 SCP 를 사용하여 로컬에서 EC2 로 업로드해야 합니다. 1) 프로젝트 경로 확인 먼저, 콘솔창을 확인하면 현재 프로젝트의 경로가 아래와 나옵니다. 젠킨스 서버에서 ..
[Jenkins] Jenkins 를 통한 CI/CD 구축 (with Node.js) 젠킨스에서 CI/CD 구축을 위해서는 아이템을 생성해야 합니다. 아이템을 만드는 방법은 FreeStyle 과 Pipeline 이 있는데, 요즘에는 FreeStyle 보다 Pipeline 을 많이 사용하고 있다고 합니다. [ Pipeline 장점 ] 코드로 프로젝트 설정을 할 수 있어 FreeStyle 과 다르게 젠킨스 웹에 직접 접근하지 않아도 설정을 변경할 수 있다. (웹을 통한 설정 가능) CI/CD 파이프라인 설정을 하나의 스크립트 파일(Jenkinsfile)로 프로그래밍을 통해 할 수 있다. FreeStyle 과 다르게 하나의 스크립트 파일(Jenkinsfile)을 통해 흐름 제어를 할 수 있다. 일반 코드처럼 버전 관리가 가능하다. FreeStyle 은 간단한 빌드 및 배포를 할 경우 사용되고,..
[Node.js] express-rate-limit 모듈 사용하기 서버에 DoS (Denial of Service) 공격이 발생해 이용 중인 파이어베이스에 비정상적인 요청으로 인한 불필요한 과금이 발생하는 것을 방지하기 위해 Node.js 모듈 중 express-rate-limit 을 사용해보겠습니다. 터미널에 아래와 같이 입력하여 해당 모듈을 설치합니다. npm install express-rate-limit 단위 시간동안 특정 ip 주소에서 들어오는 request 수를 제한하는 모듈로서, 옵션을 다음과 같이 설정할 수 있습니다. 1) 모든 요청에 대해 적용 var app = require('express'); var rateLimit = require('express-rate-limit'); app.use(rateLimit({ windowMs: 60*1000, //..
[Node.js] 파이어베이스 Realtime Database 연동 Node.js 와 파이어베이스의 Realtime Database 를 연동해보도록 하겠습니다. 1. 파이어베이스 프로젝트 생성 및 설정 1) 파이어베이스에 접속하여 프로젝트를 추가합니다. 2) 생성한 프로젝트에 들어가서 아래과 같이 웹 버튼을 클릭합니다. 3) 앱 닉네임을 작성하고 앱 등록 버튼을 클릭한 후, 콘솔로 이동 버튼을 클릭합니다. 4) 해당 프로젝트를 선택한 후, 프로젝트 설정 을 클릭합니다. 5) 서비스 계정 에서 새 비공개 키 생성 을 클릭하여 키를 생성합니다. 생성한 키 파일의 경로를 잘 알 수 있도록 폴더를 생성하여 저장해둡니다. 아래 나와있는 코드는 config.json 파일에 작성해야 할 코드입니다. 6) 규칙 을 클릭해서 아래와 같이 read, write 를 모두 true 로 바꾸어..
[Spring Boot] Spring Boot & MySQL 연동 앞선 포스트에서 스프링 부트 프로젝트를 하기 위해 IntelliJ 에서 기본 셋팅을 마쳤습니다. 이어서 application.yml 을 설정하면서, DB 를 사용하기 위한 MySQL 연동을 해보겠습니다. 1. application.yml 설정 (서버 포트 설정) 1) resources > application.properties 파일을 삭제하고, application.yml 파일을 새로 만듭니다. 2) New > File 에서 application.yml 파일을 새로 만듭니다. 3) 다음과 같이 서버 포트 번호를 8081로 설정합니다. server: prot: 8081 2. MySQL 연동 프로젝트 실행을 하면, 다음과 같은 에러가 뜨는 경우가 발생할 때가 있는데, Database 에 연결할 때 필요한 ..
[Jenkins] AWS EC2에 SSH 로 배포하기 (.pem 파일) 이를 하기에 앞서, Jenkins 관리 > Plugin Manager 에서 Publish Over SSH 를 검색해 설치해줍니다. 플로그인 설치가 완료되었다면, Jenkins 관리 > 시스템 설정 으로 들어가서 Publish over SSH 로 이동합니다. 1) EC2 접속을 위한 정보를 입력해주면 되는데, Name은 Job에서 식별하는 용도이므로 편한 대로 작성하면 됩니다. 이 외의 정보들은 EC2 에 SSH 연결을 하기 위한 정보입니다. Key 에는 EC2 접근을 위해 가지고 있는 .pem 파일의 내용을 넣어줍니다. 2) SSH Server 를 추가하여 아래의 내용에 따라 입력합니다. AWS 에서 EC2 의 세부정보를 참고하여 입력합니다. Name: 자신이 사용할 임의의 SSH Server 의 이름 ..
[Spring Boot] Spring Boot - Spring Initializr 로 프로젝트 생성 Spring 공식 홈페이지에서 제공하는 Spring Initializr 를 이용해 스프핑 부트 프로젝트를 세팅하려고 합니다. 1. Spring Initializr 1) https://spring.io/ 에 접속하여 Projects > Spring Initializr 에 들어갑니다. 2) 다음과 같이 옵션을 선택합니다. SNAPSHOT 이 쓰여있지 않은 버전으로 선택 (SNAPSHOT 은 베타버전으로 생각하면 됩니다.) Metadata: 프로젝트의 패키지 설정 Packaging: Jar / Java: 11 버전으로 선택 3) Dependency 설정은 아래에 따라 필요한 것들로 설정합니다. DB 연동이 없는 프로젝트 Lombok Spring Web Thymeleaf DB 연동을 하는 경우 Spring Da..