웹 사이트 배포

뚜우웅이·2023년 8월 7일
0

SpringBoot웹

목록 보기
19/23

AWS EC2 생성


리전 위치를 서울로 변경해줍니다.


서비스에서 ec2를 검색한 후 클릭해줍니다.


인스턴스 시작을 클릭합니다.


이름을 설정해줍니다.

프리티어로 사용 가능한 Ubuntu 22.04 LTS를 선택해줍니다.


새 키 페어 생성 버튼을 클릭합니다.

RSA 방식으로 .pem 형태의 키를 생성해줍니다.

내 PC에서만 SSH 접속할 수 있도록 내 IP주소/32로 설정합니다.
/32 부분은 IPv4 주소 32bit 전체가 일치해야 한다는 뜻입니다.
여러 IP를 등록할 수 있고 이 값은 수정이 가능합니다.

HTTP, HTTPS 프로토콜은 아무곳에서나 접근 가능하도록 0.0.0.0/0 값을 그대로 둡니다.


인스턴스 시작 버튼을 클릭해줍니다.

EC2 인스턴스를 생성하면 고정 IP가 아닌 동적 IP를 할당 받습니다.
즉 인스턴스를 중지했다가 다시 실행하게 되면 IP가 바뀌는 문제가 발생합니다.
이를 해결하기 위해 고정 IP를 할당해주는 탄력적 IP를 사용해줍니다.


탄력적 IP주소 할당을 클릭하여 설정해줍니다.
그 후 만들었던 인스턴스와 탄력적 IP주소를 연결해줍니다.

ssh 연결

git bash를 실행해서 pem 파일을 홈 디렉터리로 옮겨줍니다.
다운로드한 .pem 파일은 다운로드 폴더에 있을 것입니다.
git bash에서 mv Downloads/*.pem ~ 을 입력하여 홈 디렉터리로 옮겨줍니다.

이제 서버에 연결을 하기 위해서 cd ~ 명령어를 입력해 홈 디렉터리로 이동 후
ssh -i 파일명.pem ubuntu@서버 퍼블릭 IPv4 주소 이 명령어를 통해 연결해줍니다.

연결 종료 명렁어는 exit입니다.

Ubuntu에서 패키지를 설치하기 전에 아래 명령어를 입력해줍니다.
sudo apt update
sudo apt upgrade

java 설치

sudo apt-get install openjdk-11-jdk

터미널에 위 코드를 입력하여 java11을 설치해줍니다.

java -version

위 명령어를 입력하여 java가 설치되었는지 확인해줍니다.

타임존 설정

디폴트 타임존은 미국으로 되어 있을 것입니다.
서버 시간이 맞지 않으면 웹사이트에서 출력되는 시간도 맞지 않게 됩니다.
아래 명령어를 입력하여 타임존을 서울로 변경해줍니다.
sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

date 명령어를 입력하여 시간이 제대로 나오는지 확인해줍니다.

RDS 생성

RDS는 AWS에서 지원하는 클라우드 기반 관계형 데이터베이스 서비스입니다.
유저가 사용하기 쉽도록 DB 기능을 자동화 시켜주는 기능입니다.

검색창에 RDS를 입력하여 클릭한 후 데이터베이스 생성을 클릭해줍니다.

템플릿은 프리티어로 설정해줍니다.


추가구성에서 데이터베이스 이름을 지정하지 않으면 데이터베이스를 생성하지 않습니다.

여기서 설정한 정보를 이용하여 실제 DB에 접속하게 됩니다.

보안그룹 설정

rds를 사용하기 위해서는 보안그룹을 설정해야합니다.

파리미터 생성

왼쪽 메뉴바에서 파라미터 그룹을 클릭해줍니다.

파라미터 그룹 생성을 누른 뒤 설정을 해줍니다.
파라미터 그룹 패밀리는 생성한 DB버전에 맞게 설정을 해야 합니다.
MariaDB 10.6.14 버전으로 DB를 생성하였기 때문에 10.6버전을 선택해줍니다.

파라미터 그룹이 생성 되었으면 클릭 후 편집을 눌러줍니다.

아래와 같이 파라미터 편집을 해줍니다.


타임존을 서울로 변경해줍니다.

char로 검색해서 나오는 6개의 항목을 모두 utf8mb4로 지정해줍니다.
utf8과 utf8mb4의 차이는 이모지 저장 가능 여부입니다.
utf8mb4는 이모지를 저장할 수 있습니다.

적용


왼쪽 메뉴바에서 데이터베이스를 클릭한 후 DB 선택 후 수정을 눌러줍니다.

데이터베이스 옵션을 변경해줍니다.


수정사항을 적용할 시간을 즉시 적용으로 설정해줍니다.

RDS 접속

생성했던 데이터베이스를 클릭한 후 보안 그룹을 클릭해줍니다.

MYSQL/Aurora 유형을 선택한 후 pc의 아이피 주소를 넣어줍니다.

DBeaver를 이용하여 MariaDB를 연결해줍니다.

새 데이터베이스 연결을 클릭해줍니다.

ServerHost는 RDS 연결 및 보안에 있는 엔드포인트 값을 붙여 넣어주고 Database에는 DB이름을 넣어줍니다.
Username은 RDS 구성에 있는 마스터 사용자 이름을 넣어주고 Password는 설정한 비밀번호를 입력해줍니다.

show variables like 'c%';
위 쿼리를 입력하여 utf9mb4가 잘 반영되었는지 확인해줍니다.

아직 반영이 덜 되었기 때문에 rds를 재부팅해줍니다.

아직도 character_set_database, collation_database 두 가지는 RDS 파라미터 그룹으로는 변경이 안 된다고 합니다.
쿼리를 입력해서 직접 바꿔줍니다.

ALTER DATABASE 데이터베이스명
CHARACTER SET = 'utf8mb4'
COLLATE = 'utf8mb4_general_ci'


이제 다 utf8mb4로 변경되었습니다.

EC2에 MySQL 설치

ssh에 접속을 한 뒤에 아래 명령어를 입력해줍니다.

sudo apt install mariadb-server

mysql -V를 입력하여 설치된 MariaDB의 버전을 확인할 수 있습니다.

접속하기 위한 명령어

mysql -u {유저명} -p -h {DB의 엔드포인트}

show databases;를 입력하여 접속이 잘 되었는지 확인해줍니다.

springweb이 잘보입니다.

Maven 설치

Maven
프로젝트 빌드, 의존성 관리, 배포 등 다양한 작업을 자동화하는 도구입니다.

sudo apt install maven을 입력하여 설치를 해줍니다

mvn -v명령어를 입력하여 버전을 확인해줍니다.

DB연결

Intellij 오른쪽에 있는 데이터베이스를 클릭한 후 아래와 같이 클릭을 해줍니다.


Host에는 복사한 엔드포인트를 붙여 넣어줍니다.
User와 Password 에는 생성할 때 설정한 마스터 이름과 암호를 입력해줍니다.
Database에는 생성할 때 추가구성에서 설정한 이름을 넣어줍니다.

apllication.properties 수정

spring.datasource.url=jdbc:mysql://엔드포인트:3306/db이름(myselectshop)
spring.datasource.username=마스터이름
spring.datasource.password=패스워드
spring.jpa.hibernate.ddl-auto=update

EC2에 git 설치

sudo apt-get install git
위 명령어를 입력해 git을 설치해줍니다.

git --version 이 명령어를 통해 설치된 git의 버전을 확인할 수 있습니다.

이제 프로젝트를 넣을 디렉터리를 생성해줍니다.
mkdir ~/app && mkdir ~/app/step

cd ~/app/step step 디렉터리로 이동해줍니다.


git 프로젝트 주소를 복사한 후 git clone 복사한 주소 명령어를 입력해줍니다.

cd 프로젝트명을 입력하여 이동해줍니다.

ls 명령어를 치면 현재 디렉터리에 있는 목록을 볼 수 있습니다. 여기서 mvnw의 권한을 변경해줍니다.
chmod u+x mvnw mvnw파일에 대해서 유저에게 실행 권한을 주는 명령어입니다.

./mvnw package 명령어를 입력하여 jar파일을 생성해줍니다.
jar 파일 생성중에 목표가 지정되어 있지 않다는 오류가 발생했습니다.
이를 해결하기 위해 프로젝트 pom.xml 파일에 bulid 아래에<defaultGoal>package</defaultGoal> 이 코드를 추가해줍니다.

프로젝트를 개발할 때 java 버전이 17이고 ubuntu에 설치되어 있는 java의 버전은 11이기 때문에 버전을 17로 변경해줍니다.

sudo apt update
sudo apt install openjdk-17-jdk

수정한 프로젝트를 커밋 및 푸쉬를 해줍니다.

ec2에서 rm -rf myhome을 입력하여 디렉터리를 삭제해준 뒤
git clone 프로젝트 주소 명령어를 입력하여 프로젝트를 다시 가져와줍니다.
다시 mvnw의 권한을 변경해준 뒤 jar파일을 생성해줍니다.


빌드에 성공했다는 메시지가 나왔습니다.

cd target 명령어를 입력하여 target으로 이동 후 ls -al을 입력하면 jar파일이 생성된 것을 확인할 수 있습니다.

java -jar jar파일이름을 입력해주면 서버가 실행됩니다.

보안그룹 수정

실행되고 있는 서버로 연결하기 위해서는 8080 포트를 설정하여 url을 알고 있는 사용자는 누구나 접속할 수 있게 해줍니다.

회원가입 안 되는 오류 수정

현재 상태에서는 회원가입을 해도 그 정보가 DB로 넘어가지 않아 로그인이 되지 않는 문제가 발생합니다.

rds role 테이블에 데이터를 추가해줍니다.

insert into role(id,name)
values(1,'ROLE_USER');

insert into role(id,name)
values(2,'ROLE_ADMIN');

값이 제대로 들어갔는지 확인해줍니다.

select *
from role;

다시 서버를 실행해줍니다.

cd ~ 명령어로 홈 디렉터리로 이동 후
ssh -i key ubuntu@ip주소 명령어로 연결해준 뒤
cd /app/step/myhome/target target 디렉터리로 이동해줍니다.
java -jar jar파일 명령어로 서버를 실행해줍니다.

ec2 ip주소:8080으로 접속을 해줍니다.

접속이 잘 되고 회원가입까지 가능한 것을 확인할 수 있습니다.

profile
공부하는 초보 개발자

0개의 댓글