본문 바로가기

서버 인프라, 백엔드42

Docker : 리눅스에 도커 설치하기 (Ubuntu 18.04) 개발을 하다가 EC2 (Ubuntu 18.04) 에 도커를 설치할 일이 생겼습니다. 다음에 또 설치해야될때 알수 있도록 간단하게 정리해두었습니다. 도커 설치하기 sudo apt-get update sudo apt install docker.io sudo systemctl start docker sudo systemctl enable docker 만약 기존에 도커가 설치되어있다면 sudo apt-get remove docker docker-engine docker.io 위와 같이 apt-get install docker.io 이전에 위의 명령어로 도커를 지운 다음 설치해주시면 됩니다. Tips 위와 같이 설치하면 항상 sudo docker [명령어] 형식으로 사용해야 한다는 불편한 점이 있습니다. sudo.. 2021. 3. 26.
AWS : HTTP에서 HTTPS로 redirection 설정하기 (http_x_forwarded_proto + EC2 +ELB) redirection 문제 회사에서 데모를 위한 웹서버를 띄우기 위해 AWS 인프라를 구축할 일이 생겼습니다. 기본적으로 AWS의 ELB와 EC2 그리고 Nginx만을 이용한 간단한 웹 서버를 구축하였는데, 이때 HTTPS 인증서를 로드벨런서(ELB)에 붙이고, 타겟그룹을 만들어서 EC2 Nginx로 전달하였습니다. 이때 아래와 같은 문제가 발생하였습니다. https://example.com/ => HTTPS로 동작 http://example.com/ => HTTP로 동작 https://example.com/folder => HTTP로 동작 (http://example.com/folder/ 으로 이동) 저는 HTTP로 접속이 되더라도 HTTPS로 동작하는 웹서버를 구축해야 했습니다. 저희 회사 SDK를 .. 2021. 3. 19.
리눅스 : 용량 부족할때, 커널 삭제로 용량 확보하기 Linux를 사용하다보면 가끔 용량이 부족할 때가 있습니다. No space left on device (28) ... 용량이 없어서 오류가 날때는 보통 위와 같은 에러를 같이 보여줍니다. 이럴때 하드디스크나 SSD 볼륨 용량을 확장하거나, 필요없는 파일을 지우는 방법이 있지만 그전에 리눅스의 오래된 커널이 남아있을 수 있기때문에 용량부족의 원인일 수 있기 때문에 한번 확인해보시는 것이 좋습니다. 저의경우에 EC2리눅스를 쓰다가 용량이 부족해서 서버로 파일 업로드가 되지 않는 문제가 발생하였습니다. 그런데 해당 서버에는 볼륨의 용량을 다 쓸정도로 큰 파일이 없기 때문에 다른 이유를 찾던 도중 오래된 커널의 용량이 문제라는것을 확인할 수 있었습니다. 커널의 용량 확인 보통 커널들을 저장해놓는 경로는 /us.. 2021. 3. 15.
Sequelizer : Sequelize-cli의 migration 기능으로 운영중 테이블 스키마 변경하기. sequelize 운영 중 테이블 스키마 변경 문제 개발을 하다 보면 sequelize의 테이블을 추가하거나 스키마를 변경해야 할 때가 있습니다.. 보통 이런 작업을 할 때는 sequlize-cli를 설치하여서 사용합니다. 스키마를 변경하기 위해서는 보통 sequelize.drop을 통해 테이블을 제거한 뒤에 sequelize.sync()를 수행해여야 하는데 drop을 수행하게 되면 테이블에 있던 데이터가 모두 삭제가 됩니다. 만약 운영 중이었다면 소중한 데이터가 백업하지 못하고 날아가게 되기 때문에 무척 치명적일 수 있습니다. 테이블을 안 날리고 데이터베이스의 스키마와 컬럼을 바꿀 수 있을까 찾아보니 sequelize cli의 migration 기능을 이용하면 쉽게 해결되는 것을 알게 되었습니다. 아래.. 2021. 3. 2.
리눅스 : 메모리 확인 / 캐시 삭제 리눅스의 캐시와 메모리 리눅스에서 free 명령어를 사용하다 보면 buffer/cache라는 것이 존재합니다. 이 부분은 직접 사용하고 있는 메모리가 아닌 버퍼와 캐시에 사용된 메모리를 말합니다. 버퍼와 캐시에 저장된 메모리 말고 Swap 메모리도 있는데 해당 메모리는 메모리의 사용량이 늘어남에 따라서 디스크의 일부를 Ram처럼 사용할 수 있게 해주는 영영을 의미합니다. (커널에서 실제 메모리에 올라와 있지 않는 블록중 쓰이지 않는 것을 디스크에 저장하여 사용 가능한 메모리 영역을 늘림) 여기서는 버퍼와, 캐시에 사용된 메모리를 해제하는 법에 대해 알아보겠습니다. 버퍼와 캐시에 사용된 메모리를 지워줘야 하는 이유 일반적으로 캐시는 느린 장치의 데이터를 빠른 장치에 임시로 보관해두고 사용하여 성능을 올리는.. 2021. 2. 21.
AWS - EC2 Backup 방법 (snapshot) AWS에서 EC2 인스턴스를 백업하는 방법에 대해 조사해보았습니다. EC2 인스턴스를 실무에서는 따로 백업할 일은 지금까지는 없었지만 혹시 나중을 위해서 알아놓는 것이 좋을 것 같다고 생각이 들어서 한번 알아보겠습니다. AWS EC2의 백업 EC2의 인스턴스는 사용하지 않더라고 계속 켜놓으면 요금이 발생합니다. 따라서 이때 사용하지 않는 인스턴스는 중지하고 제거하면 되는데요, 하지만 언제 다시 사용할지 모르거나, 데이터가 많이 쌓여있는 DB인스턴스의 경우에는 백업을 해두는 것이 좋습니다. EC2는 대부분 root볼륨을 가지고 있고 추가로 EBS볼륨을 인스턴스에 붙이는 구조인데 create image를 통해 AMI를 생성하고 각각의 EBS볼륨에 대해서도 스냅샷을 떠야 합니다. AMI, EBS AMI란 Am.. 2021. 2. 12.
Jenkins : Jenkens를 활용한 실무 강좌 정리 (1강) - CI/CD, Jenkins Pipeline 등 SKplanet Tacademy 유튜브 채널에서 토크온 세미나로 Jenkins에 대한 내용을 설명해서 쭉 정주행을 해보았다. 평소 CI/CD에 대해서 많이 들어봤지만 무엇인지 제대로 알지 못하고, 개념이 잡혀있지 않아서 많은 도움이 된 세미나 였던 것 같다. 추후 Jenkins에 대한 파이프라인을 직접 회사에서 구축해보고 공부할 수 있는 기회가 생기면 좋을 것 같다는 생각을 하였다. 아래는 SKPlanet 토크온 세미나 영상 주소이다. www.youtube.com/watch?v=JPDKLgX5bRg JenKens와 CICD / Jenkins를 활용한 실무 CICD (1강) 1. 강의 목표 CI/CD 파이프라인의 기본 개념의 이해 기본적인 운영환경(DEV, QA, PROD)이 어떻게 구성되고 운영되는지 이.. 2021. 1. 17.
도커 : docker logs의 --tail을 이용하여 컨테이너 로그 확인하기 도커의 컨테이너에서 발생하는 로그들을 확인해야할 때가 종종있다. 이럴때 docker exec로 들어가서 로그를 확인하는것도 방법일 수 있지만 host os에서 간단히 컨테이너의 로그를 확인할 수 있는 방법도 있다 (하하) 아래 명령어를 이용하면 host os에서 명령어 한줄로 쉽게 컨테이너에서 발생하는 로그를 확인 할 수 있다. sudo docker logs --tail 10 -f 6fef3c2e0f4b 위 명령어는 발생한 로그중에 아래 10줄을 보여주는 명령어이다. -f 옵션을 주면 터미널에서 foregrond로 (터미널의 프로세스로) 동작하기 때문에 실시간으로 들어오는 로그들을 눈으로 확인할 수 있다. 2020. 6. 16.
도커란? 서버 관리 ? 일반적으로 서버를 관리한다는건 복잡하고 어려우며 고급 개발자들의 섬세한 작업이 필요합니다. 서버를 관리하게 되면 보통 ./configure 와 make && make install를 사용해서 세팅을 하게 되고, 어느정도 익숙해지더라도 리눅스 배포판이 바뀌거나 환경이 달라지면 꼭 문제가 생기곤 했습니다. 하나의 서버에 여러개의 프로그램을 설치하는 것도 문제였는데 , 서로 사용하는 라이브러리의 버전이 다르거나 동일한 포트를 사용하는 경우는 설치가 굉장히 까다로웠습니다. 차라리 다른 서버에 설치하는게 나았고 그렇게 PC의 갯수가 늘어나고 자원이 낭비됩니다. centos에 익숙해지면 ubuntu, aws에 익숙해지면 azure을 써야하는 일이 생깁니다. Devops의 등장으로 배포가 더 자주 이루.. 2020. 6. 16.
express에서 cookie-parser 사용하기 cookie-parser란? 요청된 쿠키를 쉽게 추출할 수 있도록 도와주는 미들웨어 입니다. express의 request(req) 객체에 cookies 속성이 부여됩니다. node의 npm 패키지에 포함되어 npm install cookie-parser --save를 통해 install하여 사용할 수 있습니다. 예제 코드) var express = require('express'); var cookieParser = require('cookie-parser'); var app = express(); app.use(cookieParser()); app.get('/', function(req, res) { console.log('Cookies: ', req.cookies) }) app.listen(8080.. 2019. 5. 7.