공부/리눅스

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

Codey 2024. 6. 13. 14:49

https://minuk2.tistory.com/184

 

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

필요 테스트 파일1. 아파치 설치리눅스 운영체제에서는 패키지와 패키지 매니저를 지원합니다.리눅스 패키지 : 여러 파일을 모아 하나의 파일로 저장하고 있는 압축 파일입니다.sudo suapt update--

minuk2.tistory.com

지난 글에서 이어집니다.

교수님 과제 : 리눅스에 구축하여 오류를 수정하라.

모델 2 아키텍처 (MVC 패턴)

  • Model(모델) : 비즈니스 로직 및 데이터 접근 담당
  • View(뷰) :  사용자 인터페이스 담당, JSP로 구현
  • Controller(컨트롤러) : 클라이언트 요청을 처리, 모델과 뷰 사이를 연결, 서블릿으로 구현

 

ubuntu.zip
1.46MB


1.  PC에서 우분투 서버로 zip 파일 이동

-- cmd --
scp ubuntu.zip ubuntu@192.168.178.133:/home/ubuntu
-- ubuntu --
unzip model2_jsp.zip
cd [옮길 파일 경로]


2.  파일 압축 풀기

unzip ubuntu.zip

3.  파일 복사하여 이동

  • META-INF
  • src
cp -r /home/ubuntu/META-INF/* /var/lib/tomcat9/webapps/ROOT
cp -r /home/ubuntu/src/* /var/lib/tomcat9/webapps/ROOT

4. MySQL에서 테이블 생성

mysql -u root
use micom;
source /home/ubuntu/sql/board.sql;

5. ssh로 접속

ssh ubuntu@192.168.178.133
sudo chmod -R 777 /var/lib/tomcat9/webapps/ROOT/WEB-INF/classes
-- classes 디렉토리에 전체 권한을 부여합니다.
javac -encoding ISO-8859-1 -classpath /usr/share/tomcat9/lib/servlet-api.jar:/var/lib/tomcat9/webapps/ROOT/WEB-INF/classes -d /var/lib/tomcat9/webapps/ROOT/WEB-INF/classes /var/lib/tomcat9/webapps/ROOT/WEB-INF/src/*.java
-- 소스 코드의 인코딩이 ISO-8859-1이기 때문에, 이를 명시하여 컴파일
-- 컴파일은 Java 소스 코드를 바이트코드로 변환하여 JVM에서 실행 가능하게 함

6. mysql 테이블 이름 변경

mysql -u root
use micom;
rename table BOARD to board;
* 오류 : 리눅스 운영체제에서 MySQL은 테이블 이름을 대소문자를 구분하여 테이블명을 변경

7. 경로 변경

cd /var/lib/tomcat9/webapps/ROOT/WEB-INF/src/action
vi BoardWriteProAction.java
String saveFolder="var/lib/tomcat9/webapps/ROOT/boardUpload"
* 오류 : 파일 업로드가 되지 않는 오류
-- 20줄에 코드 수정
-- 파일 업로드 디렉토리를 지정하는 코드
-- 경로가 "/boardUpload"로 절대 경로로 설정되어 있음
-- 절대 경로를 사용하면 애플리케이션이 다른 위치에서 실행될 때에도 파일 경로를 정확하게 참조할 수 있습니다.
-- 파일 업로드와 관련된 보안 및 접근 권한을 일관되게 관리할 수 있음

8. 권한 부여

chmod -R 777 /var/lib/tomcat9/webapps/ROOT/boardUpload
-- boardUpload 디렉토리와 그 안의 모든 파일 및 하위 디렉토리에 대해 읽기, 쓰기, 실행 권한을 부여

9. 파일 다운로드시 오류 해결

cd /var/lib/tomcat9/webapps/ROOT/board
vi file_down.jsp
String sFilePath = sDownloadPath + "\\" + fileName;를 
String sFilePath = sDownloadPath + "/" + fileName;로 변경
  • '\\'는 Windows에서 사용하는 경로 구분자
  • '/' 유닉스 계열(Linux, macOS 등)에서 사용하는 경로 구분자
  • 현재는 리눅스에서 사용하기 때문에 '/'를 쓰면 됨