가비아 - Route53 <- EC2 인스턴스의 탄력적 IP 연결까지 완료!
EC2 서버에 Java 설치
# 순서
sudo apt-get update
sudo apt-get install openjdk-17-jdk
java -version
# 경로 확인
update-alternatives --list java
vi ~/.bashrc
# 하단에 다음 두 줄 적기
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
# 갱신
source ~/.bashrc
# 확인
echo $JAVA_HOME
EC2 서버에 Mysql 설치 및 외부 연동
sudo apt-get update
sudo apt-get install mysql-server
sudo ufw allow mysql
sudo systemctl start mysql
sudo systemctl enable mysql
sudo /usr/bin/mysql -u root
# 사용자 정보 확인
select user, host, authentication_string from mysql.user;
# DB 만들기
create database [DB 명];
show databases;
# 사용자 만들기 -> select 절 확인
create user '[username]'@'localhost' identified by '[mysql PW]';
flush privileges;
select user, host, authentication_stirng from mysql.user;
# 해당 DB를 사용할 계정에 권한 부여 -> select 절 확인
grant all privileges on [DB 명].* to '[username]'@'%';
flush privileges;
show grant for '[username]'@'%';
select user, host, authentication_string from mysql.user;
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address 127.0.0.1 -> 0.0.0.0 으로 수정
## exit 이후 정보 갱신
sudo systemctl restart mysql
깃허브 ssh-keygen 설정
# 순서
cd ~/.ssh
ssh-keygen -t ed25519 -C [깃허브 계정]
# ed25519: 타원 곡선과 비대칭 암호화를 모두 사용하는 암호 알고리즘
# 보안: ed25519는 256비트 고정된 크기로 생성되며, 일반적으로 더 안전하다.
# 성능: ed25519는 RSA보다 더 빠르고 효율적이다.
cat id_ed25519.pub
# 해당 내용을 git ssh 키로 등록한다.
# EC2서버에 git clone 성공!
NGINX 설정 및 Certbot HTTPS 적용
# Nginx 설치
sudo apt install nginx
# Nginx 작동 확인을 위한 상태 확인
sudo service nginx status
# Nginx 재시작
sudo service nginx restart

# 충돌 방지를 위하여 기존의 Certbot 삭제
sudo apt-get remove certbot
sudo apt-get update
sudo apt-get install letsencrypt
sudo apt install snapd
sudo snap install --classic certbot ## 시간 오래걸림 주의
sudo ln -s /snap/bin/certbot /usr/bin/certbot
# 버전 확인
certbot --version
# 도메인에 대한 인증서 발급
sudo certbot --nginx -d [도메인] -d [도메인],,
# 인증서 발급 내역 조회
sudo certbot certificates
# nginx 관련 프록시 설정
sudo vi /etc/nginx/sites-available/default
# sudo service nginx restart
Springboot 프로젝트 SSL 적용
# root 권한으로 실행
sudo su
# .pem 파일들이 있는 위치로 이동
cd /etc/letsencrypt/live/[도메인 명] # .pem 파일 4개 존재
# 해당 명령어를 실행하여 keystore.p12 파일 생성
openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out \
keystore.p12 -name tomcat -CAfile chain.pem -caname root
# 외부 권한을 허용하게끔 변경
chmod 777 keystore.p12
# 생성된 keystore.p12 파일을 /[git clone]/src/main/resources 로 이동
mv keystore.p12 /home/ubuntu
# 루트 권한 종료
exit -> cd -> /home/ubuntu 로 이동
# 해당 프로젝트의 resources 로 이동
mv /home/ubuntu/keystore.p12 ./
# yml 파일에 다음 내용 작성
#SSL
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-type=PKCS12
server.ssl.key-store-password=password
포트 포워딩 관련 명령어
# 포트 포워딩 상태 확인 명령어
sudo iptables -t nat -L -v -n
# 포워딩 규칙 추가 443 -> 8080
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8080
# 포워딩 규칙 추가 80 -> 8080
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
# nginx restart
sudo service nginx restart
etc