WEB / Web Application Server(WAS) / DB
서로 독립적인 서버를 구성 시 장점
1. 확장성이 좋다
2. 유지보수가 용이하다.
3. 보안성이 증가
우리는 Tomcat과 mariaDB을 사용했다.
centOS7
IP : 211.183.3.88
if 자바로 웹페이지를 만들었다면, 이런 웹애플리케이션을 배포하는 WAS가 필요하고, 추가적으로 개발환경(JAVA)도 구성이 필요하다. 즉 JAVA와 Tomcat이 필요하다
JAVA = openjdk-11
tomcat = tomcat 10 버전
[root@tomcat ~]# yum install -y java-11-openjdk wget unzip
# 자바 설치 및 wget unzip 설치.
# 배포판이나 운영체제 버전에 따라서 패키지명이 다를 수 있다.
[root@tomcat ~]# yum search openjdk
# openjdk 문구가 들어간 것들중에 내가 설치할 수 있는 패키지 검색
[root@tomcat ~]# java -version
# 자바 버전 검색
[root@tomcat ~]# wget https://tomcat.apache.org/download-10.cgi
wget 을 통해 버전 10을 설치
[root@tomcat ~]# unzip apache* > /dev/null
# apache로 시작하는 모든 파일 unzip할거고, 압축풀리는 과정은 안보기 위해
[root@tomcat ~]# mv apache-tomcat-10.1.52 tomcat
[root@tomcat ~]# chmod -R 777 tomcat
# 디렉토리 이름 변경 & 권한 부여
[root@tomcat tomcat]# sh ./bin/startup.sh
# 실행시키는 방법1 (명확한 방법)
[root@tomcat tomcat]# ./bin/startup.sh
# 실행시키는 방법2. 이렇게 해서 안되면 1번 방법으로 실행을 시키세요!
[root@tomdb ~]# yum install -y mariadb-server
[root@tomdb ~]# systemctl enable --now mariadb
[root@tomdb ~]# systemctl restart mariadb && systemctl enable mariadb
# 두개의 명령 동시에 실행할땐 && 하세요!
[root@tomdb ~]# mysql_secure_installation
# 암호는 1234로 하시고 다른건 기본설정(ynyy)
[root@tomdb ~]# mysql -u root -p1234
MariaDB [(none)]> create database tomcatdb;
# DB이름은 tomcatdb
MariaDB [(none)]> grant all privileges on tomcatdb.* to tomuser@'%' identified by '1234';
#사용자이름 tomuser , 암호 1234
MariaDB [(none)]> grant all privileges on tomcatdb.* to tomuser@'localhost' identified by '1234';
# 경우에 따라서 local 에서 접속이 안되는 경우도 있다. % 안에는 localhost는 포함이 안된걸로 간주하는 플랫폼도 있기때문.
MariaDB [(none)]> exit
[root@tomcat tomcat]# yum install -y mysql
# mysql 명령 설치(클라이언트 역할)
[root@tomcat tomcat]# mysql -u tomuser -p1234 -h 211.183.3.6
show databases; 를 통해 생성된 DB를 확인한다
cat <<EOF > dbtest.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<h1>DB</h2>
<%
Connection conn=null;
try{
String Url="jdbc:mysql://<DB주소>/<DB이름>";
String Id="<DB유저>";
String Pass="<유저암호>";
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection(Url,Id,Pass);
out.println("was-db Connection Success!");
}catch(Exception e) {
e.printStackTrace();
}
%>
EOF
를 통해 dbtest.jsp 파일을 생성
[root@tomcat tomcat]# vi dbtest.jsp
Url, Id, Password를 설정한대로 수정
[root@tomcat tomcat]# mv ./dbtest.jsp /root/tomcat/webapps/ROOT
# 현재디렉토리의 dbtest.jsp 파일을 웹앱루트디렉토리로 이동.
[root@tomcat tomcat]# wget https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.23
으로 JDBC 경로 저장
[root@tomcat tomcat]# mv mysql-connector-java-8.0.23.jar /root/tomcat/lib
# 받은 파일을 라이브러리 디렉토리에 복사.
[root@tomcat tomcat]# sh ./bin/shutdown.sh
# 톰캣 중지
[root@tomcat tomcat]# sh ./bin/startup.sh
# 톰캣 시작
원래는 client가 직접 WAS서버(백엔드, tomcat)에 가서 test.jsp 파일을 가져와야 하는데, 외부의 사용자들이 내 백엔드서버에 접근하는게, 보안적으로 좋지 않기때문에, 리버스프록시가 'WAS를 대리’ 하여 클라이언트들에게 test.jsp파일을 제공.
[root@tomweb ~]# yum install -y httpd
[root@tomweb ~]# systemctl restart httpd
[root@tomweb ~]# systemctl enable httpd
[root@tomweb ~]# vi /etc/httpd/conf/httpd.conf
# 리버스 프록시 설정파일
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
<VirtualHost *:80> # 80번 포트로 들어오는 모든 ip에 대한 설정
ProxyRequests Off # 포워드 프록시 기능 off
ProxyPreserveHost On # 원래의 헤더값을 전달 On
<Proxy *> # 접근 권한
Order deny,allow
Allow from all
</Proxy>
ProxyPass /jsp http://211.183.3.88:8080/
ProxyPassReverse /jsp http://211.183.3.88:8080/
</VirtualHost>
56번째 줄 이후에 복붙한다
[root@tomweb ~]# systemctl restart httpd
[root@tomdb ~]# curl 211.183.3.80:80/index.html
static page
# 정적 요청 = 웹서버가 처리.
[root@tomdb ~]# curl 211.183.3.80:80/jsp/dbtest.jsp
#웹서버한테 요청(WAS로 보냄)
<h1>DB</h2>
was-db Connection Success!
[root@tomdb ~]# curl 211.183.3.88:8080/dbtest.jsp
#tomcat한테 요청(WAS에 직접요청)
<h1>DB</h2>
was-db Connection Success!
오늘 중요한 3 Tier Architecture에 대해 배웠는데 이러한 내용은 향후 클라우드를 배우면서도 중요하게 사용되는 내용이라고 생각 된다. 그렇기 때문에 더욱 복습해서 마스터 해야겠다. 그리고 이제 슬슬 날도 따뜻해지고 개강 시즌이 왔는데 휴학생으로서 이 기간을 낭비하지 않고 배워나가며 지식을 채워 나아가겠다. 화이팅