책보고하면 돈날아간다!
[AWS 책보고 할만한거]
1장 - aws주요서비스
2장 - 보안, 방화벽
3장 - 스토리지, 데이터백업, (스냅샷은 복사비용발생할수도있음)
7장 - 로드밸런싱
9장 - CDN 서비스
10장 - IAM 가상계정관리
[AWS 로그인 후 메인화면]

로그인하면 이렇게 뜬다
애플리케이션 : 서버 생성하면 뜸
AWS Health : 보안정보가 뜸 / 문제발생시 뜸
비용 및 사용량 : 제한 꼭 걸어둬야함 / 안걸어두면 난리남! 내 지갑 지켜!
[서버 위치 설정]

가장 먼저 할 것 : 서버의 위치를 잡기
우상단 아시아 태평양 (시드니) 클릭 > 서울 클릭
다른 지역으로 세팅하면 속도 떨어짐!
[EC2 서버 만들기]


좌상단 메뉴 > 컴퓨팅 > EC2 > 클릭
또는 검색에 EC2 검색
쉽게 얘기하면 도커로 사용자 컨테이너 하나 만들어주는것과 같은 역할을 함
대시보드 들어가기

기본으로 보안그룹 1로 설정돼있음
만약 L2 L3장비 추가하면 늘어남

인스턴스 시작 클릭
이름 : 서버이름 입력
여기 유료가 잔뜩있음
나 Centos쓰는데 안뜸 -> 찾아야함
뭣도모르고 인터넷보고하면 요금 뚜두러맞음

이렇게 프리티어 사용 가능이라고 써있어야 무료임
나머지는 다 유료
Centos 검색하면 다 시간당 요금으로 유료만 뜸

쭉내리다가 보면 이거 있음

프리티어여도 매월 750시간 이후로 요금 발생하니 750 시간 후에 삭제해야함
750시간 = 31.25일
근데 이러면 걍 무료아닌가?싶은데 잘모르겠다 찾아보세요
서버꺼둔다고 시간안나가는거아님! 주의하기

이건 운영체제 비용이고 네트워크 비용은 또 별도임
nano micro small medium... 용량 메모리 cpu할당 다 다름
지금구독하기 선택
그러면 화면에 좌라라락뜸

나 이거 선택 안했는데 t3 미디엄 선택됨

프리티어 사용가능이라고 써있는 t2.micro선택하기
[클라우드 상식]
- VPC or VPN
- IPv4 or IPv6
- 네트워크 보안장비 (T1, T2, T3, T4, E1, E2, E3) 오른쪽으로 갈수록 비싸짐 지금 우리가 선택한건 t2
- EC2 - Web Server
- CDN - File Server (컨텐츠 전송 전용 서비스)
- Putty -> key 생성 (보안)

새 키 페어 생성 클릭

푸티를 사용하는 경우 프라이빗 키파일 형식 .ppk 선택하기
나도 .ppk로 하겠음
키페어생성 클릭

자동으로 다운됨
이거 잊어버리면 절단난다~!
꼭 안전한 곳에 잘 저장해두기

네트워크 설정 편집 클릭
VPC : 자동으로 할당됨 (서버아이피)

서브넷, 퍼블릭IP자동할당까지 그냥 냅두기

기본으로 세팅된 값은 ssh인데 ftp나 다른것들 쓸거면 보안 그룹 규칙 추가 세팅해야함

gp3은 3000IOPS 초과하면 비용발생
입출력 장치 사용에 따라 달라짐 주의
그래서 gp2 사용할게용

30기가로 바꿔주고 gp2로 바꿔줌
10기가도 모자름 운영체제만해도 용량이 짱크기때문

새 IAM 프로파일 생성 클릭

얘네는 기본베이스임
역할 생성 클릭

이 계정 = 내 aws 계정
우상단 내 아이디 클릭하면 거기에 계정 ID 숫자 띠리릭 나오는데 그거임
일반적으로 회사에선 이렇게 사용안함
사수가 권한 설정해서 사용자 지정 신뢰 정책으로 만들어서 줌
우리는 일단 사진처럼 AWS 계정으로 만듦~!
다음!
권한 정책 세팅할 수 있음
필터링 기준 유형 : AWS 관리형 - 직무
선택
Billing : 요금 발생 체크할 수 있음

권한 이렇게 체크!
다음!

밑에 그대로두고 역할생성 클릭!

잘생성됐다!
다시 전 페이지로 돌아가기


이거 그냥 냅둬 나중에 세팅할 수 있음
아~~~~무것도 안할거임 다 내려 내려 쭉
따로 건들거 읎.써.요.

인스턴스 시작 클릭!

결제 및 프리 티어 사용 알림 생성 클릭!

알림 기본 설정 편집해서 이메일 넣기

발생 비용은 여기서 확인 가능

이거도 설정 가능

예산 생성 클릭!

이메일 수신자 설정하고 예산 생성 클릭!

잘 만들어졌다!
GCP나 네이버클라우드는 비용나오면 연락오는데
AWS는 세팅안하면 돈내~ 이럼 ...
꼭 세팅하기!

여기 대시보드 들어가서 내리다보면

이거 URL 복사해두기
계정 별칭 생성 클릭!
그러면 URL도 바뀜

사용자 탭으로 이동
원하는 IAM 사용자 생성가능

사용자생성 클릭!

체크항목 설정 다르니 잘확인하기
다음!

루트를 되찾을때 사용할수있는 권한임
요거만 일단 체크하고 다음!

사용자 생성!

.csv파일 다운로드해서 잘 보관해두기
크롬으로 세팅했으니 엣지로 테스트해보기
나는 사파리로 테스트할거임
콘솔로그인URL로 접속


잘 로그인됐다~!
시드니 -> 서울 변경

부사수도 비용보게하는 법
결제 및 비용 관리 들어가도 권한설정 안해놔서 들어가면 아무것도 못봄
루트로가서 풀어줘야만 볼 수 있음

루트로와서 계정 클릭
쭉쭉쭉 내리다보면 결제정보 액세스 있음


활성화하면 볼 수 있음
이제 IAM으로 들어갔을때 잘 보임
IAM으로 EC2를 들어가면 루트로 만들어둔 서버가 안보임!!!

왜 ? 미국이니까~

서울로 변경하면 바로 보임
엉뚱한짓 하지말고 지역 잘 보자~!
근데 이거 지울거야... Centos 9 유료야 ㅠ
완전히 프리티어 만들자
[서버 삭제]
인스턴스 중지해도 비용 발생함 => 완전히 지워야함
EC2 > 인스턴스 > 인스턴스 > 서버 체크하고 상단 인스턴스 상태 클릭 > 인스턴스 종료(삭제) 클릭

종료 삭제 누르면 시간이 좀 걸린 후 삭제됨
다음에 다시 들어와서 삭제된거 확인해야함

[새로운 서버 만들기]
인스턴스 시작 클릭!

기본설정된거 프리티어 사용가능한거로 냅두기

인스턴스 유형 냅두고 키페어는 아까 만들어둔거 사용
네트워크 설정 냅두고

30기가 gp2로 설정
인스턴스 시작 클릭!

새로 만든 서버를 클릭했을때 아래에 뜨는 퍼블릭 IPv4주소를 확인하기
[서버 실행]
푸티없는경우

상단 CloudShell 클릭

하단에 쉘뜸

연결 클릭!
그리고 또 연결 클릭!

ec2-user는 아마존이 주는 다똑같은 아이디임
루트로 바꾸는법
sudo -s
[root@ip-172-31-43-67 ec2-user]# aws iam list-users
Unable to locate credentials. You can configure credentials by running "aws configure".
[root@ip-172-31-43-67 ec2-user]# aws configure
AWS Access Key ID [None]: ^C
이거는 키가 필요함 아직 없기때문에 그냥 냅둔다 일단 나중에 세팅
[인바운드 아웃바운드 규칙]
인스턴스 > 서버 클릭 > 보안 > 인바운드규칙, 아웃바운드 규칙 있음
보안그룹 클릭

여기에 보안그룹 클릭

인바운드 규칙 편집 클릭

여기에 규칙 추가하기

HTTP 추가, 소스는 IPv4

http://아이피
그러면 서버 아이피로 http 들어가면 작동됨!
https://아이피
이거는 안됨
아직 추가 안해서그럼

HTTPS도 추가하기
근데 키도 있어야함 얘는!!!
포트 작동 확인하려면
https://아이피
이게아니라
http://아이피:443
이렇게 확인해야함
FTP도 추가하고싶은데 안보임
그러면 사용자지정 TCP로 21포트 /포트바꾸고싶으면 맘대로..

이런식으로 추가해주면 됨
[맥을 위한 ppk -> pem 키파일 변환, 맥 터미널로 접속]
아아아아아악!!!!!!!!!끼에에에엑!!!!!!!!!!T0T!!!!!!!!@!@#!@#!@#!@#!!!!
맥은 인스턴스만들때 키를 ppk가 아니라 pem으로 만들었어야했다
수정하는거는 난 못찾겠다
대신 다른 방법이있다 ppk를 pem으로 변환...
Homebrew가 설치되어 있고 putty가 안깔려있는 경우
brew install putty
puttygen /path/to/your-key.ppk -O private-openssh -o /path/to/save/your-key.pem
ex)
puttygen /Users/nayeong/Documents/aws_Server.ppk -O private-openssh -o /Users/nayeong/.ssh/aws_pem_key.pem
권한 설정
chmod 600 /Users/nayeong/.ssh/aws_pem_key.pem
이 pem키로 접속하는 방법
ssh -i /Users/nayeong/.ssh/aws_pem_key.pem ec2-user@서버아이피

해냈다 터미널로 aws 접속!!!!
🥳난 최고야 개멋쪄 난 멋있는 여자 난 짱이다 개멋있다 최고다🥴
기본사용자인 ec2-user로 로그인이 된 상태에서
sudo -s
사용해서 루트로 접속
who
접속중인 사용자 확인 가능
[본격적인 서버 세팅]
[web]
cd /home
yum install httpd
dnf install httpd
둘 중 하나로 설치
rpm -qa | grep dnf
이거 해보면 dnf가 깔려있어서 사용할수있는거임
안깔려있으면 dnf먼저 깔거나 yum으로 설치해야함
dnf로 해볼게염
dnf install httpd
잘깔린다
systemctl start httpd
웹 돌아감
netstat -ano
이거해서 80포트 돌아가면 잘 되고있다는 뜻
systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; preset: d>
Active: active (running) since Mon 2025-06-09 06:50:16 UTC; 18min ago
(running) 떠있으면 잘 돌아가는중인거임
아파치 환경설정
vi /etc/httpd/conf/httpd.conf
:set nu
47번 라인에 기존 Listen 80 있음
아래에 Listen 443 쓰기 => https 포트

:wq
systemctl stop httpd
systemctl start httpd
[FTP]
dnf install vsftpd
vi /etc/vsftpd/vsftpd.conf
:set nu

100, 101, 103번째 줄 주석 풀기

114번 줄은 YES로 변경
123번 줄은 주석처리
이렇게하면 IPv6 -> IPv4로 변경됨

125, 126, 127번째줄 추가 => 패시브모드
:wq
저장하고 나오기
vi /etc/vsftpd/chroot_list
사용자리스트에 사용자 추가하기
systemctl start vsftpd
netstat -ano
해서 ftp 잘돌아가나 찾아보기 21번포트

웅 잘돌아간당 ^*^
50001~50005까지 설정한 패시브모드 풀어줘야함
인바운드규칙 추가

이렇게 다 따로 만들지말고
포트 번호 입력하는곳에 50001-50005
이렇게 넣으면 됨 ㅎㅎ;
[사용자 추가]
cd /home
useradd koo
(chroot_list에 추가했던 사용자 만드는거임)
passwd koo
패스워드 제대로 쓰기

사용자 파일이 잘 만들어진걸 볼 수 있음!

파일질라를 통해서 koo사용자로 ftp 접속해보기
잘 연결됨
만약 안되는 경우엔 전송설정 -> 능동형
설정한 다음 연결하기


업로드도 잘 되나 확인해보기~
잘들어갔당 ^*^
[Mysql]
인바운드규칙 추가

yum search mysql
dnf search mysql
있나 확인
다른 방법)


만약 mysql 사이트에 가서 repo를 다운받으면 여기서 핸들링해서 설치하기
레드햇 쓰면됨
만약 리눅스 버전을 몰라 -> Linux-Generic 을 사용
주의할 점 : 라이브러리 엉뚱한거 깔게될수도있음 그러면 문제터짐 그래서 운영체제 뭔지 먼저 잘 확인
아마존서버는 기본으로 레드햇계열이라 rpm으로 다운 가능
아마존에서 마이에스큐엘 다운하면 불안함 (강사님피셜)
불안하면 안깔랍니다 문제될수도있을거같아여 아 불안한데 진짜로
커뮤니티 서버로 할게요
https://dev.mysql.com/downloads/repo/yum/

이거 쓸게욤
다운로드 클릭

https://dev.mysql.com/get/mysql84-community-release-el7-1.noarch.rpm
요거 복사해두기
그리고 서버로 돌아가서
cd /home
mkdir down
cd down
pwd
wget https://dev.mysql.com/get/mysql84-community-release-el7-1.noarch.rpm

잘 다운됐다!
yum localinstall mysql84-community-release-el7-1.noarch.rpm
잘 깔렸다!
[mysql 지워]
와! 이거 8.4버전이라 유료임 ㅋㅋ
지워지워지워 다 지워
rpm -e mysql84-community-release-el7-1.noarch
설치 삭제
rm -drf mysql84-community-release-el7-1.noarch.rpm
rpm 파일 삭제
[mysql 8.0 깔기]
이게 무료임
이거 깔아...
여기서 찾아서 깔자

쭉내리다보면 눈빠지게 찾으면 이거있다...
우클릭 링크주소복사
https://repo.mysql.com/mysql80-community-release-el7-1.noarch.rpm
서버로 돌아가서
wget https://repo.mysql.com/mysql80-community-release-el7-1.noarch.rpm

여기 키도 하나 링크주소 복사해서 써야함
아마존이라 보안이 빡세다
https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
이거 복사해서
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
키임포트하기
yum localinstall mysql80-community-release-el7-1.noarch.rpm
설치
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
다시 키임포트하기
yum install mysql-community-server --skip-broken
어 원래 뭐 이것저것깔고해야하는데 선생님이 용량도 없고 연습하는거니까 그냥 이렇게할게요!함..
끼야아아아아아아악!!!!!
근데 이거도 아니었음
아마존에서 막아뒀다고 못쓰는거임
눈물의 삭제쇼
rpm -e mysql80-community-release-el7-1.noarch
rm -drf mysql80-community-release-el7-1.noarch.rpm
rpm -qa | grep mysql
이거로 잘 지워졌나 확인까지 꼼꼼히...
[진짜진짜 Mysql 8.0 ...]

진짜는 이거임 (제발...)
https://repo.mysql.com/mysql80-community-release-el9-4.noarch.rpm
dnf install https://repo.mysql.com/mysql80-community-release-el9-4.noarch.rpm
dnf install mysql-community-client
dnf install mysql-community-server
systemctl start mysqld
netstat -ln

잘 돌아가는중...
mysql -u root -p
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
임시패스워드 찾아서 넣어야함
vi /var/log/mysqld.log
4번째줄에 보면 임시패스워드 있음
[Server] A temporary password is generated for root@localhost: 임시패스워드
mysql -u root -p
임시비밀번호 넣으면 접속됨
루트 비밀번호 바꾸기
alter user 'root'@'localhost' identified with mysql_native_password by '비밀번호';
정책때문에 대문자 소문자 특수문자 길이 모두 만족해야함
flush privileges;
이제 나갔다 들어올때 변경된 비밀번호로 들어오면 됨
status

언어가 자동으로 잘잡혀있음

마지막으로 비용 잘 확인하자!
[파일질라로 SFTP 접속]

중요한것은 로그온유형 "키파일"

접속 성공!
[윈도우에서 푸티 키파일 사용법]
푸티 접속시 크리덴셜에서 키를 넣을수있음

나 근데 맥인데 어케해? 몰라 찾아보자...
이렇게하면 패스워드안넣어도됨 키로 자동 로그인된다
...
어 맥은 위에보면 키바꾸는거 있어... 그거 보고 ... 하자...
[Nginx]
Apache 멈춰!
systemctl stop httpd
React => WEB
Spring, Spring-boot (.war) => WAS
React => WEB
Spring, Spring-boot (.jar) => WAS 필요읎따
dnf install nginx
요즘은 아파치 안쓰고 엔진엑스쓴다잉
systemctl start nginx
http://서버아이피
접속하면 잘뜬다!

vi /etc/nginx/nginx.conf
:set nu

40번째줄은 도메인 나중에 넣기
41번째줄을 원하는 경로로 설정해서 사용하기

:wq

해당 디렉토리 만들어두고 거기에 파일 넣기

cd /home
chmod 755 koo

권한 풀어두기
이거 안풀어두면 404뜸
코드를 뜯어볼게 아니라 이 디렉토리 권한 확인!@!! 500이면 코드잘못임!!
vi /etc/nginx/nginx.conf
[jar 프로젝트 빌드]

이거로 프로젝트 빌드하기
프로젝트디렉토리/build/libs/site.msa-0.0.1-SNAPSHOT.jar
이렇게 jar 파일이생김
이거 이름 이쁘게 정리해서 파일질라로 올리기

올렸쪙
서버로 돌아가서
java -version
쳤을때 떠야함
안뜨면 설치하기
dnf install java-17*
java -version

잘깔림
[jar 실행]
여기서 올렸던 jar파일을 실행해보자
java -jar site.msa.jar

잘 실행된다!
http://서버아이피:8080/
접속하면

이런게 뜸
실제로 서버에 파일이 작동하고 있다는 뜻
컨트롤러에있는 api 호출해봤을때

이렇게 잘뜨면 성공
또 다른 jar 파일을 만들면
새로운 프로젝트를 만들어서 jar로 만들기 포트는 다른거로 만들어야함!
터미널 닫으면 끝남
백그라운드 상태로 돌려놔야함
sudo -s
루트로 접속
루트상태에서 다른 사용자로 접속
su 사용자이름
일반사용자로 jar 돌려도 됨
java -jar site.msa.jar
이거로 돌리면 터미널 닫았을때 같이 죽음
[jar 백그라운드 실행]
백그라운드로 돌리려면
nohup java -jar site.msa.jar &
이거 쳐서 작동시켜야 함
nohup: ignoring input and appending output to 'nohup.out'
이렇게 뜨는거는
nohup: ignoring input: nohup은 실행되는 프로그램이 터미널로부터의 입력을 받지 않도록 합니다.
즉, 이 프로세스에는 키보드 입력을 할 수 없다는 뜻입니다.
이는 백그라운드에서 독립적으로 실행되어야 하는 프로그램의 특성상 당연한 동작입니다.
appending output to 'nohup.out': 실행되는 프로그램이 표준 출력(stdout)으로 내보내는 모든 메시지(로그, 결과 등)는 현재 명령어를 실행한 디렉터리에 nohup.out이라는 파일로 저장됩니다.
만약 nohup.out 파일이 이미 존재한다면, 새로운 내용이 기존 내용 뒤에 추가됩니다 (appending)
라고 함..
그래서 페이지 새로고침해보니 잘 돌아가고있다
이제 터미널 종료해도 돌고있음!
짞짞짞
ps -ef
를 사용해서 현재 작동중인 프로세스들을 다 확인할 수 있음

요놈도 확인된다!
저 pid를 죽이면 죽음
kill -9 51223
이러면 주금~!
하... 하루 통째로 다썼다...
모두에게 도움이 되길 🥲
[삭제시 주의 : 함께 삭제해야할것들]

인스턴스 종료(삭제)할 때 보안그룹 얘네 default빼고 다 삭제해야함

키페어도 삭제하기

나중에 대시보드 봤을때 보안그룹 1만 남기고 다 0으로 되어있어야함!
잘 확인하자