Sungtt

aws 배포과정 본문

프로젝트/개인 프로젝트 [공책게임]

aws 배포과정

sungtt 2022. 9. 19. 05:19

aws 계정 정보

 

 

ec2 인스턴스 생성

 

키페어.ppk 생성

 

보안그룹 생성

 

탄력적 ip 생성

 

탄력적 ip 할당

 

PuTTyGen를 이용해 키페어.pem 생성

 

PuTTY를 이용해 인스턴스 접속

 

실행 sudo yum update

깃 설치 sudo yum install git

실행권한 부여 chmod 711 /home/ec2-user

nvm 설치

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

nvm 활성화 . ~/.nvm/nvm.sh

node 설치(설치 당시 버전 18.9.0) nvm install node 

node 실행중인 버전 확인 node -e "console.log('Running Node.js ' + process.version)"

오류#1

 

해결#1

최신 lts버전으로 재설치(16.17.0) nvm install --lts

node 실행중인 버전 확인 node -e "console.log('Running Node.js ' + process.version)"

-참고한 스오플 글

https://stackoverflow.com/questions/72022527/glibc-2-27-not-found-while-installing-node-on-amazon-ec2-instance

 

nginx repo 설정파일 생성 sudo vi /etc/yum.repos.d/nginx.repo

nginx repo 코드 추가

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/amzn2/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

nginx 설치 sudo yum install nginx

중간에 뜬 선택지

nginx 설정파일 수정하기위해 접속 sudo vi /etc/nginx/nginx.conf

주석처리할 server 코드블럭이 없었음. 그래서 코드 추가만 함

 

폴더 생성

 sudo mkdir /etc/nginx/sites-available

 sudo mkdir /etc/nginx/sites-enabled

명령어를 통해 위 두 폴더를 생성해준다.

 

아래 이름으로 파일 생성

sudo vi /etc/nginx/sites-available/DungeonNote.conf

아래 코드 추가 (기존 폴더가 NoteGame이라 해당 디렉토리를 따라 작성함)git clone 시 어떻게 가져와지는지 테스트하고 경로확인하자.

-테스트해보니 레포지토리 이름인 NoteGame가 생성된 뒤 파일이 clone된다.

아래 경로를 그대로 두고 ec2-user에서 clone하면 정상이라는 것.

 

심볼릭 링크 설정

sudo ln -s /etc/nginx/sites-available/DungeonNote.conf /etc/nginx/sites-enabled/DungeonNote.conf

 

nginx 설정이 똑바른지 확인sudo nginx -t

오류#2

아무래도 아까 conf 설정이 맘에 걸린다.

sudo vi /etc/nginx/conf.d/default.conf 로 접속

아래사진은 원본코드다.여기서 모두 주석처리 후 include 코드를 작성했다.

그래도 오류가 난다..

설정한 경로에 폴더가 존재하지않아서일수도 있을거란 생각이들기도한다..

 

우선 설정파일을 모두 다시 원래대로 복구 시킨 뒤 nginx -t를 명령해보니 정상적이라 뜬다.

해결#2

nginx.conf 파일은 건드리지않았다.

conf.d 파일의 server 블럭을 주석처리하고

sites-enabled의 conf파일을 참조하도록 설정하니

빌드한 리액트 앱이 떴다!

 

 

mysql 설치하기

편의를 위해 루트권한으로 변경했다 sudo su

mysql 설치 yum localinstall https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm

mysql 설치2

yum install mysql-community-server

 

https://stackoverflow.com/questions/70993613/unable-to-install-mysql-on-centos7

 

Unable to install MySQL on CENTOS7

I'm on CentOS 7(CentOS Linux release 7.9.2009 (Core)) starting from scratch on a new server trying to install MySQL (7 or 8). I have followed my steps -which I have successfully completed many tim...

stackoverflow.com

해당 답변을 쭉 따라했다.

 

systemctl start mysql 실행

초기 비밀번호 확인 grep 'temporary password' /var/log/mysqld.log

 

실행해서 임시 비밀번호로 실행 mysql -u root -p

임시비밀번호로는 쿼리실행에 제한이 있어서 비밀번호를 변경해줘야함.

아래 코드 실행하면 변경할 비밀번호로 변경됨

ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '변경 비밀번호';

 

그리고 워크벤치로 접속하기위해 외부접속 권한 허용하기.

mysql 접속 뒤

유저 생성

CREATE USER 'root'@'%' identified by 'Wkrwjs12#';

권한 허용

GRANT ALL PRIVILEGES ON *.* to 'root'@'%';

설정 적용

flush privileges;

 

이제 앱을 빌드하고, ec2에서 git clone 해준 뒤 배포하는 과정을 진행하면 된다.

정상적으로 앱을 배포하고 서버와 통신함을 확인하였다.

이제 jenkins를 통해 CI/CD를 구축해보자

우선 ec2의 스왑파일을 설정하여 부족한 메모리를 가상메모리로 채워주는 작업을 했다.

기본스펙으로는 젠킨스의 가용량을 따라갈수가 없어서라고 하는 사전작업이라 한다..

sudo dd if=/dev/zero of=/swapfile bs=128M count=16

스왑영역설정

sudo mkswap /swapfile

스왑파일 추가

sudo swapon /swapfile

성공했는지 확인

sudo swapon -s

부팅 시 스왑파일 사용 설정

sudo vi /etc/fstab 로 접속

코드 추가

/swapfile swap swap defaults 0 0

메모리 확인

free

 

Comments