TOP
class="layout-aside-left paging-number">
본문 바로가기
프로그래밍 및 기타/Cloud : AWS

[Cloud] aws: Tomcat 서버와 DB 연동하기

by 기록자_Recordian 2025. 2. 25.
728x90
반응형
이전 내용
 

[aws] 도커(Docker) 란?

이전 내용 [aws] AMI(Amazon Machine Image) 복제이전 내용 [aws] Elastic IP 할당받아 인스턴스에 연결하기이전 내용 [aws] VPC 피어링(peering)이전 내용 [aws] CloudFront이전 내용 [aws] IAM 계정 생성하기이전 내

puppy-foot-it.tistory.com


Tomcat 서버와 DB 연동하기

 

◆ 대략적인 순서

 VPC 설정 편집 > AWS RDS DB 생성 > 프라이빗 서브넷 생성 > 서브넷그룹 생성 > 보안 그룹 생성 > Workbench > 

 

[aws] 데이터베이스: RDS 생성하기

이전 내용 [aws] default.conf 란?이전 내용 [aws] 3-Tier의 첫걸음: 도메인 톰캣 화면으로 바꾸기이전 내용 [aws] 프라이빗 서브넷 생성하기(feat. NAT 게이트웨이)이전 내용  [aws] Bastion Hub 만들기이전 내

puppy-foot-it.tistory.com

 

가장 먼저 VPC 설정 편집에서 'DNS 호스트 이름 활성화' 체크 필수

서브넷 생성

 

[RDS] - 서브넷 그룹 생성

 

서브넷 그룹 생성 시에는 이중화를 위해 가용 영역에 두 개 추가

 

이제 [RDS] 에서 데이터베이스 생성

 

보안그룹도 생성하는 데, 인바운드 규칙은 워크 벤치 연결을 위해 모든 트래픽,

DB를 위해 MYSQL/Aurora 3306 포트 추가

 

인스턴스 생성

 

 

RDS에서 데이터베이스와 EC2에서 인스턴스 생성을 완료했으면, MySQL Workbench로 넘어가서 새로운 연결을 생성

 

이제 DB 생성을 할 수 있다.


Work Bench 연결 안 될 경우

 

만약에, Work Bench 연결이 안 되는 경우에는, 우분투를 사용하여 DB를 생성하는 방법도 사용할 수 있다.

 

◆ 대략적인 순서

우분투 인스턴스 생성 > Xshell 8 우분투 연결 > 마리아 DB 설치 > 마리아 DB 연동 > DB 생성 > 테이블 생성 > Xshell Bastion 서버 접속 > JDBC 드라이버 설치 > context.xml 수정 (엔드포인트) >  web.xml 수정 > login.jsp 생성 > css 폴더 생성 > style.css 파일 생성

 

 

[aws] ubuntu(우분투) Xshell 8 연결하기

이전 내용 [aws] 데이터베이스: RDS 생성하기이전 내용 [aws] default.conf 란?이전 내용 [aws] 3-Tier의 첫걸음: 도메인 톰캣 화면으로 바꾸기이전 내용 [aws] 프라이빗 서브넷 생성하기(feat. NAT 게이트웨

puppy-foot-it.tistory.com

 

Ubuntu 인스턴스 생성

 

Ubuntu 인스턴스 생성 후, XShell 을 통해 우분투로 연결한 뒤 MariaDB를 설치한다.

# 우분투 MariaDb 설치
설치 전 패키지 업데이트
sudo apt update
sudo apt upgrade

#서버, 클라이언트 설치

# MariaDB 서버 설치
sudo apt install mariadb-server

# MariaDB 클라이언트 설치
sudo apt install mariadb-client


mysql -u admin -p -h 데이터베이스 엔드포인트

 

MariaDB가 설치된 이후에는 DB > 테이블을 생성하고, 테이블에 데이터를 넣고 조회해 본다.

# (DB 접속 후) DB 생성
CREATE DATABASE mydb;
USE mydb;

# 테이블 생성 (테이블명 users)
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE
);

# 테이블에 데이터 넣기
INSERT INTO users (username, password, email) 
VALUES 
('user1', 'password123', 'user1@example.com'),
('user2', 'securepass456', 'user2@example.com');

# 테이블 데이터 조회
SELECT * FROM users;


톰캣 서버에 Maria DB 연동하기
+ 내 홈페이지 출력되게 바꾸기

 

Xshell 8에서 베스쳔 서버(Bastion) 켜고 하단의 명령어를 한 줄씩 입력해 주면 된다.

cd 는 경로를 이동하는 명령어 인데, 해당 경로 내의 어떤 폴더 및 파일이 있는지 확인하기 위해 ls 단축키를 활용하면 좋다.

ssh -i 키파일 유저명@프라이빗 서브넷 프라이빗 ip 주소

# 루트 이동
sudo -i

cd /
cd home/
cd tomcat/
cd apache-tomcat-9.0.100/
cd lib

# jdbc 드라이버 설치 명령어
curl -O https://downloads.mariadb.com/Connectors/java/connector-java-3.2.0/mariadb-java-client-3.2.0.jar

# 설치 확인
ls

 

위 과정을 거치고 나면 톰캣 폴더의 라이브러리(lib) 폴더 내에 'mariadb-java-client-3.2.0.jar' 라는 파일이 생성(정확히는 다운로드)된다.

 

◆ context.xml 내용 바꾸기

그리고나서 경로를 이동해

apache-tomcat-9.0.100 폴더 내의 conf 라는 폴더에 접근한 다음,

context.xml 이라는 폴더를 열어 원래 있던 내용을 지우고 하단의 내용으로 바꿔 준다.

<?xml version="1.0" encoding="UTF-8"?>

<Context>
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <Resource name="jdbc/mydb"
              auth="Container"
              type="javax.sql.DataSource"
              maxTotal="100"
              maxIdle="30"
              maxWaitMillis="10000"
              username="DB 계정명"
              password="DB 비밀번호**"
              driverClassName="org.mariadb.jdbc.Driver"
              url="jdbc:mariadb://AWS 데이터베이스 엔드포인트:3306/mydb"/>
</Context>

 

 

◆ web.xml 내용 바꾸기

이번에는 apache-tomcat-9.0.100/webapps/ROOT/WEB-INF 폴더 내의 web.xml 파일을 열어 코드 내용을 바꿔준다.

(해당 코드는 문제 있으므로 하단에 나오는 전체 코드 복사 붙여넣기)

   <!-- MariaDB DataSource 설정 -->
    <resource-ref>
        <description>MariaDB DataSource</description>
        <res-ref-name>jdbc/mydb</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>

    <!-- login.jsp 파일을 루트 URL에 매핑 -->
    <servlet>
        <servlet-name>LoginPage</servlet-name>
        <jsp-file>/login.jsp</jsp-file>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginPage</servlet-name>
        <url-pattern>/</url-pattern> <!-- 루트 URL로 매핑 -->
    </servlet-mapping>
  </web-app>

 

◆ 내가 만든 홈페이지 적용하기 (+ css 적용하기)

webapps/ROOT 내에 login.jsp 파일 생성하기 (내가 만든 페이지의 jsp 파일 내용 붙여넣기)

+ 해당 폴더에 css 라는 하위 폴더 만들기

+ css 폴더 내에 style.css 파일 만들기 (내가 만든 페이지의 css 파일 내용 붙여넣기)

 

[JSP] 기본 문법: 로그인 페이지 만들기 (+HTML, CSS)

이전 내용 [JSP] 이클립스에서 JSP 파일 만들어 실행하기이전 내용 [JSP] JSP 개념, IDEJSP란? ◆ JSP 정의 JSP는 Java 기반의 서버측 웹 개발 기술로, 동적인 웹 페이지를 생성하는 데 사용된다. HTML에 Jav

puppy-foot-it.tistory.com

 

그런데, 이렇게 실행을 하게되면 JSP 파일과 CSS가 연동이 안 되는 문제가 나타난다.

그래서 아까 web.xml의 마지막 줄의 </web-app> 부분을 삭제 후 아래 코드를 마지막 줄에 붙여넣는다. 

 

[JSP CSS 연동되게 하는 코드]

web.xml 가장 마지막 줄에 붙여넣기

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/css/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/js/*</url-pattern>
</servlet-mapping>
</web-app>

▶ 이 태그는 특정 URL 패턴에 대해 어떤 서블릿이 요청을 처리할지를 정의하는 부분이다.
여기에서는 default라는 이름의 서블릿이 정의되어 있음을 나타내며, 이 서블릿은 대개 기본 서블릿으로 사용된다.

/css/* 및 /js/* 패턴은 해당 서블릿이 이 경로로 들어오는 요청을 처리하도록 연결된 것으로,
/*는 모든 하위 경로를 포함할 수 있음을 의미한다. 예를 들어, /css/style.css나 /js/app.js와 같은 요청이 있을 때 default 서블릿이 이 요청을 처리하게 된다.

 

[web.xml 전체 코드]

   <!-- MariaDB DataSource 설정 -->
    <resource-ref>
        <description>MariaDB DataSource</description>
        <res-ref-name>jdbc/mydb</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>

    <!-- login.jsp 파일을 루트 URL에 매핑 -->
    <servlet>
        <servlet-name>LoginPage</servlet-name>
        <jsp-file>/login.jsp</jsp-file>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginPage</servlet-name>
        <url-pattern>/</url-pattern> <!-- 루트 URL로 매핑 -->
    </servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/css/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/js/*</url-pattern>
</servlet-mapping>
</web-app>

 

그리고나서 내 도메인으로 들어간 다음, 앞서 만든 user 테이블 중 하나의 계정(emal 주소, 비밀번호)를 입력하고 login 버튼을 누르면!

 

(해당 JSP, CSS 는 교수님께서 실습용으로 만들어 놓으신 거 받아다 썼다. 이번 수업 시간엔 HTML, CSS 문법보다는 DB 적용이 더 급했으므로.)


다음 내용

 

[Cloud] Oracle Virtual Box 설치 및 실행

이전 내용 [aws] Tomcat 서버와 DB 연동하기이전 내용 [aws] 도커(Docker) 란?이전 내용 [aws] AMI(Amazon Machine Image) 복제이전 내용 [aws] Elastic IP 할당받아 인스턴스에 연결하기이전 내용 [aws] VPC 피어링(pe

puppy-foot-it.tistory.com

728x90
반응형