공부/리눅스

리눅스 환경 기반 JSP 웹서버 구축

Codey 2024. 6. 12. 19:58

구축 환경

  • ubuntu version 22.04.3

C.zip
1.45MB


1. 아파치 설치

  • 리눅스 운영체제에서는 패키지와 패키지 매니저를 지원합니다.
  • 리눅스 패키지 : 여러 파일을 모아 하나의 파일로 저장하고 있는 압축 파일입니다.
sudo su
apt update
-- 패키지 업데이트 : 패키지를 다운로드 할 수 있는 저장소의 최신 정보를 업데이트 
apt install -y apache2
-- 아파치 설치
ufw allow http
-- http 방화벽을 해제
ufw allow https
-- https 방화벽을 해제

2. 자기 IP로 웹에서 접근해보기

성공적으로 접속이 가능한 모습


3. 자바 설치

apt-get install -y openjdk-11-jdk
-- jdk11을 설치하는 명령어입니다.
-- apt-get : 패키지를 설치, 업그레이드, 제거 및 관리하기 위한 명령어
-- install : apt-get의 하위 명령어로 지정된 패키지를 설치
-- y : 설치 중 발생하는 모든 명령어를 yes로 응답
-- openjdk-11-jdk는 jdk(11)을 의미하며 자바 애플리케이션을 개발하고 실행하는데 필요한 도구와 라이브러리

javac -version
-- 설치된 버전을 확인합니다.


4. 톰캣 설치

apt-get install -y tomcat9
-- 톰캣 설치

5. 톰캣 설치 확인

자신의 주소와 톰캣의 포트번호(8080)을 입력하여 확인합니다.


6. 아파치와 톰캣 연동

apt-get install –y libapache2-mod-jk
-- 아파치 http 서버와 tomcat 애플리케이션 서버 간의 통합을 위한 모듈 mod_jk를 설치하기 위함
vi /etc/libapache2-mod-jk/workers.properties
-- mod_jk 모듈의 설정을 변경
workers.tomcat_home=/usr/share/tomcat9
-- tomcat 서버의 홈 디렉토리를 지정하는 설정
-- user/share/tomcat9 : tomcat 서버가 설치된 디렉토리 경로
workers.java_home=/usr/lib/jvm/openjdk-11
-- java 홈 디렉토리를 지정하는 설정 항목
-- /usr/lib/jvm/openjdk-11 : openjdk 11이 설치된 디렉토리 경로


7. 아파치 HTTP 서버의 기본 가상 호스트 설정 파일 설정

vi /etc/apache2/sites-available/000-default.conf
-- 아파치 HTTP 서버의 기본 가상 호스트 설정 파일
-- *가상 호스트 : 하나의 아파치 HTTP 서버 인스턴스에서 여러 웹사이트를 호스팅할 수 있도록 해주는 기술
DocIumentRoot /var/lib/tomcat9/webapps/ROOT
-- 아파치 HTTP 서버가 기본적으로 제공할 웹사이트의 루트 디렉토리를 지정
JkMount /* ajp13_worker
-- JkMount는 URL 패턴을 톰캣 서버로 전달하도록 설정
-- /* : 이 패턴은 모든 요청을 의미. 즉, 루트 경로부터 시작하는 모든 URL에 대한 요청을 포함
-- ajp13_worker : HTTP 서버가 AJP를 사용하여 Tomcat 서버와 통신할 수 있도록 설정된 커넥터

8. Tomcat과 AJP 커넥터 연결

  • AJP 커넥터 : 웹 서버와 애플리케이션 서버 간에 요청을 전달하는 역할을 하는 커넥터
vi /etc/tomcat9/server.xml
<Connector 	protocol=“AJP/1.3”
			address=“::1”
			port=“8009”
			redirectport=“8443” />
-- 이 부분에 주석을 수정해줍니다.
<Connector 	protocol=“AJP/1.3”
			address=“0.0.0.0”
            -- 모든 네트워크 인터페이스 의미
			port=“8009”
			redirectport=“8443” 
			secretRequired=“false”
            -- AJP 커넥터가 요청을 수락할 때 비밀키를 요구하지 않게 설정
            -- 내부 네트워크에서 빠르게 설정하고 동작을 확인하기 위해 비밀 키 설정을 생략
            />

9. 설정 적용을 위해 아파치와 톰캣 재시작

service apache2 restart
service tomcat9 restart

자기 자신의 ip만 입력해도 바로 톰캣서버로 이동됩니다.


10. MySQL 설치

apt install –y mysql-server
-- MySQL를 설치
ufw allow mysql
-- 방화벽 해제
mysql -u root
-- mysql 접속
create database micom;
-- micom db를 생성
create user ‘minuk’@’%’ identified by ‘minuk’;
-- user 생성
grant all privileges on *.* to 'minuk'@'%' with grant option;
-- 접속 권한 주기
flush privileges;
-- 변경 내용 적용
exit
-- mysql 접속 종료
vi /etc/mysql/mysql.conf.d/mysqld.cnf
-- mysql 서버의 주요 설정 파일 중 하나
bind-address = 0.0.0.0
-- 모든 ip 주소에서 접근 허용
systemctl restart mysql
-- mysql 재실행

bind-address를 저렇게 변경해주시면 됩니다.


11. PC 파일을 우분투로 옮기기

scp C.zip ubuntu@192.168.178.133:/home/ubuntu
-- ubuntu@192.168.178.133 : 원격 서버의 사용자 이름과 ip 주소
-- /home/ubuntu : 원격 서버의 경로
-- 필요한 파일을 압축하여 우분투 서버에 옮겨줍시다.

apt install unzip
-- zip 파일 압축해제를 위해 다운

unzip C.zip
-- unzip [파일명.zip]

cd [옮길 파일 경로]

이 파일들을 옮겨보겟습니다.

cd /home/ubuntu/linuxsource 
-- 옮길 파일이 있는 디렉토리 경로로 접속
mv mysql-connector-java-5.1.47.jar /var/lib/tomcat9/lib
mv cos.jar /var/lib/tomcat9/lib
mv jstl.jar /var/lib/tomcat9/lib
mv standard.jar /var/lib/tomcat9/lib

그 다음 소스 구축 자료 파일과 MEFTA-IFN 파일들을 톰캣 ROOT에 옮겨보겠습다.

mv css /var/lib/tomcat9/webapps/ROOT
mv kboard /var/lib/tomcat9/webapps/ROOT
mv kmember /var/lib/tomcat9/webapps/ROOT
mv META-INF /var/lib/tomcat9/webapps/ROOT
mv nboard /var/lib/tomcat9/webapps/ROOT
mv script /var/lib/tomcat9/webapps/ROOT
mv WEB-INF /var/lib/tomcat9/webapps/ROOT

12. MySQL context.xml 파일 수정

vi /var/lib/tomcat9/webapps/ROOT/META-INF/context.xml
username = minuk
-- 본인이 설정한 것으로 수정
password = minuk
-- 본인이 설정한 것으로 수정

13. MySQL에서 DB 생성

mysql -u root
use micom;
source /home/ubuntu/sql/kboard.sql;
source /home/ubuntu/sql/kmember.sql;
source /home/ubuntu/sql/member.sql;
source /home/ubuntu/sql/nboard.sql;
-- sql문이 있는 경로에 있는 sql문을 source로 적용시켜줍니다.
show tables;
-- 테이블이 만들어졌는지 확인

14. http://우분투서버 ip/login.do로 접속하여 확인

회원가입 및 테스트 해보기

use micom;
mysql -u root
select * from kmember;