AWS 10

[AWS] nginx + https 적용하기

nginx 를 적용하는 이유는 nginx로 next를 리버스 프록시 하기 위함이다. 최초 브라우저에서 프론트로 요청이 오면(80포트) https(443포트)로 변경 후 프론트서버(3060 포트)로 요청을 보낸다. 1. ubuntu에서 nginx 설치 ubuntu@ip-172-31-35-68:~/e-Library/prepare/front$ sudo apt-get install nginx 2. nginx configuration 설정 관리자 권한(sudo su)으로 전환 후 ubuntu@ip-172-31-35-68:~/e-Library/prepare/front$ sudo su vim을 통해 설정 파일에 들어가준다. ubuntu@ip-172-31-35-68:~/e-Library/prepare/front$ vi..

AWS 2022.02.21

04. AWS pm2 사용하기

pm2는 내가 서버를 끄고 어떤 작업을 하든 한번 실행해 놓으면 서버가 계속 돌아갈 수 있게 해준다. foreground process: 터미널을 끄면 같이 꺼짐 (node app) background process: 터미널을 꺼도 안 꺼짐 $ npm install pm2 pm2를 설치하고 package.json에 scripts를 설정해준다. pakage.json "scripts": { "dev": "nodemon app", "start": "cross-env NODE_ENV=production pm2 start app.js" }, // pm2 시작 $ sudo npx pm2 start // port 끄기 $ sudo npx pm2 kill // 실행된 port list 확인 $ sudo npx pm2 ..

AWS 2022.02.18

03. AWS Ubuntu에 MySQL 설치하기

$ sudo apt-get install mysql-server $ sudo apt-get update $ sudo su // root 계정으로 전환 $ mysql_secure_installation // password 설정 후 mysql에 접속해본다. $ mysql -uroot -p // 설정한 password 입력 설치 후 `$ npm start`를 하는데 .env가 없어 process.env.[설정한 값] 가 실행이 안된다. 그래서 Ubuntu 터미널에서 vim .env를 통해 파일을 만들고, i나 a를 눌러 내용을 담고 esc를 누른 후 :wq를 통해 저장하고 나온다. $ npx sequelize db:create // 만약 DB가 생성이 안되고 Access denied for user 'roo..

AWS 2022.02.18

02. Ubuntu에 Node 설치하기

우분투 외의 다른 리눅스 운영체제를 사용한다면 https://nodejs.org/ko/download/package-manager 링크에서 설치 방법을 확인 $ sudo apt-get update $ sudo apt-get install -y build-essential $ sudo apt-get install curl $ curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -- $ sudo apt-get install -y nodejs 설치하고 나서 제대로 설치되었는지 확인하기 위해 콘솔 창에 다음 명령을 입력 $ node -v 14.0.0 $ npm -v 7.6.0 npm 버전이 콘솔 창에 뜬다면 설치 성공, 만약 버전이 뜨지 않고 에러 메시..

AWS 2022.02.18

01. AWS EC2 생성하기

1. AWS 로그인 후 EC2로 가서 인스턴스 시작 클릭 2. AMI 선택: Ubuntu Server 선택 3. 인스턴스 유형: 학습 목적 배포로 프리티어 사용 가능한 t2.micro 선택 4. 인스턴스 구성: 모니터링 체크 (CloudWatch 세부 모니터링 활성화) 5. 보안그룹 구성: SSH, HHTP(80포트), HTTPS(443포트), 소스는 해킹 위협 방지를 위해 사용자의 IP를 설정할 수 있다. - 소스: 사용자의 IP를 설정하면 해당 IP의 주소에서만 터미널을 조작할 수 있다. 6. 시작하기: 새 키페어 또는 기존 키 페어 선택 후 키 페어 파일을 잘 가지고 있어야 한다. 터미널 연결하기 1. 인스턴스 선택 후 연결 클릭 하단의 연결 링크를 복사한다. 2. 터미널에서 키 페어가 있는 파일로..

AWS 2022.02.17

EC2에 nginx와 https를 적용

먼저 https를 적용하는 이유에 대해 간단하게 알아보자 HTTP(Hypertext Transfer Protocol)는 서로 다른 시스템 사이에서 통신을 주고받게 해주는 기초적인 프로토콜이다. 웹 서핑을 할 때 서버에서 사용자의 브라우저로 데이터를 전송해 주는 용도로 가장 많이 사용된다. 인터넷의 초기에 모든 웹사이트에서 기본적으로 사용되었던 프로토콜이기도 하다. HTTPS(Hypertext Transfer Protocol Secure)는 약자를 보면 뒤에 Secure(보안)이 붙는다. 기존의 HTTP 프로토콜은 서버에서 브라우저로 정보가 전송될 때 정보가 암호화 되지 않는다는 문제가 있었다. 즉 정보를 쉽게 도난 당할 수 있었다는 것이다. HTTPS 프로토콜은 SSL(보안 소켓 계층)을 사용함으로써 이..

AWS 2021.12.22

AWS/ 로그인과 게시글 업로드 관련 문제

1. 배포 후 로그인은 됬으나 새로고침시 로그인이 풀리는 문제를 해결하기 위해 Domain을 구입 하였고 Routes 53을 통해 Domain 설정하여 해결 2. 그러나 로그인을 하고 새로고침 시 로그인이 다시 풀림 무슨일인가??? 로그인 재시도 하는데 401 에러(로그인이 필요합니다)가 생김. (로그인은 됬는데..??) getServerSideProps의 문제인가 생각이들어 차근차근 하나씩 흐름타서 확인해봄. 문제없음. 개발자도구/network/login/Cookies 확인: 쿠키 보유 확인 됨 Aplication/Cookies 확인: cookie(connect.sid) 없음 3. 확인결과 서버를 실행 할 때 process.env.NODE_ENV=production 이 아니라서 생긴 문제로 파악됨 pa..

AWS 2021.12.18

aws-lambda image-resizing(node.js)

어떤 서비스든지 이미지를 볼 때, 모바일에서 보는 이미지와 PC에서 보는 이미지는 용량이 다르고 크기도 다르다. 사용자가 어디서 보든지 원본 이미지를 그대로 보여주면 용량만 차지하고 비효율적이다. 때문에 때에 맞춰 이미지의 크기를 리사이징 해줄 필요가 있다. lambda란? AWS Lambda는 Amazon Web Services의 일부로 Amazon에서 제공하는 이벤트 중심의 서버리스 컴퓨팅 플랫폼. 이벤트에 대한 응답으로 코드를 실행하고 해당 코드에 필요한 컴퓨팅 리소스를 자동으로 관리하는 컴퓨팅 서비스. 쉽게 말해 함수를 만들어 놓으면 서비스 안에서 이벤트가 실행될 시 코드를 실행해주고 필요한 리소스를 자동으로 관리해주는 것 aws lambda lambda로 이미지 리사징하기 1. 먼저 front와..

AWS 2021.12.18

CredentialsError: Missing credentials in config

aws 배포중 프론트에서 아래와 같은 에러가 생긴다면? CredentialsError: Missing credentials in config sudo su 관리자 모드에서 vim .env를 통해 설정한 S3_ACCESS_KEY_ID와 S3_SECRET_ACCESS_KEY를 추가 해준다. 이후 만약 같은 에러가 생긴다면? npm install을 해줬는지 package.json을 확인해주고 제대로 되어 있다면 아래의 코드처럼 aws-sdk를 통해 config.update가 설정한 accessKeyId와 secretAccessKey가 제대로 있는지 확인한다. AWS.config.update({ accessKeyId: process.env.S3_ACCESS_KEY_ID, // .env secretAccessKe..

AWS 2021.12.18