240912 TIL - 리하네 대장간 개점!

LIHA·2024년 9월 12일
0

내일배움캠프

목록 보기
48/117
post-thumbnail

야호! EC2 서버를 열고 Node를 설치하고 그 외 패키지들도 싹 설치하고 .env도 만들고,
가비아에서 구매한 도메인과 연결도 하고 pm2로 터미널을 꺼도 서버가 돌아가도록 해두었다.
이제 AWS IP로도, 가비아의 도메인으로도 멀쩡하게 돌아간다.
약 1년 반만에 내 서버가 다시 열렸다!😆

배포까지의 과정

서버 어떻게 열더라? EC2에 접속하는 방법

나는 윈도우라서 git bash를 써야한다!
ssh -i (만든 키페어 드래그) ubuntu@(AWS 퍼블릭IP) 이렇게 입력해주면 내 서버에 접속된다.
-> 아까 Ubuntu라고 쳤다가 Permission denied 당했다.

많이 쓰는 리눅스 명령어 모음

ls: 내 위치의 모든 파일을 보여준다.
pwd: 내 위치(폴더의 경로)를 알려준다.
mkdir [폴더 이름]: 내 위치 아래에 새 폴더를 만든다.
cd [폴더 이름]: 나를 해당 폴더로 이동시킨다.
cd .. : 나를 현재 위치의 상위 폴더로 이동시킨다.
cp -r [복사할 파일/폴더][붙여넣기 할 위치]: 복사 붙여넣기
rm -rf [지울 파일/폴더]: 지우기 (이 명령어는 매우 위험!!)

  • 명령어 사용 당시에만 관리자 권한이 부여
    sudo [실행 할 명령어]: 명령어를 관리자 권한으로 실행한다.
  • 명령어 사용 이후 모든 명령이 관리자 권한으로 실행
    sudo su: 관리자 권한이 있는 계정으로 접속한다. (exit 입력하면 관리자 계정에서 로그아웃)

EC2 서버에도 Node.js를 깔고 깃을 클론해와야 한다

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs

이 명령어를 git bash에 그대로 입력하면 Node가 설치된다.
설치가 다 되고 나면 아래 명령어로 정상설치 여부 및 버전확인을 해보자
node -v
npm -v

그 후에는 깃헙 리포지토리 주소를 HTTPS 형식으로 복사하면 OK
깃배쉬도 일종의 터미널이기 때문에 VS Code 터미널처럼 git clone (리포주소) 하면 파일 전부 복사해온다.

여기서 궁금증 - 그러면 깃헙에 수정해서 커밋한 경우는?

깃배쉬에서 내 서버에 로그인해서 git pull 해오면 된다!

.env는 올릴 수 없는데 어쩌지 - VIM Editor로 만들어주자

참고 블로그
vim .env 라고 입력하면 파일이 없으면 만들어주고 있으면 오픈해준다.
처음 들어가면 아마 입력모드인 것 같은데 로컬에 있는 .env 파일 복붙해주면 된다.


특강

RDB와 Document DB - MySQL와 MongoDB

Timestamp로 어떻게 생성된 시간을 알수 있지?

16진수인 Timestamp를 10진수로 바꾸면 밀리초 값이 나오는데, 이건 Unix Timestamp라서 1970년 1월 1일 기준이다. 유닉스 타임으로부터 얼마나 지났는지 보는 것.

Machine ID는 같은데 Process ID는 다르다면?

-> 이런 경우는 서버는 같은데 다른 프로그램이 이 작업을 수행했다는 것이다.
이를테면 크롬 탭을 연다고 할때, 각각의 탭은 각각의 쓰레드가 작업을 하게 된다.
그래서 Ctrl + Shift + Esc 했을때 나오는 작업 끝내기는 실제로는 프로세스 끝내기이다!

Increment Counter는 같은 초에 여러 데이터가 들어왔을 때를 나누기 위해 있는 것이다. dec2ec5

세션의 문제 - 의존적이다

서버 트래픽이 많아져서 서버가 증설되었다고 하자. 내 세션정보는 서버1에 저장되어 있는데, L7 로드밸런서가 내 요청을 서버3으로 보내버리면 서버는 내게 401 Unauthorized를 반환한다. 이럴 때 필요한게 JWT이다.


동기 코드리뷰

validateAsync가 뭐지? - 검사해서 안맞으면 에러를 뱉는다

validateAsync는 일종의 텍스트 밸리데이션 패키지인 joi의 검증용 메서드이다. 자릿수는 맞는지, 영어 대소문자는 요구에 맞게 쓰는지, 필수항목인데 입력 안 하는건 아닌지... 이걸 실행해주는 녀석.

Swagger - API 관련 문서를 넣으면 실행할수 있게 해주는 것

다만 이걸 사용하려면 주석이 필요한거 같다.

asyncHandler - express에서도 비동기 함수를 안전하게!

정섭 튜터님의 말씀 중 'express는 async/await의 에러를 검출하는 기능이 없어서 프로그램이 뻗어버릴 수 있다' 는 내용이 있었다. 이걸 위해서 봉준님은 asyncHandler를 쓰셨다.

DrawSQL이라는 사이트가 있다

DB ERD를 좀더 가시적이고 예쁘게 그릴 수 있는 사이트.

테이블 컬럼명과 표시해줄 이름이 같으면 굳이 @map("이름")을 안해도 된다!

몰랐던 사실인데 정섭 튜터님이 키워드를 던져주시고 동기분이 알려주셨다.

실제로 이렇게 itemCount 컬럼을 Int로만 세팅하고 @map 하지 않았는데도 불구하고 문제없이 DB가 세팅되었다.

커밋컨벤션도 안맞추면 커밋 못하게 할 수 있다!

commit hook이라는 것도 있다. 결합해서 사용해보면 좋다.
테스트 코드 통과 못하면 커밋 금지 당하는 것도 설정할 수 있다고.

그리고 우리들의 시간

재밌었어요! 또 만나요!

profile
갑자기 왜 춤춰?

0개의 댓글