배경 지난번 프로젝트 때 cloud watch를 통해 봤을 때 메모리 용량이 초과되지 않았는데 서버가 계속 죽었다. 새벽 3,4시 쯤에 다들 열심히 원인을 분석했는데 그 중 팀원 한명이 원인을 찾았다. ec2에서는 기본적으로 swap memory를 사용하지 않기 때문에 이런 현상이 일어난다고 했다. 그리고 그때 팀원이 문제를 해결하고 넘어갔다. 그때 너무 바빠서 신경을 쓰지 못했다. 그냥 그런게 있구나 이런데서도 cs 배경지식이 이용되는구나 했었다. 그런데 혼자서 새로 프로젝트를 하던 와중에 또다시 문제가 발생했다. 설마 그때 그건가?? 하는 생각이 문득 들었다. 그냥 우연히겠지 하고 인스턴스를 재시작했는데 계속 서버가 죽었다. 그래서 스왑 메모리 설정을 일단 해보자 하는 생각이 들었다. swap mem..
배경 우아한테크캠프에서 많은 사람들이 자신이 만든 라이브러리를 배포했다. 나도 실제로 유저들이 사용할만큼 좋은 라이브러리는 아니라도 일단 열심히 만들고 배포해보겠다는 생각을 했다. npm 회원가입 먼저 npm 회원가입을 하자. 이메일 연동까지 해야된다. 까먹지 말자 npm 로그인 npm login을 입력하고 아까 가입한 정보를 입력하면 로그인된다. 그리고 확인을 위해 npmwhoami를 입력하면 내 아이디가 뜬다 중복되는 패키지명 확인하기 중복되는 패키지는 당연히 배포할 수 없다. npm info 로 미리 확인해보자. 그렇게 중복되지 않는 내용을 package.json 내용에 입력하자. 패키지 만들기 열심히 패키지를 만들자. typescript와 d.ts로 타입도 넣어줘야 되는데 일단은 그냥 자바스크립트..
https://ms3864.tistory.com/381 github action으로 ec2에 자동배포하기1 우아한테크캠프 마지막 프로젝트 때 나는 자동배포부분을 맡지 않아서 꼭 혼자서 다시 해보고 싶었다. 그리고 삽집도 많이했는데 다시 삽질하지 않겠다는 의지(?)를 갖고 블로그에 글을 정리한 ms3864.tistory.com https://ms3864.tistory.com/382 github action으로 ec2에 자동배포하기2 지난 글에서는 깃헙액션, 워크플로우에 대해 알아보았다. 이번에는 aws 관련 설정들을 알아보겠다. 그전에 먼저 대략적인 흐름을 설명하겠다. 원래 배포를 할때는 ec2를 생성하고 기본 우분투 설 ms3864.tistory.com 서론은 생략하겠다 7. 키 등록 이제 받은 Acce..
지난 글에서는 깃헙액션, 워크플로우에 대해 알아보았다. 이번에는 aws 관련 설정들을 알아보겠다. 그전에 먼저 대략적인 흐름을 설명하겠다. 원래 배포를 할때는 ec2를 생성하고 기본 우분투 설정, npm, nodejs, db설치를 한 뒤, git clone을 하고 env파일 설정, npm install, npm start, service nginx start등의 명령어 몇개로 서비스를 배포하고 git pull을 통해 앞선 작업들을 비슷하게 반복하고 필요하다면 pm2 등을 이용해 무중단 배포를 한다. 이건 가장 기본적인 흐름이다. 그리고 조금더 발전된 것이 크론탭을 이용한 자동배포다. 크론탭을 이용한 자동배포는 어렵지 않으니 모른다면 한번쯤 보고 넘어가자. https://ms3864.tistory.com/..
우아한테크캠프 마지막 프로젝트 때 나는 자동배포부분을 맡지 않아서 꼭 혼자서 다시 해보고 싶었다. 그리고 삽집도 많이했는데 다시 삽질하지 않겠다는 의지(?)를 갖고 블로그에 글을 정리한다. GitHub Actions이란 GitHub Actions를 사용하면 이제 세계적 수준의 CI/CD로 모든 소프트웨어 워크플로를 쉽게 자동화할 수 있습니다. GitHub에서 바로 코드를 빌드, 테스트 및 배포하세요. 코드 검토, 분기 관리 및 문제 분류가 원하는 방식으로 작동하도록 합니다. -- by 공식문서 https://github.com/features/actions 쉽게 말해서 워크플로우를 자동화 시켜주는 도구다. 자동배포, 린트체크, 자동화 스크립트 처리 등을 할 수 있다. 가장 기본적인 방법은 크론탭을 이용한..
리눅스에서는 원하는 시간마다 특정 명령어를 실행할 수 있게 해주는 크론탭이라는게 존재한다. 이를 이용해서 git에서 pull을 받아오고 만약 받아왔다면 자동으로 받아오고 배포를 할 수 있다. vi deploy.sh를 해서 아래와 같이 작성한다. #!/bin/bash echo '---cron 실행---' cd /home/ubuntu/cashbook-03 git fetch origin main git pull origin main lastCommit=$(cat /home/ubuntu/last-commit.info) current=$(git rev-parse origin) if [[ $current != $lastCommit ]]; then echo '---커밋변경 배포절차 실행---' echo '---cli..
자바스크립트로 개발하는 분들이라면 보통 서버는 express를 사용한다. express는 어차피 http모듈로 만들어 진것이고 koa나 다른 프레임워크등도 비슷하다. 즉 서버를 띄우는데 아무런 문제가 없다. 그런데 프론트는 조금 얘기가 다르다. 아파치나 nginx같은 서버를 따로 만들어야 한다. 세부적인 설정까지 하면 어렵겠지만 사용법자체는 어렵지 않다. 일단은 설치를 한다. mac이라면 brew install nginx를 이용하고 윈도우라면 공식 홈페이지에서 설치하면 된다. (ubuntu sudo apt install nginx) 그리고 원하는 프론트 파일들을 /var/www/html 폴더에 넣으면 끝이다. 웹팩으로 빌드를 했다면 sudo cp -r dist/* /var/www/html/ 이런 명령어로..
이전에도 글을 썼는데 뭔가 좀 애매해서 처음부터 다시 글을 써볼려고 한다. 이번에도 배포하다가 오류가 나서 몇시간을 날려먹은지 모르겠다. 진짜... 개빡.....친다 이런일이 발생하지 않게 상세하게 글을 써야겠다. 인스턴스 생성 먼저 arm ubuntu로 만들어준다. 인바운드에는 기본 ssh, 80, 3306, 8080을 열었고 아웃바운드에는 전체를 허용해놨다. nodejs 설치 먼저 nodejs를 lts버전으로 깔아준다. 공식사이트 참조(매번 버전이 바뀌기 때문에) https://github.com/nodesource/distributions#installation-instructions 기본 설정 우분투 패키지 업그레이드 및 한글 설정(위에랑 순서가 바뀌어도 상관없을듯??) $ sudo apt upd..