도메인,웹서버설정/Host OS에서 가짜 도메인 설정/그누보드 설치/그누보드 삭제/Tomcat + JSP 환경 구성/CentOS 7에서 Apache + Tomcat 연동 환경 구성 (교육 46일차)

SW·2023년 1월 26일
post-thumbnail

실습> 아래 조건에 맞는 도메인과 웹서버를 설정하시오.

1. DNS 설정
ns1, ns2에서 설정한다.

2. 웹 서버 설정
ns2에서 가상호스트를 설정한다.

3. 접속 결과
ns1에서 확인한다.
[root@ns1 ~]# lynx --dump kbs.com
kbs.com에 오신 것을 환영합니다.

[root@ns1 ~]# lynx --dump mbc.com
mbc.com에 오신 것을 환영합니다.

실습-풀이> 아래 조건에 맞는 도메인과 웹서버를 설정하시오.

1. DNS 설정
1-1. 1차 네임서버 설정
1차 네임서버에서 도메인을 등록한다.
[root@ns1 ~]# vi /etc/named.rfc1912.zones

:
:(생략)
zone "kbs.com" IN { type master; file "kbs.com.zone"; allow-update { none; }; };
zone "mbc.com" IN { type master; file "mbc.com.zone"; allow-update { none; }; };

포워드 존 파일을 생성한다.
[root@ns1 ~]# cd /var/named
[root@ns1 named]# cp -a server.com.zone kbs.com.zone
[root@ns1 named]# vi kbs.com.zone

[root@ns1 named]# cp -a kbs.com.zone mbc.com.zone
[root@ns1 named]# vi mbc.com.zone

설정파일에 문제가 없는지 체크한다.
[root@ns1 named]# named-checkconf
[root@ns1 named]# named-checkzone kbs.com kbs.com.zone
zone kbs.com/IN: loaded serial 2023012601
OK
[root@ns1 named]# named-checkzone mbc.com mbc.com.zone
zone mbc.com/IN: loaded serial 2023012601
OK

네임서버를 재시작한다.
[root@ns1 named]# systemctl restart named

DNS 설정을 확인한다.
[root@ns1 named]# cat /etc/resolv.conf
#Generated by NetworkManager
search server.com
nameserver 200.200.200.3
nameserver 200.200.200.4

도메인을 확인한다.
[root@ns1 named]# dig kbs.com +short
200.200.200.4

[root@ns1 named]# dig mbc.com +short
200.200.200.4

👉 DNS 설정 시 확인해야 할 것

1-2. 2차 네임서버 설정
2차 네임서버에서 도메인을 등록한다.

[root@ns2 ~]# vi /etc/named.rfc1912.zones
:
:(생략)
zone "kbs.com" IN { type slave; file "kbs.com.zone"; masters { 200.200.200.3; }; };
zone "mbc.com" IN { type slave; file "mbc.com.zone"; masters { 200.200.200.3; }; };

설정파일에 문제가 없는지 체크한다.
[root@ns2 ~]# named-checkconf

네임서버를 재시작한다.
[root@ns2 ~]# systemctl restart named

DNS 설정을 확인한다.
[root@ns2 ~]# cat /etc/resolv.conf
#Generated by NetworkManager
search server.com
nameserver 200.200.200.3
nameserver 200.200.200.4

도메인을 확인한다.
[root@ns2 ~]# dig @200.200.200.4 kbs.com +short
200.200.200.4

[root@ns2 ~]# dig @200.200.200.4 mbc.com +short
200.200.200.4

포워드 존파일이 동기화 되었는지 확인한다.
[root@ns2 ~]# ll /var/named/

[root@ns2 ~]# cat /var/named/kbs.com.zone

[root@ns2 ~]# cat /var/named/mbc.com.zone

2. 웹 서버 설정
ns2에서 가상호스트를 설정한다.

사용자 생성
[root@ns2 ~]# mkdir /etc/skel/public_html
[root@ns2 ~]# useradd -g users kbsuser
[root@ns2 ~]# useradd -g users mbcuser
[root@ns2 ~]# passwd kbsuser
[root@ns2 ~]# passwd mbcuser

홈디렉터리 권한 변경
[root@ns2 ~]# chmod o+x /home/{kbs,mbc}user
[root@ns2 ~]# ll /home
합계 0
drwx-----x. 3 kbsuser users 102 1월 26 11:39 kbsuser
drwx-----x. 3 mbcuser users 81 1월 26 11:29 mbcuser

웹 페이지 생성
[root@ns2 ~]# su - kbsuser
[kbsuser@ns2 ~]$ vi public_html/index.html

<!doctype html>
<html>
  <head>
    <meta charset="utf8">
    <title> ::: kbs.com ::: </title>
  </head>

<body>
<?php
  $message = "kbs.com에 오신 것을 환영합니다.";
  echo $message;
?>
</body>
</html>

[kbsuser@ns2 ~]$ exit

[root@ns2 ~]# su - mbcuser
[mbcuser@ns2 ~]$ vi public_html/index.html

<!doctype html>
<html>
  <head>
    <meta charset="utf8">
    <title> ::: mbc.com ::: </title>
  </head>

<body>
<?php
  $message = "mbc.com에 오신 것을 환영합니다.";
  echo $message;
?>
</body>
</html>

[mbcuser@ns2 ~]$ exit

가상호스트 설정
가상호스트: 하나의 서버에 여러 개의 도메인을 운영하는 기술이다.
/etc/httpd/conf/httpd.conf: 웹 서버 main 설정파일

[root@ns2 ~]# vi /etc/httpd/conf/httpd.conf
:
:(생략)
#kbs.com

<VirtualHost *:80>
    DocumentRoot   "/home/kbsuser/public_html"
    ServerName     "kbs.com"
    ServerAlias    "www.kbs.com"
</VirtualHost>

#mbc.com

<VirtualHost *:80>
    DocumentRoot   "/home/mbcuser/public_html"
    ServerName     "mbc.com"
    ServerAlias    "www.mbc.com"
</VirtualHost>

문법 체크 및 가상호스트 확인
[root@ns2 ~]# httpd -t
Syntax OK

[root@ns2 ~]# httpd -S

웹 서버 재시작
[root@ns2 ~]# systemctl restart httpd

SELinux 권한 설정
[root@ns2 ~]# chcon -R -t httpd_sys_content_t /home/{kbs,mbc}user

웹 페이지 확인
[root@ns1 named]# lynx --dump kbs.com
kbs.com에 오신 것을 환영합니다.

[root@ns1 named]# lynx --dump www.kbs.com
kbs.com에 오신 것을 환영합니다.

[root@ns1 named]# lynx --dump mbc.com
mbc.com에 오신 것을 환영합니다.

[root@ns1 named]# lynx --dump www.mbc.com
mbc.com에 오신 것을 환영합니다.

실습> Host OS에서 가짜 도메인 설정하기

1. DNS 설정
ns1, ns2를 설정했다면 VMnet8의 1차 DNS와 2차 DNS를 설정한다.
만약 ns1만 설정했다면 VMnet8의 1차 DNS만 설정한다.
cmd -> ncpa.cpl -> VMnet8 -> 속성 ->
1차 DNS: 200.200.200.3
2차 DNS: 200.200.200.4


cmd에서 DNS 캐쉬를 삭제한다.
C:\Users\user>ipconfig/flushdns

크롬에서 도메인으로 접속한다.

설정이 잘 안되면

2. hosts 파일 설정
명령 프롬프트를 관리자 권한으로 실행해서 cmd가 나오면 %systemroot%\system32\drivers\etc\hosts 파일을
notepad로 열어서 테스트할 가짜 DNS를 설정한다.

C:\Windows\system32>notepad %systemroot%\system32\drivers\etc\hosts

200.200.200.3 sbs.com www.sbs.com
200.200.200.4 kbs.com www.kbs.com
200.200.200.4 mbc.com www.mbc.com

C:\Windows\system32>ipconfig/flushdns

C:\Windows\system32>ping sbs.com

Ping sbs.com [200.200.200.3] 32바이트 데이터 사용:
^C

C:\Windows\system32>ping kbs.com

Ping kbs.com [200.200.200.4] 32바이트 데이터 사용:
^C
C:\Windows\system32>ping mbc.com

Ping mbc.com [200.200.200.4] 32바이트 데이터 사용:
^C

3. 웹 페이지 확인
설정이 완료되면 cmd에서 ipconfig/flushdns 를 한번 실행하고
크롬에서 각 도메인으로 접속해서 웹 페이지가 잘 나오는지 확인한다.

http://sbs.com/
sbs.com에 오신 것을 환영합니다.

http://kbs.com/
kbs.com에 오신 것을 환영합니다.

http://www.mbc.com/
mbc.com에 오신 것을 환영합니다.

실습> 그누보드 설치하기

http://sbs.com/
http://kbs.com/
http://mbc.com/

3개의 도메인이 접속이 안되면 IP 주소로 설정한다.

여기서는 여러 개 중에서 sbs.com으로 설정한다.

공식 사이트 : https://sir.kr/
그누보드: PHP로 제작된 웹 애플리케이션으로 웹사이트를 쉽게 제작할 수 있는 프로그램이다.
-리눅스 서버
-APM연동

1. 패키지 설치
GD 라이브러리: PHP 그래픽을 생성/조절하는 그래픽 라이브러리
GD 라이브러리를 설치한다.
GD 라이브러리는 서버를 설치하는데 있어서 무조건 필수라고 생각하면 된다.

[root@ns1 ~]# yum -y install php-gd gd gd-devel libjpeg libjpeg-devel giflib giflib-devel libpng libpng-devel freetype freetype-devel

2. 웹서버 설정파일 수정
파일의 확장자가 .php, .html이면 php로 인식하는 설정을 한다.

[root@ns1 ~]# vi /etc/httpd/conf.d/php.conf

<FilesMatch \.(php|html)$>
    SetHandler application/x-httpd-php
</FilesMatch>

DirectoryIndex index.php index.html

php 설정파일을 수정한다.
date.timezone : 시간대 설정
short_open_tag : <?php -> <?
expose_php : 연동된 정보 출력 여부
display_errors : 개발용 On, 운영용 Off
개발용 On : PHP 코드가 에러가 발생되면 브라우저 화면에 에러가 출력된다.
운영용 Off : /var/log/httpd 로그 디렉터리에 파일로 기록된다.

[root@ns1 ~]# vi /etc/php.ini
[Date]
date.timezone = Asia/Seoul
short_open_tag = On
expose_php = Off
display_errors = On

php 설정이 완료되면 웹서버를 재시작한다.
-웹서버가 시작되지 않았다면 start 한다.
-웹서버 설정파일을 수정했다면 restart 한다.
-PHP 설정파일을 수정했다면 restart 한다.
-ss 명령어를 사용하거나 net-tools(netstat)를 설치해서 웹서버의 열린 포트를 확인한다.
[root@ns1 ~]# systemctl restart httpd

3. DB 설정
그누보드가 사용할 DB(DataBase)와 사용자를 생성한다.
DBMS 사용자 : gnuboarduser
DBMS 비번 : P@ssw0rd

'>>> DB사용자 설정 <<<'
CREATE DATABASE gnuboard; # DB 생성
CREATE USER gnuboarduser@localhost IDENTIFIED BY 'P@ssw0rd'; # 사용자 생성
GRANT ALL PRIVILEGES ON gnuboard.* TO gnuboarduser@localhost; # 권한 부여

'>>> DB와 DBMS 사용자 삭제 명령어 <<<'
DB 삭제 형식 : DROP DATABASE DB명;
DROP DATABASE gnuboard;

DBMS 사용자 삭제 형식 :
DROP USER DBMS사용자@DBMS호스트
DROP USER gnuboarduser@localhost

DBMS 접속 사용자 생성 형식 :
CREATE USER DBMS사용자@DBMS호스트 IDENTIFIED BY 'DBMS비번';
DB 권한 부여 형식 :
GRANT 권한 PRIVILEGES ON DB명.테이블명 TO DBMS사용자@DBMS호스트;

[root@ns1 ~]# mysql
CREATE DATABASE gnuboard; # DB 생성
CREATE USER gnuboarduser@localhost IDENTIFIED BY 'P@ssw0rd'; # 사용자 생성
GRANT ALL PRIVILEGES ON gnuboard.* TO gnuboarduser@localhost; # 권한 부여

MariaDB [(none)]> exit

4. gnuboard 설치
git을 설치하고 sbsuser 사용자로 변경한 후 gnuboard를 설치한다.
[root@ns1 ~]# yum -y install git
[root@ns1 ~]# su - sbsuser
[sbsuser@ns1 ~]$ cd public_html
[sbsuser@ns1 public_html]$ rm -f index.html
[sbsuser@ns1 public_html]$ git clone https://github.com/gnuboard/gnuboard5.git .
[sbsuser@ns1 public_html]$ rm -rf .git .gitattributes .gitignore

data 디렉터리의 SELinux 보안 문맥을 httpd_sys_content_t -> httpd_sys_rw_content_t 로 변경한다.
[sbsuser@ns1 public_html]$ mkdir -m 777 data
[sbsuser@ns1 public_html]$ chcon -t httpd_sys_rw_content_t data/
[sbsuser@ns1 public_html]$ ls -lZd data
drwxrwxrwx. sbsuser users unconfined_u:object_r:httpd_sys_rw_content_t:s0 data
[sbsuser@ns1 public_html]$ exit

그누 보드 설정
그누보드를 설치하기 위해서 http://sbs.com/ 으로 접속하면 그누보드 5의 설치 화면이 나온다.
오른쪽 아래쪽에 그누보드5 설치하기 버튼을 클릭한다.
라이센스가 나오면 동의합니다에 체크하고 다음 버튼을 클릭한다.
나중에 테스트 1: APM 연동 (GD라이브러리 설치: 에러 )
나중에 테스트 2: APM 연동 (data 생성하지 않고 설치: 에러)
나중에 테스트 3: APM 연동 (data 생성하고 권한을 755로 설정하고 설치: 에러)
나중에 테스트 4: APM 연동 (data 생성하고 권한을 777로 설정하고 SELinux를 설정하지 않고 설치: 에러)

라이센스에 동의하고 진행한다.

MySQL 정보입력 부분에서 아래와 같이 입력한다.
Host : localhost <-- DBMS 호스트
User : gnuboarduser <-- DBMS 사용자
Password : P@ssw0rd <-- DBMS 사용자 비밀번호
DB : gnuboard <-- DBMS DB

최고관리자 정보입력 부분을 아래와 같이 입력한다.
회원 ID : admin
비밀번호 : P@ssw0rd

데이터베이스 정보를 입력하고 다음을 클릭하면 아래처럼 화면이 나온다.

그누보드5 설치가 시작되었습니다.
전체 테이블 생성 완료 <-- show tables; 로 확인한다.
DB설정 완료
데이터 디렉토리 생성 완료 <-- data 디렉터리 확인한다.
DB설정 파일 생성 완료 (../data/dbconfig.php)
축하합니다. 그누보드5 설치가 완료되었습니다.

환경설정 변경은 다음의 과정을 따르십시오.
메인화면으로 이동
관리자 로그인
관리자 모드 접속
환경설정 메뉴의 기본환경설정 페이지로 이동

오른쪽 하단에 새로운 그누보드5로 이동 버튼을 클릭한다.

DBMS에 접속해서 gnuboard DB에서 생성된 테이블을 확인한다.
[root@ns1 ~]# mysql gnuboard
MariaDB [gnuboard]> SHOW TABLES;

MariaDB [gnuboard]> exit

[root@ns1 ~]# ls ~sbsuser/public_html/data -F
banner/ common/ dbconfig.php event/ file/ log/ member_image/ tmp/
cache/ content/ editor/ faq/ item/ member/ session/

그누보드 설치가 완료되면 data 디렉터리의 권한을 777 -> 711로 변경한다.
[root@ns1 ~]# chmod 711 ~sbsuser/public_html/data

5. 사이트 접속
웹 브라우저로 아래 주소로 접속해서 그누보드 페이지가 뜨면 그누보드 설치가 정상적으로 완료된 것이다.
http://sbs.com/

실습> 그누보드 삭제하기

1. 그누보드 생성할 때 필요한 것들
-시스템 사용자 생성
-> 그누보드 웹 데이터 생성
-DBMS 사용자 생성
-DB 생성

2. 그누보드 삭제할 때 필요한 것들
-시스템 사용자
-> 그누보드 웹 데이터 삭제 (rm -rf ~sbsuser/public_html/*)
-DBMS 사용자 삭제 (mysql -e 'DROP USER gnuboarduser@localhost')
-DB 삭제 (mysql -e 'DROP DATABASE gnuboard')

e.g.) sbsuser 인 경우

$HOME/.my.cnf 파일이 존재해야 한다.
[root@ns1 ~]# cat .my.cnf
[client]
#host = localhost
#user = root
password = P@ssw0rd

슈퍼유저(root)에서 실행해야 한다.
rm -rf ~sbsuser/public_html/*
mysql -e 'DROP USER gnuboarduser@localhost'
mysql -e 'DROP DATABASE gnuboard'

삭제 후 다시 설정하고자 한다면.
3. DB 설정
4. gnuboard 설치

실습> 그누보드 설치하기 2

mbc.com or kbs.com 아무거나 설치하기.

1. 패키지 설치
GD 라이브러리: PHP 그래픽을 생성/조절하는 그래픽 라이브러리
GD 라이브러리를 설치한다.
GD 라이브러리는 서버를 설치하는데 있어서 무조건 필수라고 생각하면 된다.

[root@ns1 ~]# yum -y install php-gd gd gd-devel libjpeg libjpeg-devel giflib giflib-devel libpng libpng-devel freetype freetype-devel

2. 웹서버 설정파일 수정
파일의 확장자가 .php, .html이면 php로 인식하는 설정을 한다.

[root@ns1 ~]# vi /etc/httpd/conf.d/php.conf

<FilesMatch \.(php|html)$>
    SetHandler application/x-httpd-php
</FilesMatch>

DirectoryIndex index.php index.html

php 설정파일을 수정한다.
date.timezone : 시간대 설정
short_open_tag : <?php -> <?
expose_php : 연동된 정보 출력 여부
display_errors : 개발용 On, 운영용 Off
개발용 On : PHP 코드가 에러가 발생되면 브라우저 화면에 에러가 출력된다.
운영용 Off : /var/log/httpd 로그 디렉터리에 파일로 기록된다.

[root@ns1 ~]# vi /etc/php.ini
[Date]
date.timezone = Asia/Seoul
short_open_tag = On
expose_php = Off
display_errors = On

php 설정이 완료되면 웹서버를 재시작한다.
-웹서버가 시작되지 않았다면 start 한다.
-웹서버 설정파일을 수정했다면 restart 한다.
-PHP 설정파일을 수정했다면 restart 한다.
-ss 명령어를 사용하거나 net-tools(netstat)를 설치해서 웹서버의 열린 포트를 확인한다.
[root@ns1 ~]# systemctl restart httpd

3. DB 설정
그누보드가 사용할 DB(DataBase)와 사용자를 생성한다.
DBMS 사용자 : gnuboarduser
DBMS 비번 : P@ssw0rd

'>>> DB사용자 설정 <<<'
CREATE DATABASE gnuboard; # DB 생성
CREATE USER gnuboarduser@localhost IDENTIFIED BY 'P@ssw0rd'; # 사용자 생성
GRANT ALL PRIVILEGES ON gnuboard.* TO gnuboarduser@localhost; # 권한 부여

'>>> DB와 DBMS 사용자 삭제 명령어 <<<'
DB 삭제 형식 : DROP DATABASE DB명;
DROP DATABASE gnuboard;

DBMS 사용자 삭제 형식 :
DROP USER DBMS사용자@DBMS호스트
DROP USER gnuboarduser@localhost

DBMS 접속 사용자 생성 형식 :
CREATE USER DBMS사용자@DBMS호스트 IDENTIFIED BY 'DBMS비번';
DB 권한 부여 형식 :
GRANT 권한 PRIVILEGES ON DB명.테이블명 TO DBMS사용자@DBMS호스트;

[root@ns1 ~]# mysql
CREATE DATABASE gnuboard; # DB 생성
CREATE USER gnuboarduser@localhost IDENTIFIED BY 'P@ssw0rd'; # 사용자 생성
GRANT ALL PRIVILEGES ON gnuboard.* TO gnuboarduser@localhost; # 권한 부여

MariaDB [(none)]> exit

4. gnuboard 설치
git을 설치하고 sbsuser 사용자로 변경한 후 gnuboard를 설치한다.
[root@ns1 ~]# yum -y install git
[root@ns1 ~]# su - sbsuser
[sbsuser@ns1 ~]$ cd public_html
[sbsuser@ns1 public_html]$ rm -f index.html
[sbsuser@ns1 public_html]$ git clone https://github.com/gnuboard/gnuboard5.git .
[sbsuser@ns1 public_html]$ rm -rf .git .gitattributes .gitignore

data 디렉터리의 SELinux 보안 문맥을 httpd_sys_content_t -> httpd_sys_rw_content_t 로 변경한다.
[sbsuser@ns1 public_html]$ mkdir -m 777 data
[sbsuser@ns1 public_html]$ chcon -t httpd_sys_rw_content_t data/
[sbsuser@ns1 public_html]$ ls -lZd data
drwxrwxrwx. sbsuser users unconfined_u:object_r:httpd_sys_rw_content_t:s0 data
[sbsuser@ns1 public_html]$ exit

그누 보드 설정
그누보드를 설치하기 위해서 http://sbs.com/ 으로 접속하면 그누보드 5의 설치 화면이 나온다.
오른쪽 아래쪽에 그누보드5 설치하기 버튼을 클릭한다.
라이센스가 나오면 동의합니다에 체크하고 다음 버튼을 클릭한다.
나중에 테스트 1: APM 연동 (GD라이브러리 설치: 에러 )
나중에 테스트 2: APM 연동 (data 생성하지 않고 설치: 에러)
나중에 테스트 3: APM 연동 (data 생성하고 권한을 755로 설정하고 설치: 에러)
나중에 테스트 4: APM 연동 (data 생성하고 권한을 777로 설정하고 SELinux를 설정하지 않고 설치: 에러)

라이센스에 동의하고 진행한다.

MySQL 정보입력 부분에서 아래와 같이 입력한다.
Host : localhost <-- DBMS 호스트
User : gnuboarduser <-- DBMS 사용자
Password : P@ssw0rd <-- DBMS 사용자 비밀번호
DB : gnuboard <-- DBMS DB

최고관리자 정보입력 부분을 아래와 같이 입력한다.
회원 ID : admin
비밀번호 : P@ssw0rd

데이터베이스 정보를 입력하고 다음을 클릭하면 아래처럼 화면이 나온다.

그누보드5 설치가 시작되었습니다.
전체 테이블 생성 완료 <-- show tables; 로 확인한다.
DB설정 완료
데이터 디렉토리 생성 완료 <-- data 디렉터리 확인한다.
DB설정 파일 생성 완료 (../data/dbconfig.php)
축하합니다. 그누보드5 설치가 완료되었습니다.

환경설정 변경은 다음의 과정을 따르십시오.
메인화면으로 이동
관리자 로그인
관리자 모드 접속
환경설정 메뉴의 기본환경설정 페이지로 이동

오른쪽 하단에 새로운 그누보드5로 이동 버튼을 클릭한다.

DBMS에 접속해서 gnuboard DB에서 생성된 테이블을 확인한다.
[root@ns1 ~]# mysql gnuboard
MariaDB [gnuboard]> SHOW TABLES;

MariaDB [gnuboard]> exit

[root@ns1 ~]# ls ~sbsuser/public_html/data -F
banner/ common/ dbconfig.php event/ file/ log/ member_image/ tmp/
cache/ content/ editor/ faq/ item/ member/ session/

그누보드 설치가 완료되면 data 디렉터리의 권한을 777 -> 711로 변경한다.
[root@ns1 ~]# chmod 711 ~sbsuser/public_html/data

5. 사이트 접속
웹 브라우저로 아래 주소로 접속해서 그누보드 페이지가 뜨면 그누보드 설치가 정상적으로 완료된 것이다.
http://sbs.com/

실습> Tomcat / JSP 환경 구성하기

https://cafe.naver.com/linuxmasternet/1959

Tomcat은 Java 기반에 JSP(Java Servlet Page) 약자로 자바 언어로 웹 애플리케이션을 작성할 수 있다.

APM환경, 방화벽이 구축된 환경에서 Tomcat에 JSP를 사용할 수 있게 설정한다.

1. 패키지 설치
관련 패키지를 설치한다.
[root@ns1 ~]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel tomcat tomcat-webapps tomcat-admin-webapps

2. 설정파일 수정
/etc/tomcat/tomcat-users.xml 파일의 내용에서 admin-gui를 수정한다.
이 부분은 WEB Application 을 Deploy(배포) 하기 위해서 필요하다.

#vi /etc/tomcat/tomcat-users.xml

<role rolename="admin-gui"/>
<user name="admin" password="P@ssw0rd" roles="manager-gui" />

3. tomcat 시작
tomcat 서비스를 활성화하고 tomcat을 실행한다.

[root@ns1 ~]# systemctl enable tomcat
[root@ns1 ~]# systemctl start tomcat

tomcat을 실행하면 기본 포트 3개가(8080,8009,8005) 오픈된다.
8080 포트: 기본을 설정되어 있는 웹서비스 포트
8005 포트: HTTP 프로토콜을 처리하기 위한 내부 접속용 포트
8009 포트: mod_jk.so 를 이용해서 아파치 웹서버와 통신하기 위한 포트

[root@ns1 ~]# netstat -nltp|grep java

4. 방화벽 설정
tomcat 관련 포트를 방화벽에 추가한다.
방화벽에 추가할 포트: 8080(웹서비스 포트), 8009(아파치 웹서버와 통신하는 포트), 8005(내부 접속용 포트)

[root@ns1 ~]# vi /etc/sysconfig/iptables

[root@ns1 ~]# iptables-restore /etc/sysconfig/iptables

[root@ns1 ~]# iptables -nL

5. 서버 접속
tomcat 에 8080으로 접속해서 고양이가 나오면 잘 설정한 것이다.
http://200.200.200.3:8080/

6. JSP 파일 생성
웹 기본 경로로 접속해서 hello.jsp 파일을 생성한다.
#cd /usr/share/tomcat/webapps/ROOT

#vi hello.jsp

<%@ page contentType="text/html; charset=utf-8" %>
<%! String str = "Hello World!"; %>
<!doctype html>
<!--
파일명: hello.jsp
프로그램 설명: tomcat에서 JSP 테스트 프로그램
작성자: 리눅스마스터넷
-->
<html>
<head>
<title>::: <%=str%> :::</title>
</head>
<body>

    <center>
    <h1> JSP 세계에 오신 것을 환영합니다.</h1>
    <P>
    <% out.println(str); %>

</center>
</body>
</html>

파일 작성이 완료되면 홈디렉터리로 이동한다.
[root@ns1 ROOT]# cd

7. 서버 재접속
tomcat 에 8080으로 접속해서 아래처럼 메세지가 나오면 잘 설정한 것이다.
http://200.200.200.3:8080/

JSP 세계에 오신 것을 환영합니다.
Hello World!

실습> CentOS 7에서 Apache + Tomcat 연동 환경 구성하기

참고: https://cafe.naver.com/linuxmasternet/1960

Apache + Tomcat + MariaDB

Apache Jserv Protocol로 아파치 웹서버와 톰캣이 서로 통신하는 프로토콜

1. 패키지 설치
yum -y install gcc wget httpd httpd-devel
wget https://mirror.navercorp.com/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.48-src.tar.gz
tar xzf tomcat-connectors-1.2.48-src.tar.gz
cd tomcat-connectors-1.2.48-src/native
./configure --with-apxs=/usr/bin/apxs
make
make install

컴파일이 완료된 후 홈디렉터리로 이동한다.
[root@ns1 native]# cd

설치가 완료되면 mod_jk.so 파일이 생성된다.
-mod_jk.so 파일의 역할은 Client가 Server로 접속하면 URL과 Port를 확인한 후 WAS(Tomcat)로 보내는 역할을 한다.
-아파치 모듈: libphp5.so(php5 모듈), mod_vhost_alias.so(가상호스트 모듈)
#ls -l /usr/lib64/httpd/modules/mod_jk*
-rwxr-xr-x. 1 root root 1565864 1월 26 16:49 /usr/lib64/httpd/modules/mod_jk.so

2. tomcat connector 설정
httpd.conf 파일을 수정한다. 파일 맨 아래쪽에 아래 내용을 넣는다.

[root@ns1 ~]# vi /etc/httpd/conf/httpd.conf
:
:(생략)
#모듈 로드
LoadModule jk_module modules/mod_jk.so
JkWorkersFile "conf/workers.properties"
#로그파일
JkLogFile "logs/mod_jk.log"
JkLogLevel info
#로그형식
JkLogStampFormat "[%a %b %d %h:%M:%S %Y]"
JkRequestLogFormat "%w%v%T"

#해당 확장자를 처리한 worker를 지정
JkMount /.do worker1
JkMount /
.jsp worker1
JkMount /servlet/* worker1
JkShmFile run/mod_jk.shm

<VirtualHost *:80>
    DocumentRoot /usr/share/tomcat/webapps/ROOT
    ServerName   200.200.200.3
    jkMount      /*  worker1
    ErrorLog     logs/error_log
    CustomLog    logs/access_log combined
</VirtualHost>

[root@ns1 ~]# vi /etc/httpd/conf/workers.properties
worker.list=worker1
#protocol
worker:worker1.type=ajp13
#host
worker:worker1.host=localhost
#port
worker:worker1.port=8009

3. 웹 서버 재시작
웹 서버를 재시작 한다.
[root@ns1 ~]# systemctl restart httpd

웹 서버에 접속하면 톰캣과 연동되어 JSP 파일이 출력된다.
아파치 웹 서버 포트: 80
톰캣 포트: 8080

http://200.200.200.3/ <-- 접속 허용
http://200.200.200.3:8080/ <-- 접속 허용

4. 톰캣 포트 비활성화
http://200.200.200.3/ <-- 접속 허용
http://200.200.200.3:8080/ <-- 접속 거부

Tomcat의 8080 포트를 비활성화 한다.
71번 라인에 8080으로 설정되어 있는 부분은 모두 HTML 주석 처리를 한다.

[root@ns1 ~]# vi /etc/tomcat/server.xml

5. AJP 커넥터 활성화
AJP란 무엇인가?
Apache Jserv Protocol로 아파치 웹서버와 톰캣이 서로 통신하는 프로토콜이다.

AJP 커넥터를 설정한다.
95번 라인에 있으니 주석이 제거가 되었는지 확인한다.(기본값은 주석이 제거되어 있다.)

6. tomcat 재시작
tomcat을 재시작한다.
[root@ns1 ~]# systemctl restart tomcat

8080 포트를 확인하면 열려있지 않은 것을 확인할 수 있다.
[root@ns1 ~]# netstat -nltp|grep java

7. 방화벽 설정
[root@ns1 ~]# vi /etc/sysconfig/iptables

[root@ns1 ~]# iptables-restore /etc/sysconfig/iptables
[root@ns1 ~]# iptables -nL

8. 접속
http://200.200.200.3/ <-- 접속 허용
http://200.200.200.3:8080/ <-- 접속 거부

http://200.200.200.3 으로 접속해서 고양이가 나오면 Apache + Tomcat 연동이 잘 된 것이다.

http://200.200.200.3:8080/ 으로 접속을 하면 아래처럼 접속이 안되는 것을 확인할 수 있다.
사이트에 연결할 수 없음200.200.200.3에서 연결을 거부했습니다.
다음 방법을 시도해 보세요.

연결 확인
프록시 및 방화벽 확인
ERR_CONNECTION_REFUSED

profile
정보보안 전문가

0개의 댓글