목록DevOps & Infra (151)
오늘도 한 뼘 더
# 배경 Window에서 MySQL Workbench를 통해 Export 한 데이터를 Ubuntu 서버에서 사용하기 위해 전송이 필요했다. # SCP(Secure Copy)를 사용한 OS간 파일 전송 ## SCP 옵션 -r : 폴더를 복사할 때 사용 -p : 원본파일의 권한 및 속성을 유지하여 복사 -P : 포트번호를 지정하여 복사 -c : 압축하여 복사 -v : 복사가 되는 과정을 출력한다. -a : 아카이브 모드로 복사 ## 단일 파일 복사 1. 로컬에서 원격으로 (Local -> Remote) $ scp [옵션] [파일명] [원격 id]@[원격 ip]:[받는 위치] ex) $ scp ./aaa.tar ubuntu@XXX.XXX.XXX.XXX:~/data_backup 2. 원격에서 로컬로 (Remot..
# 배경 - AWS ElasticBeanstalk으로 배포하고 있는 Service(Backend) 프로젝트를 도커 컨테이너로 배포하여 사용하기 위해서 도커 컨테이너가 올라가는 서버에 Nginx를 설치하고 도메인과 연결할 수 있도록 한다. # Nginx란? - 웹 서버 소프트웨어이다 - 웹 서버, 리버스 프록시 및 메일 프록시 기능을 가진다. ## Nginx 설치하기 https://ubuntu.com/tutorials/install-and-configure-nginx#2-installing-nginx Install and configure Nginx | Ubuntu Ubuntu is an open source software operating system that runs from the desktop, ..
# 배경 회사에서 Docker 업무를 하면서 로컬에서 golang 서비스를 Docker로 만드는 걸 진행했는데 잘 되지 않는 문제가 발생을 했고 시니어 분께서 Dockerfile을 봐주시면서 Multi-Stage Build라는 것을 알아보라고 하셨다. # Multi-Stage Build - Docker 이미지를 만들 때 Dockerfile을 사용하는데 이때, 이미지를 만드는 방식이 layer를 쌓는 방식이다. - multi-stage builds는 여러개의 "FROM"을 작성하여 하나의 Dockerfile에서 새로운 빌드 스테이지를 시작할 수 있게끔 한다. - 필요한 소스들만 COPY를 해서 사용함으로써 도커 이미지의 용량도 줄어드는 효과가 나타난다. # Multi-Stage Build 적용 전 - 시니..
# 배경 jenkins에서 프로젝트 빌드/배포를 하다가 모든 배포가 에러가 나면서 진행이 되지 않았다. 확인해본 결과 공간이 부족하다는 에러 메시지를 확인 # 문제 내용 jenkins docker를 올려놓은 EC2 인스턴스의 볼륨 크기가 작아서 발생한 문제 jenkins에서 빌드 할 때 모듈을 다운로드하거나 하면 CPU를 많이 차지한다고 한다 # EC2 볼륨 수정 1. 해당 EC2의 볼륨 수정을 진행해서 크기를 수정한다. 2. EC2에 직접 접근하여 이 볼륨을 적용시켜줘야한다. 1) 해당 EC2에 접근 ssh ubuntu@{EC2 IP} 2) 어떤 파티션의 크기를 조정해야 하는지 확인 $ lsblk 3) Linux 파티션 크기 조정 $ sudo growpart /dev/nvme0n1 1 4) 파티션 크기..
AWS를 작업할 때 크게 두 가지 방법으로 작업을 한다. 1) AWS Console 2) AWS CLI(Command Line Interface) 보통 대부분의 작업을 Console로 작업을 했다. 이유는 눈에 더 확실히 보이기 때문이었는데 DevOps 및 Infra 작업들이 늘어날수록 CLI를 통한 작업을 해야하는 부분들이 생겼다. 1. AWS CLI 설치하기 $ apt update $ apt-get install awscli 2. AWS CLI를 사용하기 위해서는 `aws configure` 명령어를 통해 aws 설정을 진행해야한다. AWS access key/secret access key는 IAM 사용자를 만들 때 발급된다. $ AWS ACCESS KEY : {AWS ACCESS KEY} $ AW..
1. docker 이미지 찾아보기 $ docker search mysql 2. 현재 사용 중인 버전의 mysql 이미지 다운 $ docker pull mysql:8.0.23 3. docker image 확인하기 $ docker images 4. docker 컨테이너 올리기 $ docker run -d \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=bstore1017my \ -v /var/lib/mysql:/var/lib/mysql \ --name mysql mysql:8.0.23 5. mysql 도커로 접속 $ docker exec -it mysql bash 6. mysql로 접속 $ mysql -u root -p
# Docker 빌드(이미지 만들기) docker build --tag {image name):tag . # 이미지 - 이미지 리스트 docker images - 이미지 삭제 docker rmi {image ID} - 컨테이너에서 사용중인 경우 컨테이너를 삭제 후 이미지 삭제 또는 강제 삭제가 가능하다. docker rmi -f {image ID} - 사용되지 않는 이미지 삭제하기 $ docker image prune -f # 컨테이너 - 실행중인 컨테이너 리스트 보기 docker ps - 전체 컨테이너 리스트 보기 docker ps -a - 컨테이너 시작 docker start {container name} - 컨테이너 중지 docker stop {container name} - 컨테이너 삭제 dock..
# 배경 웹 프론트엔드 개발자로 일하고 있는 회사 동료 분이 현재 운영계에서 소스맵을 통해 우리의 코드가 오픈되는 것을 이야기하면서 소스맵을 비활성화 하는 방법을 제안하였다. # 소스맵(Source Map)이란? - 서버에 배포를 할 때 성능 최적화를 위해 HTML, CSS, JS와 같은 웹 리소들을 압축하는데 이 빌드, 배포된 파일을 원본 파일과 서로 연결시켜주는 기능을 한다. - 원본의 파일을 볼 수 있기 때문에 소스맵이 빌드,배포한 파일에서 에러가 날 때 디버깅이 가능할 수 있도록 도와주는 기능을 한다. 이런 디버깅은 편의성을 제공하지만 결국 코드가 노출이 되기 때문에 보안의 이슈가 발생할 수 있다. - 원본파일과 연결을 시켜주는 역할을 하기 때문에 소스맵이 활성화가 되면 메모리를 많이 쓰게 되면 ..
배경 최근 회사에서 AWS 비용을 줄이는 작업을 하고 있다. 회사에서 사용하고 있는 AWS 비용 중 RDS 비용이 TOP3에 들고 있어 일단은 필요 없는 RDS는 삭제를 하는 작업을 진행했다. 그리고 최종 RDS의 데이터를 스냅샷으로 생성하여 저장할 수 있었고 다시 복원하는 방법은 어떻게 진행되는지 알아보았다. RDS 삭제 - 삭제하고자 하는 RDS를 선택 후 작업에서 삭제를 선택한다. - 최종 스냅샷 생성 여부를 체크를 하지 않으면 스냅샷이 생성되지 않고 RDS가 삭제가 된다. 실제로 사용하지 않는 데이터이고 삭제를 해도 된다고 하면 이 부분은 선택을 하지 않고 삭제를 진행해도 무방할 것 같다. 필자의 경우 해당 작업이 퇴사하신 분의 레거시여서 혹시 모를 상황에 대비해 스냅샷을 생성하였다. - dele..
Jenkins 아이템 만들기 - 아이템 이름 입력 후 freestyle 프로젝트를 선택 소스코드 관리 사용할 Git 소스 코드에 대한 SSH 링크를 복사하여 붙여 넣는다. 이때 에러 메시지가 다음과 같이 뜨면 Credentials를 눌러 이전에 설정해두었던 credential을 입력하거나 Add를 눌러 권한을 부여한다. 2021.12.20 - [DevOps & Infra/Jenkins] - [Jenkins] Git Lab 레파지토리 연결하기 참고! Credential설정이 옳바르게 되었다면 다음과 같이 에러 메시지가 없어지게 된다. 빌드 설정 - AWS Elastic Beanstalk : 설정을 위해서는 jenkins plugin에서 AWS Elastic Beanstalk 설치를 진행한다. AWS cre..