메뉴 닫기

tomcat(+letsencrypt SSL, MySQL) 운영

구동 환경

CentOS 7

tomcat 9.0.5

MySQL 5.6.29

letsencrypt SSL(webroot)

java 설치 및 환경변수 설정

# cd /usr/local/src

# wget –user=apm –ask-password http://ris.smileserv.com/source/java_tomcat/jdk-8u231-linux-x64.tar.gz

# tar zxvf jdk-8u231-linux-x64.tar.gz

# mv jdk1.8.0_231/ /usr/local/java

# vi /etc/profile

JAVA_HOME=/usr/local/java

JRE_HOME=$JAVA_HOME/jre

CLASSPATH=$JAVA_HOME/lib/tools.jar :$JRE_HOME/lib:

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:

export JAVA_HOME JRE_HOME CLASSPATH PATH

# source /etc/profile

# java -version / 자바 설치 확인

tomcat 설치 및 환경변수 설정

# cd /usr/local/src

# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.5/bin/apache-tomcat-9.0.5.tar.gz

# tar zxvf apache-tomcat-9.0.5.tar.gz

# mv apache-tomcat-9.0.5 /usr/local/tomcat

# vi /etc/profile

JAVA_HOME=/usr/local/java

JRE_HOME=$JAVA_HOME/jre

CATALINA_HOME=/usr/local/tomcat

CLASSPATH=$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CATALINA_HOME/lib/jsp-api.jar:

$CATALINA_HOME/lib/servletapi.jar

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$CATALINA_HOME/bin

export JAVA_HOME JRE_HOME CLASSPATH PATH CATALINA_HOME

빨간색 부분 추가

# source /etc/profile

tomcat 실행 및 확인

# startup.sh

또는 # /usr/local/tomcat/bin/startup.sh

방화벽 8005, 8009, 8080번 포트 허용

tomcat 실행 스크립트 생성

# /etc/init.d/tomcat

#!/bin/bash

# Startup script for the Tomcat Server

# chkconfig: 345 50 50

# description: Tomcat is a Web application server.

# processname: java

# directory : CATALINA_HOME=/usr/local/tomcat

source /etc/profile

export CATALINA_HOME=/usr/local/tomcat

case “$1” in

start)

echo “Starting tomcat: “

$CATALINA_HOME/bin/startup.sh

;;

stop)

echo “Shutting down tomcat: “

$CATALINA_HOME/bin/shutdown.sh

;;

restart)

echo “Restarting tomcat: “

$CATALINA_HOME/bin/shutdown.sh;

$CATALINA_HOME/bin/startup.sh

;;

*)

echo “Usage: service tomcat {start|stop|restart}”

exit 1

esac

exit 0

-> 저장

# chkconfig –-add tomcat

# chkconfig –-level 3 tomcat on

톰캣 포트 변경

# vi /usr/local/tomcat/conf/server.xml

<Connector port=”80” protocol=”HTTP/1.1″

connectionTimeout=”20000″

redirectPort=”8443″ />

8080 포트를 80번 포트로 변경 후 톰캣 재시작

80번 포트로 변경 후 도메인 뒤 8080을 붙이지 않아도 정상적으로 접속되는 것을 볼 수 있습니다

루트 디렉토리 변경

<Host> 태그는 가상의 호스트를 정의하며 톰캣의 기본 루트 디렉토리는 webapps/ROOT 입니다 (http://localhost:8080 -> webapps/ROOT)

appBase는 $CATALINA_HOME 디렉토리의 상대 경로를 인자로 받는데, appBase를 “webapps”로 설정한다면 $CATALINA_home/webapps로 루트 디렉토리가 설정됩니다. (/usr/local/tomcat/webapps/ROOT)

여기서 <Context> 태그가 생략되어 있다면 ROOT 디렉토리를 자동으로 루트 디렉토리로 사용합니다.

<Context> 태그를 통해 appBase의 하위 디렉토리를 루트 디렉토리로 설정할 수 있습니다.

<Host name=”localhost” appBase=”webapps”

unpackWARs=”true” autoDeploy=”true”>

<Host name=”localhost” appBase=”[설정할 디렉토리]”

unpackWARs=”true” autoDeploy=”true”>

<Context path=”/” docBase=”.” reloadable=”false”></Context>

여기서 appBase는 젠킨스 빌드 시 war 파일이 생성되는 디렉토리이며, 톰캣 구동 시 <Context> 태그의 docBase를 기준으로 웹을 구동합니다.

변경 시 appBase를 절대경로로 지정 후 docBase를 현재 디렉토리로 설정하거나, <Host> 태그 설정은 건너뛰고 <Context> 태그의 docBase에 절대경로로 지정하여 설정할 수도 있습니다.

변경 후 테스트

# vi /home/maxkonan/index.jsp

<%@page contentType=“text/html; charset=utf-8” %> <html> <head> <title>현재시간</title> <script language=“javascript”> function time(){ var time= new Date(); document.getElementById(“now”).innerHTML=time.getHours()+“시”+time.getMinutes()+“분”+time.getSeconds()+“초”; setInterval(“time()”,1000); } </script> </head> <body onload=“time()”> <h2> 현재 시간: <span id=“now”></span></h2> </body> </html>

저장 후 도메인으로 접속하여 정상적으로 뜨는지 확인

SSL 적용(letsencrypt)

# vi /usr/local/tomcat/conf/server.xml

<Connector port=”8443″ protocol=”org.apache.coyote.http11.Http11NioProtocol”

maxThreads=”150″ SSLEnabled=”true”>

<SSLHostConfig>

<Certificate certificateKeystoreFile=”conf/localhost-rsa.jks”

type=”RSA” />

</SSLHostConfig>

</Connector>

<Connector port=”443” protocol=”org.apache.coyote.http11.Http11NioProtocol”

maxThreads=”150″ SSLEnabled=”true” scheme=”https” secure=”true”>

<SSLHostConfig>

<Certificate certificateKeyFile=”/etc/letsencrypt/live/[도메인]/privkey.pem”

certificateFile=”/etc/letsencrypt/live/[도메인]/cert.pem”

certificateChainFile=”/etc/letsencrypt/live/[도메인]/fullchain.pem”

type=”RSA” />

</SSLHostConfig>

</Connector>

https 리다이렉트 설정

# vi /usr/local/tomcat/conf/server.xml

<Connector port=”80” protocol=”HTTP/1.1″

connectionTimeout=”20000″

redirectPort=”443” />

# vi /usr/local/tomcat/conf/web.xml

<security-constraint>

<web-resource-collection>

<web-resource-name>SSL Forward</web-resource-name>

<url-pattern>/*</url-pattern>

</web-resource-collection>

<user-data-constraint>

<transport-guarantee>CONFIDENTIAL</transport-guarantee>

</user-data-constraint>

</security-constraint>

추가 후 저장하고 tomcat 재시작하면 https 없어도 자동으로 https로 접속이 됩니다

톰캣 구동시 속도가 너무 느린것을 해결

# yum install haveged

mysql connector 다운로드

# cd /usr/local/src

# wget –user=apm –ask-password http://ris.smileserv.com/source/java_tomcat/mysql-connector-java-5.1.47.tar.gz

# tar xvf mysql-connector-java-5.1.47.tar.gz

# cd mysql-connector-java-5.1.47

# cp -arp mysql-connector-java-5.1.47.jar /usr/local/tomcat/lib/

# /etc/init.d/tomcat restart

mysql 연동 테스트

# vi /home/maxkonan/dbtest.jsp

<%@ page import=“java.sql.*” contentType=“text/html;charset=utf-8”%> <% String DB_URL = “jdbc:mysql://localhost/[DB명]”; String DB_USER = “[계정]”; String DB_PASSWORD= “[패스워드]”; Connection conn; Statement stmt; try { Class.forName(“org.gjt.mm.mysql.Driver”); conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD); stmt = conn.createStatement(); conn.close(); out.println(“MySQL Connection Success!”); } catch(Exception e){ out.println(e); } %>

저장후 정상적으로 출력되는지 확인

 

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x