개발 블로그
[교육] 하나의 VM에 2개의 엔진을 사용에 두개의 도메인 본문
하나의 VM에 2개의 엔진을 사용에 두개의 도메인 띄우기
- test.co.kr과 abc.co.kr 서로 다른 소스 연결
- 둘다 context path = "/" 여야 함
- 동일 upload 가상 폴더 연결
- 도메인단위로 다른 로그 지정
- get/post 한글처리
- jndi 연결
이거는 vm을 새로 설치하고 시작하겠슴
1. 아파치 설치
yum install httpd 하니까
Cannot find a valid baseurl for repo: base/7/x86_64 에러가 났다
BaseURL 설정 수정
vi /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://vault.centos.org/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
baseurl=http://vault.centos.org/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
baseurl=http://vault.centos.org/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
요거 복붙하고
yum clean all
yum update -y
yum install -y httpd
그니까 어쩌고 저쩌고 설치 되었어여
1. /engine 디렉토리에 Tomcat 바이너리 다운로드 및 설치
그럼 이제 톰캣을 설치하겠습니다
1) /engine 디렉토리를 만듬 (이미 있다면 건너뛰세요).
mkdir -p /engine
cd /engine
2) Tomcat 바이너리를 다운로드 (예시: Tomcat 9).
wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.80/bin/apache-tomcat-9.0.80.tar.gz
3) 다운로드한 Tomcat 압축 파일을 푼다
tar -xzf apache-tomcat-9.0.80.tar.gz
4) 디렉토리 이름을 tomcat1으로 변경
mv apache-tomcat-9.0.80 tomcat1
이렇게 하면 /engine/tomcat1에 첫 번째 Tomcat 인스턴스의 기본 설정이 설치됨
2. Tomcat 인스턴스 설정 (tomcat2)
두 번째 Tomcat 인스턴스는 별도의 CATALINA_BASE를 설정하여 구분합니다.
1) 두 번째 Tomcat 인스턴스를 위한 새로운 디렉토리를 생성
mkdir -p /engine/tomcat2
2) /engine/tomcat1의 conf, logs, webapps, work, temp 디렉토리를
두 번째 Tomcat 인스턴스용 디렉토리에 복사합니다.
cp -r /engine/tomcat1/conf /engine/tomcat2/
cp -r /engine/tomcat1/logs /engine/tomcat2/
cp -r /engine/tomcat1/webapps /engine/tomcat2/
cp -r /engine/tomcat1/work /engine/tomcat2/
cp -r /engine/tomcat1/temp /engine/tomcat2/
3. 포트 변경
두 개의 Tomcat 인스턴스가 동일한 서버에서 실행되므로, 포트를 다르게 설정해야 합니다. /engine/tomcat2/conf/server.xml에서 포트를 변경합니다.
1) 두 번째 인스턴스의 server.xml 파일을 엽니다.
vi /engine/tomcat2/conf/server.xml
2) 다음 포트를 변경합니다
- HTTP 커넥터 포트: 기본값은 8080입니다. 두 번째 인스턴스에서는 다른 포트로 변경해야 합니다 (예: 8081).
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
- Shutdown 포트: 기본값은 8005입니다. 이것도 다른 포트로 변경합니다 (예: 8006).
<Server port="8006" shutdown="SHUTDOWN">
- AJP 커넥터 포트: 기본값은 8009입니다. 필요 시 이를 다른 포트로 변경합니다 (예: 8010).
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
vi /etc/profile
# JDK
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64
export PATH=$JAVA_HOME/bin:$PATH
# Tomcat 1 설정 (첫 번째 Tomcat 인스턴스)
export CATALINA_HOME=/engine/tomcat1
export CATALINA_BASE=/engine/tomcat1
# Tomcat 2 설정 (두 번째 Tomcat 인스턴스)
export CATALINA_HOME_TOMCAT2=/engine/tomcat1
export CATALINA_BASE_TOMCAT2=/engine/tomcat2
# Tomcat 실행 스크립트 alias (간편하게 관리하기 위해 alias 설정)
alias start_tomcat1="$CATALINA_HOME/bin/startup.sh"
alias stop_tomcat1="$CATALINA_HOME/bin/shutdown.sh"
alias start_tomcat2="CATALINA_BASE=$CATALINA_BASE_TOMCAT2 $CATALINA_HOME/bin/startup.sh"
alias stop_tomcat2="CATALINA_BASE=$CATALINA_BASE_TOMCAT2 $CATALINA_HOME/bin/shutdown.sh"
source /etc/profile
그리고 start_tomcat1, start_tomcat2 해주니까 톰캣이 시작되지 않고 자바 오류가 나길래
보니까
[root@localhost ~]# start_tomcat1 The JAVA_HOME environment variable is not defined correctly JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64 This environment variable is needed to run this program NB: JAVA_HOME should point to a JDK not a JRE
JDK 개발 도구가 설치되어 있지 않아서 생긴 오류라고 한다
yum list installed | grep java-1.8.0-openjdk-devel 으로 확인 해도 없길래
yum install java-1.8.0-openjdk-devel로 설치 해줬음
start_tomcat1, start_tomcat2
그리고 이렇게 해주니까 잘만 된다긔
8080 8081 두개의 엔진이 가동하고 있슴니다
이제 각각 다른 소스를 연결 해보겠습니다
vi /engine/tomcat1/conf/server.xml
<Host name="test.co.kr" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
attern="%h %l %u %t "%r" %s %b" />
</Host>
vi /engine/tomcat2/conf/server.xml
<Host name="abc.co.kr" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
attern="%h %l %u %t "%r" %s %b" />
</Host>
일단 요렇게 하면
test.co.kr:8080
abc.co.kr:8081
두개 다 톰캣 고양이를 볼 수 있음
이제 포트 번호 없이 접속 할 수 있게 하겠다요
vi /etc/httpd/conf/httpd.conf
이렇게 설정해주고,
파일 제일 밑에다 아래와 같은 설정을 추가해 줌
<VirtualHost *:80>
ServerName test.co.kr
# Tomcat 1의 8080 포트로 프록시
ProxyPass / http://test.co.kr:8080/
ProxyPassReverse / http://test.co.kr:8080/
# 로그 파일 설정
ErrorLog logs/test.co.kr-error_log
CustomLog logs/test.co.kr-access_log common
</VirtualHost>
<VirtualHost *:80>
ServerName abc.co.kr
# Tomcat 2의 8081 포트로 프록시
ProxyPass / http://abc.co.kr:8081/
ProxyPassReverse / http://abc.co.kr:8081/
# 로그 파일 설정
ErrorLog logs/abc.co.kr-error_log
CustomLog logs/abc.co.kr-access_log common
</VirtualHost>
작성 해주고,
했는디 여전히 포트번호로 접속하니 오류가 났다 알고보니
1. SELinux 설정 확인 및 수정
SELinux가 활성화되어 있다면, Apache가 네트워크로 외부 요청을 보내는 것을 차단하고 있을 수 있습니다. 아래 명령으로 SELinux 설정을 수정해 Apache가 외부에 요청할 수 있도록 허용합니다.
이 명령어는 Apache가 네트워크를 통해 Tomcat에 연결할 수 있도록 허용합니다.
이렇게 해주니 돌아감..
그리고 이제 톰캣에 한글 설정 해주겟슴
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>abc.co.kr</title>
</head>
<body>
<h1>abc.co.kr</h1>
<p>현재 서버 시간: <%= new java.util.Date() %></p>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test.co.kr</title>
</head>
<body>
<h1>test.co.kr</h1>
<p>현재 서버 시간: <%= new java.util.Date() %></p>
</body>
</html>
<Host name="test.co.kr" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="/" docBase="/engine/tomcat1/webapps/test">
<!-- 가상 폴더 설정: /upload -->
<Resources>
<PreResources className="org.apache.catalina.webresources.DirResourceSet"
base="/upload" webAppMount="/upload" />
</Resources>
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="/var/log/tomcat1/test"
prefix="test_access_log"
suffix=".log"
pattern="%h %l %u %t "%r" %s %b" />
</Context>
</Host>
<Host name="abc.co.kr" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="/" docBase="/engine/tomcat2/webapps/abc">
<!-- 가상 폴더 설정: /upload -->
<Resources>
<PreResources className="org.apache.catalina.webresources.DirResourceSet"
base="/upload" webAppMount="/upload" />
</Resources>
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="/var/log/tomcat2/abc"
prefix="abc_access_log"
suffix=".log"
pattern="%h %l %u %t "%r" %s %b" />
</Context>
</Host>
이렇게 설정해줬음
이제 디비 연결하고 싶어서
기존에 있던 ROOT는 ROOT_update로 이름을 변경해주고
이클립스에서 war파일 가져와서 VM에 넣어주고 ROOT로 바꿔주셈
그러니까 jsp는 정상적으로 뜨는데 db는 제대로 작동 안되네
ojdbc8.jar 파일 넣어주고
server.xml 제일 밑에 아래의 설정 넣어주셈
<GlobalNamingResources>
<Resource name="jdbc/myDB"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:xe"
username="C##CHOCO"
password="c##choco"
maxActive="100"
maxIdle="30"
maxWait="10000"
validationQuery="SELECT 1 FROM DUAL"/>
</GlobalNamingResources>
web.xml에서 아래와 같은 설정 더 해 주기
<resource-ref>
<description>Oracle DB Connection</description>
<res-ref-name>jdbc/myDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
안되네에..
'리눅스 | 서버' 카테고리의 다른 글
[교육] 하나의 엔진에 두개의 도메인 (0) | 2024.09.25 |
---|---|
아파치가 두 개여서 설정이 꼬이는 문제 해결 (0) | 2024.09.24 |
[교육] 하나의 엔진에 하나의 도메인 (2) | 2024.09.20 |
[이것이 리눅스다] 포트 포워딩 (0) | 2024.07.24 |
[이것이 리눅스다] 방화벽 서버 (0) | 2024.07.23 |