반응형
Notice
Recent Posts
Recent Comments

04-30 10:49
관리 메뉴

SaevOps

[CentOS7] Tomcat MariaDB 연동 본문

Opensource

[CentOS7] Tomcat MariaDB 연동

세브웁스 2022. 3. 18. 12:00
반응형

본 게시물은 톰캣, 마리아 디비가 설치되어 있는 환경에서 시작됩니다.

설치하지 않으셨다면 아래 링크를 통해 설치하고 오시길 바랍니다! 

 

톰캣 설치 : [CentOS7] MariaDB설치 yum install (tistory.com)

 

[CentOS7] MariaDB설치 yum install

시작하기 앞서 본 게시글은 VirtualBox로 CentOS7 환경에서 만들어졌음을 알립니다. VirtualBox _ CentOS7 가상머신환경으로 시작합니다. Window환경) putty를 사용하면 복사 붙여넣기 하기 용이합니다. ( 보통

shyen.tistory.com

마리아 디비 설치 : [CentOS7] MariaDB설치 yum install (tistory.com)

 

[CentOS7] MariaDB설치 yum install

시작하기 앞서 본 게시글은 VirtualBox로 CentOS7 환경에서 만들어졌음을 알립니다. VirtualBox _ CentOS7 가상머신환경으로 시작합니다. Window환경) putty를 사용하면 복사 붙여넣기 하기 용이합니다. ( 보통

shyen.tistory.com

 

1) 마리아디비 커넥터 설치

cd /home
wget https://dlm.mariadb.com/1965742/Connectors/java/connector-java-2.7.5/mariadb-java-client-2.7.5.jar
cp mariadb-java-client-2.7.5.jar /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/jre/lib
cp mariadb-java-client-2.7.5.jar /usr/share/tomcat/lib/

마리아 디비 jar파일을 다운로드하고 java/jre/lib에 복사해주기

톰캣의 라이브러리에도 jar파일 넣어주기

 

2) 환경변수 셋팅

vi /etc/profile
export JAVA_HOME=/usr/lib/jvm-exports/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64
export CATALINA_HOME=/usr/share/tomcat
PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/mariadb-java-client-2.7.5.jar:$CATALINA_HOME/lib/mariadb-java-client-2.7.5.jar

profile 맨 마지막에 추가해줌으로써 환경변수 경로를 설정해줄 것!

필자의 경우 자바 1.8.0 오픈소스 jdk를 사용 중

환경변수 새로고침

source /etc/profile

 

3) 연동 테스트 페이지 제작

vi /usr/share/tomcat/webapps/ROOT/test.jsp
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>mariadb jdbc connect test</title>
</head>
<body>
 
<%
Connection conn = null;
String url = "jdbc:mariadb://localhost:3306/test";
String id = "ksh";                     //MySQL에 접속을 위한 계정의 ID
String pwd = "1234";            //MySQL에 접속을 위한 계정의 암호
Class.forName("org.mariadb.jdbc.Driver");
conn = DriverManager.getConnection(url, id, pwd);
out.println("<h1>MariaDB DB 연결 완료 </h1>");
%>
 
</body>
 
</html>

mysql의 접속 계정과 비밀번호, url을 변경하고 실행시킵니다.

 

4) 데이터베이스 계정, 테이블 생성 및 데이터 집어넣기

mysql -u root

create database test;
create user ksh;
create user 'ksh'@'%' identified by '1234';
GRANT ALL privileges ON test.* TO ksh@'%';
flush privileges;

use test;
create table idol ( groupname varchar(50), membername varchar(50) );
create table Users (id int(5) primary key, name varchar(20), email varchar(20), country varchar(10), password varchar(15));
INSERT INTO Users (id, name, email, country, password) VALUES (1, 'person1', 'person1@apple.com', 'India', 'pankaj123');
INSERT INTO Users (id, name, email, country, password) VALUES (2, 'person2', 'person2@gmail.com', 'USA', 'david123');
INSERT INTO Users (id, name, email, country, password) VALUES (3, 'person3', 'person3@google.com', 'UK', 'raman123');
INSERT INTO Users (id, name, email, country, password) VALUES (4, 'person4', 'KSH@naver.com', 'KR', 'hihi123');

 

 

5) 테이블 확인용 JSP 생성

vi /usr/share/tomcat/webapps/ROOT/test2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
 
<!DOCTYPE html>
<html>
<head>
 
<style>
table,th,td {
        border:1px solid black;
        border-collapse:collapse;
        text-align: center;
}
</style>
 
<meta charset="UTF-8">
<title>select title here</title>
</head>
<body>
<%
        Class.forName("org.mariadb.jdbc.Driver");
        System.out.println("mariadb 사용가능");
 
        Connection conn = DriverManager.getConnection("jdbc:mariadb://localhost:3306/test","ksh2","1234");
        System.out.println(conn + "<-- conn");
 
        PreparedStatement stmt = conn.prepareStatement("select * from Users");
        System.out.println(stmt + "<-- stmt");
        ResultSet rs = stmt.executeQuery();
%>
 
 
<table style="width:800px">
<tr>
        <td>ID</td>
        <td>E-MAIL</td>
        <td>COUNTRY</td>
        <td>PASSWORD</td>
</tr>
<%
                while(rs.next()){
%>
        <tr>
                                        <td><%=rs.getString("name") %></td>
                                        <td><%=rs.getString("email") %></td>
                                        <td><%=rs.getString("country") %></td>
                                        <td><%=rs.getString("password") %></td>
                                </tr>
 
<%
                }
%>
 
</table>
</body>
</html>

트러블 슈팅

 1. 페이지를 띄워보니 JSP가 소스코드로 보임(소스프리징)
-> 워커가 똑바로 설정되지 않았거나 AJP/13 프로토콜이 작동하지 않음
-> workers.properties, uriworkermap.properties 확인
-> tomcat/conf/server.xml AJP/13 프로토콜 주석처리 확인

2. 페이지가 403 페이지를 보내며 접근 제어를 할 때
  -> conf/httpd.conf 파일 내부 허용 권한 부재
  -> 첫 번째로 톰캣 내부 경로 확인, selinux 확인, 방화벽 확인

 

3. 권한 문제

-> sudo를 통해 해결 시 비밀번호 자주 쳐주어야 함
  -> 해결하기 위한 명령어 : su root (root로 로그인)

 

반응형

'Opensource' 카테고리의 다른 글

[CentOS7] Apache 버전 업그레이드 (2.4.6 -> 2.4.x)  (0) 2022.10.06
[CentOS7] nginx 설치  (0) 2022.03.24
[CentOS7] Apache Tomcat 연동  (0) 2022.03.17
[CentOS7] MariaDB설치 yum install  (0) 2022.03.17
[CentOS7] Apache설치 yum install  (0) 2022.03.17
Comments