...
Info |
---|
이 문서에서 모든 작업(명령)은 root 계정을 전제하지만, 불가할 경우 sudo를 사용하여 진행하십시오. |
VM 정보
백업
Expand |
---|
title | 기존 서버 OVF 및 3rabbitz 관련 데이터 백업 |
---|
|
로컬 PC에 기존 VM(서버)의 OVF 및 3rabbitz 관련 데이터 백업 OVF 파일 내보내기 /3rabbitz(설치 파일), /3rabbitzbackup(백업), /home/tomcat(derby DB) 디렉터리를 로컬 PC에 백업
|
OS 준비 및 사전 작업
Expand |
---|
title | Ubuntu 20.04, openjdk 17 설치, 볼륨 등 사전 작업 |
---|
|
Ubuntu 20.04 설치/wiki/spaces/VM/pages/3325689934을 참고하여 Ubuntu 20.04가 설치된 VM을 생성합니다. 사전 작업자바가 없거나, 오라클 자바 8.0 미만 또는 오픈 JDK 15.0.1 버전 미만이면 자바를 설치합니다. Code Block |
---|
# Java 설치 여부 및 버전 확인
java -version
# 기존 openjdk-11 제거(없으면 생략)
apt-get remove openjdk*
apt-get autoremove --purge
apt-get autoclean
# openjdk-17 설치
apt-get install openjdk-17-jdk |
3rabbitz 설치 볼륨 및 백업 볼륨 준비다음 명령어를 실행하여 3rabbitz 운영 파일 저장용 볼륨과 백업용 볼륨을 준비합니다. Code Block |
---|
# 3rabbitz 설치 볼륨
mkdir /3rabbitz
echo -e "\nn\np\n1\n\n\nt\n8e\nw" | fdisk /dev/sdb
vgcreate 3rabbitzvg /dev/sdb1
lvcreate -l +100%FREE -n 3rabbitzlv 3rabbitzvg
mkfs -t xfs /dev/mapper/3rabbitzvg-3rabbitzlv
# 3rabbitz 백업 볼륨
mkdir /3rabbitzbackup
echo -e "\nn\np\n1\n\n\nt\n8e\nw" | fdisk /dev/sdc
vgcreate 3rabbitzbackupvg /dev/sdc1
lvcreate -l +100%FREE -n 3rabbitzbackuplv 3rabbitzbackupvg
mkfs -t xfs /dev/mapper/3rabbitzbackupvg-3rabbitzbackuplv
# /etc/fstab 추가 및 마운트
grep "3rabbitzvg-3rabbitzlv" /etc/fstab > /dev/null
if [ $? -ne 0 ]
then
echo "/dev/mapper/3rabbitzvg-3rabbitzlv /3rabbitz xfs defaults 0 0" >> /etc/fstab
fi
grep "3rabbitzbackupvg-3rabbitzbackuplv" /etc/fstab > /dev/null
if [ $? -ne 0 ]
then
echo "/dev/mapper/3rabbitzbackupvg-3rabbitzbackuplv /3rabbitzbackup xfs defaults 0 0" >> /etc/fstab
fi
mount /3rabbitz
mount /3rabbitzbackup |
/etc/profile 수정 Code Block |
---|
sed -i 's/HISTSIZE=1000/HISTSIZE=100000/' /etc/profile
echo "" >> /etc/profile
echo "HISTTIMEFORMAT=\"%Y-%m-%d_%H:%M:%S \"" >> /etc/profile
echo "export HISTTIMEFORMAT" >> /etc/profile |
|
3rabbitz 설치
Note |
---|
기존 서버에서 3rabbitz 파일을 제어하기 전에 3rabbitz 서비스를 중지하십시오. |
Case 1) 서버 변경 시 Image Modified
서버(VM)만 번경할 경우 별도의 설치 과정 없이, scp와 같은 명령을 통해 아래 3rabbitz 관련 디렉터리를 통째로 복사합니다.
...
/3rabbitz/ (기본 설치 및 저장 파일)
/3rabbitzbackup/ (백업 파일)
/home/tomcat/ (derby DB 파일)
Case 2) 신규 구축 시
Expand |
---|
|
Code Block |
---|
# 사용자 추가 (tomcat)
groupadd -g 12345 tomcat
useradd -u 12345 -g tomcat tomcat
chown -R tomcat:tomcat /3rabbitz
chown -R tomcat:tomcat /3rabbitzbackup
su - tomcat
# 설치 파일 다운로드 및 압축 해제
cd /tmp
wget http://www.3rabbitz.com/r/home/download/linux --content-disposition
tar xvfz 3rabbitz-2020-0510.tar.gz
cd ./3rabbitz
mv ./* /3rabbitz |
|
Certbot 설치 및 TLS(SSL) 인증서 발급
무료 SSL TLS 인증서인 Let’s Encrypt 인증서를 자동으로 발급(갱신)해주는 Certbot을 설치하고 인증서를 발급합니다.
Expand |
---|
Certbot 설치(Ubuntu 20.04 기준)Certbot은 설치 방법과 패키지가 다양합니다. 여기서는 apt를 사용하여 certbot과 python3-certbot-apache를 설치합니다. Note |
---|
Certbot 설치에 실패할 경우 다음 작업을 수행 후 진행하십시오. |
Code Block |
---|
# certbot, python3-certbot-apache 설치
apt install -y certbot python3-certbot-apache |
인증서 발급 및 자동 적용(갱신)인증서 발급다음 명령과 캡쳐 이미지를 참고하여 SSL 인증서를 발급합니다. Code Block |
---|
# 인증서(apache용)만 발급
certbot certonly --apache -d docs.mantech.co.kr |
Code Block |
---|
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel): user@mantech.co.kr
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N
Account registered.
Requesting a certificate for docs.mantech.co.kr
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/docs.mantech.co.kr/fullchain.pem
Key is saved at: /etc/letsencrypt/live/docs.mantech.co.kr/privkey.pem
This certificate expires on 2022-08-24.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
... |
인증서 확인 Code Block |
---|
ls /etc/letsencrypt/live/docs.mantech.co.kr/ | 30일마다 자동 갱신 (유효기간 90일인증서 갱신(갱신 시 진행)1. 인증서 발급 명령 후 '2' 입력(Enter) Code Block |
---|
# 갱신 가능 여부 확인
certbot renewcertonly --dryapache -run
# crontab으로 자동 갱신 설정
crontab -e
# 매월 1일 05시에 갱신
0 5 1 * * certbot renew | Image Removedkeytool 로 d docs.mantech.co.kr
...
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 | Image Added2. keystore.p12 인증서 교체 (아래 “keytool로 keystore.p12 생성” 참고) → 기존 파일 삭제 후 새 인증서 생성 3. 3rabbitz 서비스 재시작 Code Block |
---|
/3rabbitz/bin/shutdown.sh
/3rabbitz/bin/startup.sh |
Code Block |
---|
keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650
새 비밀번호 다시 입력: (예:roqkf2xla)
이름과 성을 입력하십시오.
[Unknown]:
조직 단위 이름을 입력하십시오.
[Unknown]:
조직 이름을 입력하십시오.
[Unknown]:
구/군/시 이름을 입력하십시오?
[Unknown]:
시/도 이름을 입력하십시오.
[Unknown]:
이 조직의 두 자리 국가 코드를 입력하십시오.
[Unknown]:
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown이(가) 맞습니까?
[아니오]: yes |
pkcs12 형식으로 변경다음 명령 시 /3rabbitz/에 keystore.p12 파일이 생성됩니다. 이후 tomcat의 server.xml 설정 시 keystore.p12 파일 경로를 입력해야 합니다. Code Block |
---|
openssl pkcs12 -export -in /etc/letsencrypt/live/docs.mantech.co.kr/fullchain.pem -inkey /etc/letsencrypt/live/docs.mantech.co.kr/privkey.pem -out /3rabbitz/keystore.p12 -name tomcat -CAfile /etc/letsencrypt/live/docs.mantech.co.kr/chain.pem -caname root |
|
3rabbitz의 tomcat 설정 파일에 https 적용
https 적용을 위해 server.xml과 web.xml 파일을 수정합니다.
Expand |
---|
title | server.xml, web.xml 수정 |
---|
|
/3rabbitz/tomcat/conf/server.xml 수정기존의 <Connector> 를 주석 처리하고 80, 443 포트를 설정하는 <Connector> 를 추가합니다. Code Block |
---|
| vi /3rabbitz/tomcat/conf/server.xml |
Code Block |
---|
| ...
<Server port="5791" shutdown="SHUTDOWN">
<Service name="Catalina">
<!--
<Connector port="8009" protocol="AJP/1.3" address="0.0.0.0" secretRequired="false" redirectPort="8443" URIEncoding="UTF-8" maxPostSize="-1" Server="3Rabbitz" />
<Connector port="1975" protocol="HTTP/1.1"
connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" maxPostSize="-1" Server="3Rabbitz" />
-->
<Connector port="80" protocol="HTTP/1.1" relaxedQueryChars="^`\|{}[]"
connectionTimeout="20000" redirectPort="443" URIEncoding="UTF-8"
maxPostSize="-1" Server="3Rabbitz" />
<Connector port="443" protocol="HTTP/1.1" relaxedQueryChars="^`\|{}[]"
connectionTimeout="20000" URIEncoding="UTF-8"
maxPostSize="-1" Server="3Rabbitz"
SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/3rabbitz/keystore.p12"
keystorePass="roqkf2xla"
keystoreType="PKCS12" />
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="/" unpackWARs="true"
autoDeploy="false" deployOnStartup="false" createDirs="false">
... |
/3rabbitz/tomcat/conf/web.xml 수정 </web-app> 위에 다음과 같이 <security-constraint> 를 추가합니다. Code Block |
---|
vi /3rabbitz/tomcat/conf/web.xml |
Code Block |
---|
...
<web-app>
...
<security-constraint>
<web-resource-collection>
<web-resource-name>All Requests</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
</web-app>
|
|
Apache derby DB
3rabbitz는 데이터베이스로 Apache derby DB를 사용합니다. 자동 번역기를 사용하려면 DB 모드 변경이 필요하고, 이를 위해 관련 설정이 적용된 기존 서버의 /home/tomcat/ 디렉터리를 이관해야 합니다.
Expand |
---|
|
자동 번역기 사용을 위한 DB 모드 변경3rabbitz에 내장된 derby DB는 "Embedded Derby" 모드를 기본으로 사용합니다. 자동 번역 프로그램을 사용하려면 외부(타 애플리케이션)에서 접속할 수 있어야 하지만, 이 모드는 오직 해당 JVM instance 하나만 데이터베이스에 접속 가능합니다. 따라서 derby DB를 별도로 설치하고 3rabbitz의 DB 연결 옵션을 "Derby Network Server" 모드로 변경해야 합니다. 작업 절차 Warning |
---|
서버 변경 시, 기존 서버에 관련 설정이 적용되어 있어 아래 작업 없이 관련 데이터만 이관합니다. |
apache derby 설치파일 다운로드 다운로드 주소: https://db.apache.org/derby/releases/release-10_14_2_0.cgi 서버 내 다운로드 위치: /home/tomcat/db-derby-10.14.2.0-bin /3rabbitz/tomcat/conf/server.xml에서 database 연결옵션 변경 Code Block |
---|
# 변경 전(기존 내용)
<Resource name="jdbc/Base" auth="Container"
type="javax.sql.DataSource" maxTotal="100" maxIdle="30"
maxWaitMillis="10000" username="database" password="database"
driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
url="jdbc:derby:database;create=true" /> |
위 내용을 다음과 같이 변경합니다. Code Block |
---|
# 변경 후
<Resource name="jdbc/Base" auth="Container"
type="javax.sql.DataSource" maxTotal="100" maxIdle="30"
maxWaitMillis="10000" username="database" password="database"
driverClassName="org.apache.derby.jdbc.ClientDriver"
url="jdbc:derby://127.0.0.1:1527/;create=true" /> |
|
DB 동작 스크립트 및 MCCS 적용
/home/tomcat/dbScripts/에 작성된 스크립트를 실행하여 외부에서 DB에 접속할 수 있도록 합니다.
또한 아래의 시작/종료/모니터링 스크립트를 MCCS 복합 응용 리소스로 등록하여 서비스 동작을 제어합니다.
Expand |
---|
|
derby DB 관련 데이터(/home/tomcat/)를 이관합니다. → 위에서 이관한 경우 생략
Derby Network Server 시작/종료/모니터링 스크립트 작성(확인) → 기존 서버에서 데이터 이관 시 스크립트 확인 스크립트 위치: /home/tomcat/dbScripts/ 시작 스크립트: startDb.sh Code Block |
---|
| #!/bin/bash
export DERBY_HOME=/home/tomcat/db-derby-10.14.2.0-bin
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export CLASSPATH="${DERBY_HOME}/lib/derbyshared.jar:${DERBY_HOME}/lib/derby.jar:${DERBY_HOME}/lib/derbynet.jar:${DERBY_HOME}/lib/derbytools.jar:${DERBY_HOME}/lib/derbyoptionaltools.jar:${CLASSPATH}"
export MODULEPATH="${DERBY_HOME}/lib/derbyshared.jar:${DERBY_HOME}/lib/derby.jar:${DERBY_HOME}/lib/derbynet.jar:${DERBY_HOME}/lib/derbytools.jar:${DERBY_HOME}/lib/derbyoptionaltools.jar"
cd /3rabbitz/data/database
${DERBY_HOME}/bin/startNetworkServer -h 0.0.0.0 >/home/tomcat/dbScripts/startDb.log & |
종료 스크립트: stopDb.sh Code Block |
---|
| #!/bin/bash
export DERBY_HOME=/home/tomcat/db-derby-10.14.2.0-bin
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export CLASSPATH="${DERBY_HOME}/lib/derbyshared.jar:${DERBY_HOME}/lib/derby.jar:${DERBY_HOME}/lib/derbynet.jar:${DERBY_HOME}/lib/derbytools.jar:${DERBY_HOME}/lib/derbyoptionaltools.jar:${CLASSPATH}"
export MODULEPATH="${DERBY_HOME}/lib/derbyshared.jar:${DERBY_HOME}/lib/derby.jar:${DERBY_HOME}/lib/derbynet.jar:${DERBY_HOME}/lib/derbytools.jar:${DERBY_HOME}/lib/derbyoptionaltools.jar"
cd /3rabbitz/data/database
${DERBY_HOME}/bin/stopNetworkServer
kill -9 $(pgrep -f 'derby.drda.NetworkServerControl') |
모니터링 스크립트: monitorDb.sh Code Block |
---|
| #!/bin/bash
ps -ef|grep "derby.drda.NetworkServerControl" | grep -v grep
if [ $? -eq 0 ]
then
exit 0
fi
exit 1 |
MCCS에서 복합 응용 리소스 추가 시 위 스크립트를 사용합니다.(MCCS 구축 설명은 생략) MCCS 웹 콘솔: https://docs.mantech.co.kr:10080/main 리소스 그룹명: docs_group 리소스명: 3rabbitz_database
|
참고
/wiki/spaces/QA/pages/959578623
...