원래는 EC2 Host OS에 NGINX를 직접 설치해서 사용했으나, nginx 설정이나 인증서 등을 관리할 때 다 직접하면 불편할 것 같아서 nginx도 컨테이너로 만들어 버렸다. 더불어, Jenkins도 이미지를 이용해서 컨테이너로 만들었다. Jenkins는 방식이 거의 유사해서 따로 포스팅은 안 해도 될 것 같다:) 먼저 로컬에 nginx 디렉토리를 하나 생성하고 Dockerfile을 다음과 같이 만들면 NGINX를 바로 사용할 수 있다. FROM nginx nginx.conf도 수정해 주어야 하기 때문에, nginx 디렉토리에 nginx.conf 파일을 만들고 다음과 같이 작성했다. server { listen 80; server_name 도메인; server_tokens off; location..
공식 문서를 보고 공부한 내용입니다 :) Using a Jenkinsfile 젠킨스 파일은 젠킨스 파이프라인에 대한 정의와 source control이 있는지를 체크한다. pipeline { agent any stages { stage('Build') { steps { echo '🔨 Building...' } } stage('Test') { steps { echo '🧪 Testing...' } } stage('Deploy') { steps { echo '🧐 Deploying...' } } } } 모든 파이프라인이 이 세 단계를 포함하는 건 아니지만 대부분의 프로젝트에서 세 단계가 포함되면 좋다. 파일을 만들 때 Groovy syntax가 이상적이라고 한다. 프로젝트의 루트 디렉토리에 젠킨스 파일을 만들어..
이전 포스팅에서 AWS EC2에 도커 이미지화 한 프로젝트 배포를 진행해 보았다. 이번 포스팅에서는 EC2 지속적 통합과 지속적 배포를 하기 전 조사 과정을 담아보았다. CI/CD란? CI(Continuous Integration) 지속적 통합을 의미. 빌드/ 테스트 자동화 과정 CD(Continuous Deployment or Continuous Delivery) 지속적 배포 지속적인 서비스 제공을 의미. 배포 자동화 과정 CI/CD 종류 Jenkins, CircleCI, TravisCI, Github Actions 등등 Jenkins 와 Github Actions 비교 Jenkins Github Actions 무료 오픈소스. 빌드, 테스트, 배포와 관련된 소프트웨어 개발 부분을 자동화하고, 지속적인 ..
이전 포스팅에 이어 Jenkins Item을 Pipeline을 사용하여 구축하는 과정을 기록하였습니다. 이전 포스팅에서 Freestyle Project로 CI/CD를 구축해보려 했는데, Pipeline과의 차이가 궁금해서 찾아보게 되었다. [참고1] 간단히 정리해보면 다음과 같다. Freestyle Project jenkins에서 기본 틀을 정해주고 안에 빈칸을 채우는 형식이다. 장점 기본 틀이 정해져 있기 때문에 진입 장벽이 낮다 기존 사용 사례가 많아 참고할 자료가 비교적 풍부하다 단점 커스터마이징이 제한적이다 테스트 혹은 빌드 등의 작업에서 병렬처리 미지원 다수의 형상관리 Repository와 연계하여 사용할 수 없다 Pipeline 한곳에서부터 작업을 시작해서 일렬로 혹은 여러 갈래로 뻗어져 나갔..
이전 포스팅에서 CI/CD에 대해 조사해 보았고, Jenkins로 CI/CD를 구축하기로 했다. 많은 검색과 삽질을 통해 한 챕터를 마무리할 수 있었다 진행했던 과정을 정리하는 느낌으로 글을 작성하려 한다. Reference 블로그들과 여러 검색 자료를 참고하여 구축해 보았다. 블로그 글을 참고하여 과정을 그림으로 표현해보았는데 다음과 같다. Jenkins가 용량이 커서 젠킨스 전용 서버로 따로 설치해야 한다는 글을 어디서 읽은 것 같은데.. 찾아보니, AWS 홈페이지에 젠킨스를 설치할 때, 다음과 같은 방식으로 진행하는 것을 확인할 수 있었다. [참고2] AWS Jenkins 설치 1. EC2 인스턴스 추가로 생성 (설치 방법: https://mean-ji.tistory.com/55) [참고 1] 블로..
EC2에 NGINX를 설치해서 Reverse Proxy로 사용하도록 설정하는 과정과 AWS EC2를 생성한 뒤, 도커를 설치하고 도커 이미지를 컨테이너에 실행하는 과정에 대한 기록 EC2에 NGINX설치하기 amazon-linux를 사용하고 있기 때문에, amazon-linux ec2는 NGINX를 아래의 명령어로 입력해서 설치해야 한다. sudo amazon-linux-extras install nginx1 // nginx 시작 sudo systemctl start nginx // nginx.conf 같은 설정 파일을 변경해 주었을 때, 재시작 sudo systemctl restart nginx // nginx 상태 확인 sudo systemctl status nginx nginx.conf를 따로 변경..
AWS EC2 생성 1. EC2 > 인스턴스 > 인스턴스 시작을 선택 (Region을 서울로 선택 후) 2. AMI는 아마존 리눅스를 선택 (선택하기 전 조사 과정은 이전 포스팅에 기록) 인스턴스 유형은 프리티어 사용가능인 t2.micro로 선택했고, 키 페어를 생성했다. 나머지 세팅은 그대로 두었고, 인스턴스 시작 3. 인스턴스 생성 시, 인스턴스를 중지하고 다시 시작할 때, 두 경우 모두 새 IP가 할당된다고 한다. 매번 접속해야하는 IP가 변경되면 번거로우므로 인스턴스의 IP가 변경되지 않고 고정 IP를 가지게 해야하는데, 이는 탄력적 IP 주소 할당을 하면 된다. EC2 > 네트워크 및 보안 > 탄력적 IP 메뉴를 선택한 뒤 탄력적 IP주소할당을 선택하고, 탄력적 IP를 하나 생성한다. ** 이때..
EC2 리눅스 배포판 선택에 앞서, 어떤 걸 선택하면 좋을지 먼저 조사 후 작업을 진행해보려 한다. Reference에 적혀있는데 테코블 블로그에 정리가 잘 되어있어서 적어보며 공부해 보았다. 리눅스란? 먼저 리눅스는 커널이라는 운영체제의 일종 운영체제는 컴퓨터 시스템 중앙에서 시스템을 구성하는 자원들을 관리하며 시스템을 작동시키는 구성요소라고 한다. (Windows, MacOS 등) 운영체제는 CPU와 같은 자원 사용을 효율적으로 사용할 수 있게 도와주는 역할도 하고 있다. 커널이 바로 이런 역할을 하는데 메모리 위에 항상 상주하며 작동한다. 커널은 운영체제의 역할 중에서 프로그램들과 하드웨어 사이를 소통, 제어해주는 역할을 한다. 운영체제를 위한 커널에도 여러 종류가 있는데, 이 중 리눅스라는 커널을..