[클라우드] 웹 서버와 웹 어플리케이션와 DB 서버 연동

최동혁·2023년 2월 14일
0

클라우드

목록 보기
1/18
post-thumbnail

아파치 서버 설정

  • 수평 분할 : 같은 역할을 하는 컴퓨터를 여러대 준비 (db 서버 이중화)
  • 수직 분할 : 다른 역할을 하는 컴퓨터를 여러대 준비 (지금 하는 아파치와 톰캣 역할 분배)

웹 서버 설치

  • yum -y install httpd

방화벽 해제

  • systemctl stop firewalld
  • systemctl disable firewalld
  • setenforce 0

관련 패키지 및 모듈 설치

  • yum install httpd httpd-devel gcc gcc-c++

  • wget https://dlcdn.apache.org/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.48-src.tar.gz

  • tar zxvf tomcat-connectors-1.2.48-src.tar.gz

  • cd tomcat-connectors-1.2.48-src/native/

  • ./configure --with-apxs=/usr/bin/apxs

  • yum install -y make

  • yum install -y redhat-rpm-config

  • make

  • 위의 모듈들을 설치하고 실행하면, tomcat-connectors-1.2.48-src/native/apache-2.0 밑에 mod_jk.so 생성됨

  • apache-2.0 디렉토리로 이동

  • cp mod_jk.so /usr/lib64/httpd/modules/mod_jk.so

    • mod_jk.so 파일을 해당 경로에 복사
  • chmod 755 /usr/lib64/httpd/modules/mod_jk.so

    	- 권한 변경

서버에서 모듈 적용 설정

  • vi /etc/httpd/conf/httpd.conf 파일 마지막 줄 밑에 다음 내용 추가
LoadModule jk_module /usr/lib64/httpd/modules/mod_jk.so

<IfModule jk_module>
	JkWorkersFile /etc/httpd/conf/workers.properties
	JkLogFile /var/log/httpd/mod_jk.log
	JkLogLevel info
	JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
	JkMount /*.jsp worker1
</IfModule>
  • 우리가 카피한 mod_jk.so를 jk_module로 로드하는것.
  • 로드에 성공하면 위에 설정한대로 실행
  • 아파치 ip를 입력해서 들어가면 톰캣에 넣은 jsp 내용이 보여야함.
  • 아파치에서 .jsp로 끝나는 것은 전부 worker1에게 시키겠다고 설정하는거임.(JkMount *.jsp worker1)

워커 파일 생성

  • vi /etc/httpd/conf/workers.properties
    파일 안에 다음 내용 작성
worker.list=worker1

worker.worker1.type=ajp13
worker.worker1.host=[톰캣의 IP]
worker.worker1.port=8009
  • 위에서 worker1에게 시키겠다고 했으니, worker도 설정해주는 것.
  • 톰캣 서버에 있는 jsp 파일을 worker1이 실행해줘야 하니, 일단 worker.list에 worker1을 넣어줌.
  • 그리고 host에 jsp를 넣을 톰캣 서버의 ip 작성

톰캣 서버 설정

방화벽 해제

  • systemctl stop firewalld
  • systemctl disable firewalld
  • setenforce 0

JDK 설치

  • yum -y install java-1.8.0-openjdk-devel.x86_64

환경 변수 설정

  • vi /etc/profile
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-3.el8.x86_64/
export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
export PATH
  • 위의 코드를 최하단에 작성

  • source /etc/profile 로 설정 적용

  • java -version 로 설치와 설정 잘 되었는지 확인

톰캣 설치

설정

  • vi /usr/local/tomcat9/conf/server.xml
    • 이동 시킨 파일 밑에 server.xml 파일 설정
  • 153번 라인에 추가
<Context path="" docBase="[이니셜]" reloadable="true" />
  • 이니셜은 자신의 이름 이니셜로 하자.
  • 개발할 코드 루트 디렉토리로 할거임.
    • 관리자 페이지랑 내 개발 코드랑 같이 두면 안됨.
      - 그래서 새로운 디렉토리를 만들어서 거기서 개발을 해야함.
    • 웹 브라우저로 ip 접속을 하면 해당 루트 페이지 다음 url을 이니셜 디렉토리 밑의 파일로 설정해주는 것.
    • 원래는 ip/cdh/index.jsp 로 접속해야 하는데, 위의 설정을 한다면
    • ip/index.jsp 로 접근 가능.
  • 121번 라인에 추가
<Connector protocol="AJP/1.3"
                    address="0.0.0.0"
                    secretRequired="false"
                    port="8009"
                    redirectPort="8443" />
  • secretRequired는 https 설정인데, 아직 배우지 않았기 때문에 false로 설정

  • 8009번 포트로 들어오면 8443번 포트로 리다이렉트 시켜줌.

    • 클라이언트가 80번 포트로 접속을 하면 8009번 포트를 사용하는 아파치 서버로 연결시키고, jsp 파일을 불러오려면 8009번 포트가 톰캣 포트인 8443번 포트로 리다이렉트 시켜서 톰캣 서버로 보내주는 것.
  • /usr/local/tomcat9/webapps 디렉토리 밑에 [이니셜] 디렉토리 생성

    	- 이곳이 이제 우리가 개발할 디렉토리임.
  • /usr/local/tomcat9/webapps/[이니셜] 디렉토리 밑에 index.jsp 파일 생성

  • vi /usr/local/tomcat9/webapps/[이니셜]/index.jsp 파일에 다음 내용 작성
    • tomcat server

실행

  • /usr/local/tomcat9/bin/shutdown.sh
  • /usr/local/tomcat9/bin/startup.sh

  • netstat -anlp | grep :8080
  • netstat -anlp | grep :8009
  • 위의 두 명령어로 실행 확인

중간 확인

  • 아파치 설치 vm으로 가서
  • systemctl restart httpd 로 재시작
  • 그 후, 아파치 서버의 ip/index.jsp 로 웹 브라우저 접속

  • 위의 그림처럼 톰캣 서버에 index.jsp 파일이 나오면 아파치와 톰캣 연결 완료.

DB 서버 설정

방화벽 해제

  • systemctl stop firewalld
  • systemctl disable firewalld
  • setenforce 0

mysql 설치 및 초기 설정

  • yum -y install mysql-server
  • systemctl restart mysqld 로 실행
  • mysql_secure_installation 로 비밀번호 설정
    - y 0 qwer1234 qwer1234 y y y y
  • mysql -u root -p 로 접속
CREATE DATABASE [DB 이름];
use [DB 이름];
CREATE TABLE student (sname VARCHAR(10), sage INT);
INSERT INTO student VALUES('kim',10);
INSERT INTO student VALUES('lee',20);
INSERT INTO student VALUES('park',30);
INSERT INTO student VALUES('sim',40);
  • 스키마 만든후, student 테이블 생성
  • 더미 데이터 4개 넣기

원격 접속 허용 계정 생성

  • CREATE USER '[DB 계정]'@'%' identified by '[DB 비번]';

  • GRANT ALL PRIVILEGES ON [DB이름].* TO '[DB 계정]'@'%';

  • FLUSH PRIVILEGES;

톰캣과 DB 연동

  • 톰캣 서버로 다시 가기
  • wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.19.tar.gz 다운로드 (꼭 톰캣 서버에서 다운)
  • tar xvf mysql-connector-java-8.0.19.tar.gz 로 아카이브 해제
  • 아카이브 해제한 파일로 이동
  • cp mysql-connector-java-8.0.19.jar /usr/local/tomcat9/lib/ 해당 경로에 복사
  • 톰캣 재시작
  • /usr/local/tomcat9/bin/shutdown.sh
  • /usr/local/tomcat9/bin/startup.sh

db.jsp 파일 생성

  • 아까 메인 페이지로 설정한 이니셜 디렉토리로 이동
  • 그곳에 db.jsp 파일 생성
<%@page import="java.sql.*"%>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		Connection conn = null;
		ResultSet rs = null;
	      
		String url = "jdbc:mysql://[DB 서버 IP]:3306/[DB 이름]?serverTimezone=UTC";
		String id = "[DB 계정]";
		String pwd = "[DB 비번]";


		try {
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(url, id, pwd);
			Statement stmt = conn.createStatement();
     
	
			String sql = "SELECT sname FROM student";
			rs = stmt.executeQuery(sql);
			
			while(rs.next()) {
				out.println(rs.getString("sname"));
			}


			conn.close();
		} catch (Exception e) {

			e.printStackTrace();
		}	
	%>
</body>
</html>
  • 위의 코드 자신에 맞게 변경 후, db.jsp에 넣기

  • 아파치가 깔려져 있는 ip/db.jsp 로 접속하면 우리가 db 서버 cdh 데이터베이스의 student 테이블에 넣었던 더미 데이터들이 나온다.

  • 이렇게 되면 톰캣과 db가 연동되어서 아파치에서 jsp 파일을 요청하면 톰캣에서 db.jsp 파일을 주는데 그 안에서 db 파일을 db 서버로 요청해서 받아서 주게 된다.

  • client -> apache -> tomcat -> db -> tomcat -> apache -> client 단계이다.

profile
항상 성장하는 개발자 최동혁입니다.

0개의 댓글