일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 자연수 뒤집어 배열로 만들기
- dotenv
- prettier
- s3확장자
- max_allowed_packet
- 프로그래머스
- AWS
- next #middleware
- 커밋 한번에
- EC2
- useReducer
- interactive_timeout
- express
- reacts3
- Node
- 코드정렬
- react
- elasticIP
- utf8mb4
- 코딩테스트
- 자동완성방지
- 부족한 금액 계산하기
- 리액트코드정렬
- 제일 작은 수 제거하기
- 리액트
- axios
- .env
- vscode
- MySQL
- 프리티어
- Today
- Total
Sungtt
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
'프로젝트 > 개인 프로젝트 [공책게임]' 카테고리의 다른 글
https 과정 (0) | 2022.09.27 |
---|---|
npm run build 시 permission denied (0) | 2022.09.23 |
던전을 올라가는 목적성을.. (0) | 2022.08.21 |
랭킹페이지 새로고침 시 내 순위가 안나오는 오류 (0) | 2022.08.19 |
랭킹 페이지네이션 UI 짧은 고찰.. (0) | 2022.08.18 |