현재 젠킨스로 배치를 배포하며 특정 서버에 SSH 연결을 통해 jar 파일을 실행하는 구조로 배치가 수행되고 있습니다. 서버간 파일 이동을 줄이기 위해 타겟 서버에 Git Repository Clone을 진행해두고 그 상태에서 프로젝트를 자체 gradle build 를 통하여 jar 를 생성하고 있었습니다. 문제는 아래와 같이 로그가 jar 파일 실행 이후에도 로그가 계속 출력되고 있어서 젠킨스 아이템이 멈추지 않는 증상이었습니다. 그래서 이 부분을 어떻게 해결할지 고민을 하다가 백그라운드에서 배치를 실행시키는 옵션을 찾게되었습니다. 기존에 사용하였던 run.sh 의 내용입니다. As-is !#/bin/sh port=18085; pid="$(sudo lsof -t -i :18085 -s TCP:LISTE..
이번에는 저번부터 진행했던 서버 마이그레이션에 이어서 실제 서버에 배포도구로 사용할 젠킨스 서버를 구축하려고 하였습니다. 기존에 사용했던 서버의 스펙은 아래와 같습니다. EC2 Ubuntu 20.04 (x86) 4GB RAM / 2vCPU 이전 글에서 제가 아마존 리눅스2 OS로 변경하면서 아키텍쳐도 같이 변경되어 비용이 절감되었다고 글을 작성한 적이 있었습니다 :) https://abbo.tistory.com/304 AWS EC2 Amazon Linux 인스턴스 생성하기 이번에 AWS Summit 을 확인하고나서 DevOps 중에 비용을 줄이고 고도화를 진행할 필요가 있다고 생각하여 현재 사용중이었던 인스턴스들을 전부 Amazon Linux (아마존 웹 서비스에서만 제공하는 인스턴 abbo.tistor..
오늘은 Jenkins에서 사용하는 전역 변수들을 설정하는 방법을 설명하려고 합니다. 로그인을 한 후 Sidebar -> Jenkins 관리 -> System Configuration 안의 시스템 설정으로 들어갑니다. 여기서 SSH 설정하는 곳 위의 Global properties 안의 Environment variables 체크를 한 후 키-값을 추가해줍니다. 자주 사용하는 내용은 아래에 적어두었습니다. 추가로 각각의 아이템마다 변수를 설정할 수 있습니다!! Item -> General 의 오래된 빌드 삭제(Discard Old Builds) 아래의 '이 빌드는 매개변수가 있습니다' 를 체크한 후 매개변수 추가 셀렉 박스를 선택한 다음 각각 값을 추가해줍니다. Name: Key값으로 사용할 내용이며 그 ..
서버를 구성할 때, 필요한 프로그램들을 공식 저장소를 통하여 보통 설치하게 됩니다. 하지만 저장소에 모든 프로그램 설치 데이터가 존재하진 않습니다. 다른 버전을 설치해야 할 때도 있을 것이고, 아예 등록되어 있지 않은 프로그램을 설치해야 할 때도 있습니다. 이번 주제는 서버용 배포판으로 많이 사용되는 우분투에서 어떻게 저장소들을 관리할 수 있는지에 대한 글입니다. 공식 저장소는 만능이 아니다. Java, Nginx, redis는 일반적으로 WAS를 구성할 때 많이 사용하는 프로그램입니다. 동시에 우분투 기본 저장소를 통하여 설치를 할 수 있는 공통점이 있습니다. 지난번 글에서는 공식 저장소를 통하여 Java를 설치하는 방법에 대해서 간단하게 정리했습니다. 서버를 운영하기 위해서는 Java 뿐만이 아니라 ..
최근 log4j의 보안 취약점이 크게 이슈가 되고 있습니다. 많은 개발자나 운영자들이 이 조치를 위해 정신이 없을것 같아 간단하게 글로 남겨 봅니다. log4j는 자바를 사용하는 많은 프로젝트에 사용되기 때문에 직접 개발한 코드 뿐만 아니라 자바 개발된 서버 사이드 솔루션들도 모두 점검을 해봐야 합니다. 일반적으로 가장 많이 사용되는 자바로 개발된 서버 사이드 솔루션은 대략 다음과 같습니다. Tomcat JBoss Jenkins ElasticSearch Hadoop Kafka Spark 등등 방화벽 안쪽에 있는 서버나 포트가 외부에 공개되지 않은 서버라도 모두 취약점의 대상이 될 수 있습니다. 이유는 다음과 같은 취약성 때문입니다. 취약점 동작 원리 현재 발생하고 있는 문제의 원인은 log4가 로그를 출..