aws 배포과정
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)"
-참고한 스오플 글
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