본문 바로가기

전체 글

(66)
[Docker]compose 운영서버 배포 기존 배포 계획톰캣 + Redis 환경 구성  Redis 연동을 위한 라이브러리를 추가하고 설정 파일을 컨테이너화 하기위해 Dockerfile작성 프로젝트 소스 코드 포함한 이미지 빌드 및 전송애플리케이션 소스 코드가 포함된 이미지를 tar 파일로 변환하여 SFTP로 전송 후 배포최종 배포 운영 방식톰캣 + Redis 환경 구성 유지소스 코드 마운트 방식 적용간단한 코드수정에도 이미지 전체를 다시 빌드해야 하고 그걸 또 tar파일로 만들고 SFTP로 옮기는 과정이 귀찮다고 생각되어이미지 재빌드 없이 적용 가능하도록 변경Docker Compose 도입볼륨 마운트, 네트워크, 환경 변수까지 설정하려다 보니 docker run 명령어가 길어지고, 운영 중 장애가 발생했을 때 바로 대응하기 어려울것 같기 때문이..
[CI/CD] maven ,ssh ,gitea 프로젝트 Jenkins 배포 초기 설정 Jenkins 관리 > Plugins > Available pulgins 에서 플러그인 설치 1. Gitea  - Gitea  : Gitea에서 소스코드를 가져옴 2. Maven integration- Jenkins에서 Maven을 사용하여 프로젝트를 빌드할 수 있게 해주는 플러그인.- Maven을 설정하여 빌드 과정, 의존성 관리 등을 Jenkins 파이프라인에서 자동화 3. Publish Over SSH  - Jenkins에서 원격 서버로 파일을 전송하고 SSH를 통해 원격서버에서 명령어를 실행할 수 있는 플러그인 4. OpenJDK-native-plugin 혹은 Oracle Java SE Development Kit Installer Plugin- 프로젝트마다 요구되는 jdk버전이 다를수..
[Docker] 설치 (+jenkins) 📌설치 계기EC2에서 젠킨스 서버 운영 예정기존 운영 서버를 마이그레이션하여 도커 이미지로 배포 계획 전 도커 경험 📌절차1. 패키지 업데이트 및 필수 패키지 설치sudo apt-get updatesudo apt-get install apt-transport-https ca-certificates curl software-properties-common -yapt-transport-https : HTTPS를 통해 패키지를 다운로드ca-certificates : SSL 인증서 관리 (Docker 공식 저장소 인증서 신뢰)curl : URL 데이터 가져오는 도구 (Docker GPG 키 다운로드)software-properties-common : 저장소 관리 유틸리티 (Docker 저장소 추가 필요)2...
[Spring Boot]테스트 코드 @Test : 테스트용 메소드를 표현하는 어노테이션@BeforEach : 각 테스트 메소드가 시작되기 전에 실행되어야 하는 메소드를 표현@AfterEach : 각 테스트 메소드가 시작된 후 실행되어야 하는 메소드를 표@BeforAll : 테스트 시작 전에 실행되어야 하는 메소드를 표현 (static 처리 필요)@AfterAll : 테스트 종료 후에 실행되어야 하는 메소드를 표현 (static 처리 필요)@Disabled : 테스트를 실행하지 않  주요 어노테이션 @SpirngBootTest - 통합 테스트 용도로 사용- @SpringBootApplication을 찾아가 하위의 모든 Bean을 스캔하여 로드함- 그 후 Test용 Application Context를 만들어 Bean을 추가하고, MockBe..
JSTL forTokens 서버 오류 (1.1.2 버전 -> 1.2.5 버전) 에러 : The method setItems(String) in the type ForTokensTag is not applicable for the arguments (Object) 최근 운영서버 이관 후 forTokens를 사용할 수 없다고 에러가 뜸로컬이나 다른 운영중인 사이트는 잘되고 다른 표현식에서는 별 이상이 없는데 forTokens 에서 만 해당증상이 나타났다. javax 패키지가 jakarta 형태로 변경해줘야하는 건  tomcat 10 이상 사용중일때 해당하는 방법같고프로젝트 대부분은 8.5버전을 쓰고 있음 기존 jstl 버전  해결 ( 버전 업그레이드 1.1.2 -> 1.2.5)1. WEB-INF/lib 안에 수동으로 라이브러리 파일을 넣어준다.taglibs-standard-impl-1..
[Spring Boot] intellij 프로젝트 생성 스프링부트 코드를 익히고자 게시판 생성 프로젝트 실습 [개발환경]jdk 17mysqlmybatisthymeleaf   File - New - Project  -Spring Boot DevTools  :  코드 수정 후 재시작 필요없이 실시간으로 리로드 하는 기능-Lombok : 생성자 및 getter setter 생성 slf4j 활용-Spring Web : mvc 활용 할수있도록 필수.  build.gradleview 테스트시 404 , 템플릿 엔진 의존성이 자동으로 추가가 안된듯함 나는 따로 추가해줌thymeleaf 추가implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'   Settings -Build, Execution, D..
[AWS] EFS 생성 및 마운트 기존에는 인스턴스 내의 폴더에서 소스 코드를 함께 관리하고 있었다.운영 사이트 중 최대 인스턴스 수는 2개였고, 가끔 관리가 귀찮았지만 어느 정도 감수할 수 있었다.그러던 중 티켓팅 서버 부하 이슈로 Auto Scaling 도입을 조사 중이었고, 현재처럼 인스턴스마다 소스 코드가 관리되고 있으면 수정 전인스턴스로 생성한 템플릿으로 Auto Scaling이 운영 사이트에 적용하기 힘들다고 판단CI/CD 자동화나 스케일링 시작 시 user data로 Git이나 S3에서 소스를 받아오는 방법이 있지만,EFS로 소스 코드를 분리하는 것이 가장 간단하고 현재 상황에서는 가장 접근하기 쉬운 방법이라고 생각한다.  EFS (Elastic File System)네트워크 파일 스토리지로 여러 EC2 인스턴스가 동시에 액..
ubuntu 24 버전 logrotate Read-only file system ⚡ 문제 발생/usr/sbin/logrotate -d /etc/logrotate.d/tomcat테스트 시에는 logrotate가 정상 동작하지만, 실운영 환경에서 로그가 회전되지 않는 문제 발생 📌 오류 확인sudo grep logrotate /var/log/syslog시스템 로그파일에서 logrotate관련 로그 확인 🚨 발생한 오류error: error opening /usr/local/apache-tomcat-9.0.98_2/logs/catalina.out: Read-only file system  원인 분석정상적으로 로그가 생성되는 서버와 비교했을 때, 톰캣 설치 경로가 다름✅ 정상 작동하는 서버: 표준 디렉토리 외부에 설치됨❌ 문제가 발생한 서버: 리눅스 표준 디렉토리 /usr 하위에 설치됨..