본문 바로가기
1.A. High Level Computing/On Premise Computing

웹개발 환경 구성(Eclipse) 고민기 (쓸데없이 긴) (미완성)

by Never Settle Down 2023. 1. 14.
반응형

포스팅 시작에 앞서

이 글은 How to 인스트럭션이 아님을 안내합니다.

 

How to 를 보시고 싶은 분은 

아래 링크를 누르시면 됩니다:

https://www.google.com 

 

Google

 

www.google.com

 

술 땡기면 작업하다 술 먹는거고

잠오면 때려치고 자러 갈 거에요.

언제 완성될지도, 어떻게 하는건지도

나도 몰라요 ㅋㅋ ㅜ

 

저의 뻘짓 헛짓 썰전 여과없이 기록하는 포스팅입니다.

 

 

 

 

I'm just a regular everyday normal mf.

시작 전 잡설

 

더보기

 

전자공학과로 입학한지 어언 10년.

FPGA와 프로세서 아키텍쳐에 매료되었지만 

앞으로 먹고살만한 길은 소프트웨어 공학인 것 같아 마지막에 급선회하여 프로그래밍 관련학과를 졸업하였다.

 

 

망해가는 모 기업.

개발자로 입사한 나는 System Operation 팀으로 배정받았다.

 

내 과실도 있지만... 삼천만번의 팀 이전을 묵살해버린 후먼 리소스팀. 

아무리 보여줘도 묵묵 부답만 돌아왔던 내 스킬셋과 성향을 바라보면서 사표를 던져버렸다.

 

 

퇴직금은 이미 바싹 말라버렸고

지금 이 순간을 위해 준비해둔 자금을 뭉텅뭉텅 까먹는 이 시점

웹개발 환경을 어떻게 구축했는지 기억이 1도 안나는 나를 위해

 

"어떻게 하는지"가 아닌, "어떻게 했는지"를 적어본다.

옳은 방법, 좋은 루트가 아닐 수 있으므로 참고해 주시길 바란다.

 

 

---------------------------------------------------------------------------------------------------------------------------------------------

https://medium.com/@zandra.harner/setting-up-the-develop-environment-for-lop-a-web-application-in-eclipse-ide-\7f3a36eddf60

 

Setting Up the Develop Environment for lop a Web Application in Eclipse IDE

Step 1 — Download Eclipse IDE support web programming

medium.com

 

 

 

 

필자는 초기에 윈도우 상에서 환경 구축하려 하였으나,

- 이전에 들었던 강의의 자료가 리눅스 환경 기반인 점,

- 집 밖에 나가면 쓰는 노트북별로 (센트오에스, 윈도우, 맥) 각기 구축해야되는 점

- 구축 하고나면 롤백하기 어렵고 귀찮다는점,

을 참고하여 가상머신에 구축하기로 결정하였다.

2023.01.15 - [Engineering Log] - 무료 하이퍼바이저 (Proxmox) 관련 토막 Log

 

무료 하이퍼바이저 (Proxmox) 관련 토막 Log

여자 잘 패는 크리스 브라운... ㅋㅋㅋ 제온 E3 4C8T ~ 4C4T + DDR3 ECC Unbffd + C칩셋 (224랑 뭐였지) 서버 HW를 중고로 저렴하게 가져와 쓰고있다. 요즘에는 하드베이 (특히 3.5인치)를 없애고 워터블럭을

thewanderer.tistory.com

5코어 + 8기가 + 띤프로비전드 50기가에

내장그래픽 (Xeon E3 1265L V3 내장글카, P1000인가)을 VirtIO로 할당했다. VRAM 256MB.

이런, 서버 바이오스에서 내장그래픽 메모리를 더 먹여야겠다. 렉이 심하네.

... 비디오 램 옵션이 없다. 워크스테이션이 아니라 서버보드라 그런가..

 

 

서랍에서 고이 주무시고 있는 쿼드로를 깨워야겠다.

ECC램조차 탈락된 짭드로 K2000

GT 610을 대신 꽂았다.

D-SUB이 없어서.

...팬이 안 돈다.

인식은 되는데, 팬이 안 돈다.

이거슨 나중에 수리하는 것으로 하고, 일단 포기.

 

 

 

A. Eclipse + JDK 설치 (IDE)

  A.1. Windows 10 22H2

  A.2. Ubuntu 22.04 LTS

  A.3 macOS Monterey 12.6.7

 

B. Apache Tomcat 설치 (Web Server for local test)

  B.0. Windows

  B.1. Ubuntu

  B.2. macOS

 

C. JSP 구동 준비

  C.0.

  C.1.

  C.2. macOS

 

deprecateds:

C. Test 프로젝트 생성 (git에 올릴 + 굳은 머리 털기)

D. Git 연동

 

 

 

A. Eclipse + JDK 설치 (IDE)

https://www.eclipse.org/downloads/

 

Eclipse Downloads | The Eclipse Foundation

The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 415 open source projects, including runtimes, tools and frameworks.

www.eclipse.org

https://jdk.java.net/20/

 

OpenJDK JDK 20.0.2 GA Release

OpenJDK JDK 20.0.2 General-Availability Release This page provides production-ready open-source builds of the Java Development Kit, version 20, an implementation of the Java SE 20 Platform under the GNU General Public License, version 2, with the Classp

jdk.java.net

 

 A.1. Windows 10, 22H2 클린설치 (aka 포맷)

더보기

 

 

 

실행 후 Enterprise Java and Web Dev 선택

디렉토리 설정 후 설치

 

옛날 학생시절에는 환경 변수를 설정해줬는데

요즘에도 하나?

모르겠다. 일단 해보자.

 

 

 

오라클이 자바 꿀꺽 하고나서 

(테크니컬리, Sun사를 꿀꺽하고서)

일반 개발자들에게 손가락을 나누어 주었다.

I am given a finger. We were given some fingers. by Oracle.

 

JRE, 자바 런타임은 단순히 자바를 실행할 수 있는 가상환경을 구축해 주는 것이고

JDK는 자바 디벨롭먼트 킷, 자바를 개발 할 수 있게끔 JRE + alpha 기능을 가진 환경이다.

 

오라클은 유료화로 떠나버렸으므로

무료인 오픈소스 자디킷을 받는 것이다.

-> 유료로 기억하는데 무료로 다운받아 쓸 수 있는 것같다...?

몰라 ㅅㅂ

 

 

오픈 자디킷 다운로드 후 설치.

 

설...ㅊ....

압축파일이네

 

C - 프로그램빠일스  밑에 Java 폴더 만들고

압축 풀기

 

 

세팅즈 - 시스템 - 어바웃 - 어드밴스트 시스템 쎄팅

하단에 환경 베리어블즈 클릭

뉴 - JAVA_HOME 및 ~~ 입력, 오께 클릭.

... javac 이 안되서 보니까 사용자 변수에 추가했다.

꼭 아래 시스템변수에 추가하자. 상단 유저 베리어블에 넣어봤자 반응없다. ㅜ
클래스패스 추가

그 뒤,

PATH 변수 에딧 - 추가 - 자바홈 bin 디렉토리 추가.

좌측 사진에 오타가 있다. 

%JAVA_HOME%\bin

 

맨 위로 올려주었다.

순차검색에서 젤 먼저 발견되라고 넣어줬는데...

안된다.

java, javac, javap 안된다.

 

자바 환경변수를 왜 설정해줬더라...

자바 컴파일떄문이었나.

 

기억이 안 난다.

 

 

...

윈도우를 밀었다.

G:\Java~~

폴더를 생성하고 자디킷 압축풀기.

(별도 드라이브에 설치함)

 

 

 

일단 끝.

윈도우 밀어도 안된다.

모르겠다.IDK.

 

패쓰.

 

 

 A.2. Ubuntu Desktop. 22.04 LTS

더보기

 

아, 드디어 apt와 dnf (볼 때마다 딛 낫 피니시드가 생각나는)와 같은 애플리케이션 매니저를 쓸 수 있게 되었다.

Noice.

 

수도 수

앱트 업데이트

앱트 업그레이드

앱트 인스톨 넷-툴즈

앱트 인스톨 글랜시즈

ufw enable

reboot

재기동후

poweroff

 

순정(?) 상태를 스냅샷 찍어주고 진행.

 

 

sudo apt install openjdk-ver-jdk

 

끝.리눅스가 훨씬 편하다. 굿.

 

 

 

(노트북 CentOS 밀어버리고 Ubuntu깔았는데, 환경변수 안해줘도 아직까진 잘 된다.)

환경변수 설정해주자.

 

/usr/lib/jvm/java-19-openjdk-amd64

해당 위치가 맞는지 확인해보고

(CLI 유저의 경우 특히)

 

맞으면

 

sudo nano /etc/profile

 

 

환경변수 추가한 프로파일

반영

 

source /etc/profile

 

$JAVA_HOME

입력하여서 결과가 ~~~는 디렉토리입니다. 출력되는지 확인.

 

끝.

 

java --version으로 오픈자디킷 설치 완료 확인.

진짜 끝.

 

 

 

 

윈도우 스크류 유.

*nix가 최고인듯.

 

토발즈 크라이스트 컴펠즈 유

 

 

 

   A.3. macOS

더보기

EE를 받았다.

 

 다운받은 dmg 파일을 열어서

 애플리케이션 폴더에 그냥 드래그해서 넣으면 설치가 끝난다.

 

 

자디킷은?

 일단 다운로드 받아 압축을 푼다.

더블 클릭 해도 되고

tar xf ....

로 풀어도 된다.

 

sudo mv jdk... /Library/Java/JavaVirtualMachines

 ...은 탭을 눌러서 자동 완성함을 의미한다.

 

상기 디렉토리로 압축 푼 폴더를 이동시킨다.

해당 폴더를 LS로 찍어보면

이렇게 덜렁 들어가있을 것이다.

 

 

java --version으로 확인.

 

 자박도 되니?

 ㅇㅇ

 

 

이클립스쪽에 해당 JDK을 연동시키는 것

(위치를 알려주는 것)은

아래 톰캣 서버추가 과정서 진행한다.

 

 

 

 

B. Apache Tomcat 설치 (Web Server for local test)

https://tomcat.apache.org

 

Apache Tomcat® - Welcome!

The Apache Tomcat® software is an open source implementation of the Jakarta Servlet, Jakarta Server Pages, Jakarta Expression Language, Jakarta WebSocket, Jakarta Annotations and Jakarta Authentication specifications. These specifications are part of the

tomcat.apache.org

톰캣은 이클립스 상에서 손쉽게 받을 수 있어

굳이 홈페이지 들어가서 별도로 다운로드 받을 필요는 없다.

 

 

   B.0. Windows

더보기

 

필자는 tomcat 10.1을 설치하였다.

64비트 Windows zip 다운로드,

C:\Program Files\Apache Software Foundation

폴더 생성 후 압축을 풀어 넣었다.

 

이클립스 IDE, 서버가 없다고 하니 추가해주자.

Eclipse IDE에 서버 생성하기.

서버 탭 선택후 우클릭 - 뉴 - 서버

(또는 파란 안내문 클릭)

 

아파치 - 톰캣 10.0 (다운로드받은 버전과 맞추기)

이름 변경하고싶으면 변경하고,

톰캣 압축 푼 디렉토리 삽입.

 

아하.

JRE가 여기있구나.

요기서

A단계 중 압축 푼 JDK를 설정해줬다.

 

이클립스 깔 때 딸려온 넘이 있는 것 같다.

나는 그냥 바꿔봤다.

 

톰캣 10.0을 받았다.

톰캣 10.1로 하려니 안된다.

톰캣 10.1 다운로드 받으실?

물어본다.

 

ㅋㅋ;;

변경해줬다.

 

자디킷이랑 톰캣 이제 직접 안 받아도 되는구나.

세상 좋아졌네.

 

테스트 해보자.

프로젝트 하나 만들고, HTML 파일을 webapp 디렉토리에 하나 만들어줌. index.html

슬라브 스타일로 혤로 월드를 써줬다.

얼웨이즈 유즈 디스 서버 체크.

피니시.

 

 

에러를 뿜어내더니 (심장이 잠깐 멎었다)

창이 떴다.

아, 프리비엣 모이 드루그.

(안녕 나의 친구(남성)여)

잠깐, 컴퓨터는 여성형인가? 마야 빠드루가?

 

그럼 소프트웨어는 성별이 어케되지?

미들웨어는 성별이 달라지나?

(주먹구구식 러시아어 학습의 폐해)

 

 

내 블로그 메인화면 소스코드를 긁어서

복붙한 다음 실행시켜봤다.

(스크립트는 먹는지, 외부에서 데이터는 제대로 가져오는지 궁금)

-> 하지 말자. 이거때문인지 티스토리에서 자꾸 캡챠가 뜬다. 빡이 친다.

ohh yasss

 

위의 URL이 보이는가?

127.0.0.1

로컬 호스트이다.

 

포스팅 하나를 눌러봤다.

아주 잘 뻗는다.

아...아...오 야스...

진짜 별거 아닌데 ㅋㅋ

임베디드만 만지다 웹으로 돌아오니

되는게 기분이 좋다. ㅋㅋㅋ.

내 어릴적 미소를 보여주다니.

 

 

 

B.1. Ubuntu

더보기

 

sudo apt install tomcat10

...안된다.

10부터 뭐가 다른가.

tomcat9는 잘 된다.

 

구찮으니까 tomcat9 깔아야겠다.

뭐 잔뜩 가져온다.

가져와라.

 

설치 다되고 파이어폭스를 켜서

localhost:8080

접속.

 

...?

아 방화벽.

 

sudo ufw allow http

sudo ufw allow https

sudo ufw allow 8080

 

 

sudo service tomcat9 status

-> Fail, JDK or JRE 없음.

-> sudo apt install default-jdk 해봄 (갑자기 생각나서)

-> openjdk11을 설치하는...

-> 후 sudo service tomcat9 start 하니 실행됨.

 

롤백하자 ㅜㅜ.

 

롤백

서버 재기동

- 디폴트 jdk 설치 (환경변수 때려침)

- 톰캣9 설치

바로 됨.

 

허탈하다.

나이먹은게 슬퍼지는 시점이다.

스냅샷 찍자.

진짜 허탈하다.

 

autoremove로 필요없는 것 지워줬다.

 

 

 

   B.2. macOS

더보기

이클립스를 켜고나서

서버 탭이 안 보이면 이렇게

Window - Show View - Servers를 누르면 된다.

 

 서버가 없다고 찡얼거리는 문장을 눌러준다.

 

 톰캣 검색,

나는 10.1을 쓸 예정이다.

 

맥북 한 놈은 이렇게 configure runtime environment... 문구가 뜨고

다른 맥북 한 놈은 안 뜬다

 

안 뜨는 놈은 처음 까는 녀석이고

뜨는 놈은 이미 깔아서 자꾸 뻗는 녀석이다.

 

 

만약에 저렇게 잔존물이 있을 경우

컨피겨 들어가서 기존 것을 지워준다.

(잘 되는 사람은 굳이 지금 프로세스를 진행할 이유가 없기 때문에 지울 이유도 없겠다)

 

 

 자동으로 다운받아주는 녀석을 쓰기로 결정.

Download and Install 통해서 다운로드 받으면 되겠다.

 

 

 

그 담엔 JDK 설정 차례.

 

installed JREs...를 눌러

아까 깔았던 JDK를 물려준다.

 

 

Monterey 맥북 (구형) 2대는 모두 직접 손으로 추가해줘야 했다.

Ventura 맥 미니는 (2023년식) 별도 작업 없이

바로 아래처럼 인식이 되어있다.

그럼 아래 추가하는부분을 스킵하면 되겠다.

 

 

add

 

standard vm, next

 directory...

(직접 타이핑해줘도 된다)

 

/Library/Java/JavaVirtualMachines/jdk-20.0.2.jdk/Contents/Home

 

(홈까지 안 기어들어가면 엑세큐터블이 없다면서 저장이 안 된다)

 

 

방금 추가해준 JDK를 선택, 어플라이 앤 클로즈.

 

 

아무 웹 프로젝트나 만들어서

테스트하자.

 EE 퍼스펙티브로 변경? ㅇㅇ

 

 프로젝트 - src - main - webapp 디렉토리에다

흐트멜 파일을 하나 만들어줌.

 

상단의 런 클릭

 

 

 

 서버 선택, 아래 얼웨이즈 체크.

 얼로우

 하...

 

 프로젝트 우클릭, 프로퍼티즈

 방금 선택해줬는데 체크가 해제되어있다.

 

 

체크하고 나와서

다시 실행하니 서버재기동 할까여? 하길래 ㅇㅇ

 

왜 흐트멜로 안 읽고 저걸 디렉토리로 읽는진 모르겠다만.

 

 

아 걍 안 읽힌거였다.

 

잘 읽힌다.

 

 

 

 

 

 

 

 

 

 

 

 

 

깃이고 뭐고 짜증나서

이클립스부터 깔기로 했다.

 

 

글은 이미 엉망이고, 누구 보여줄 how to 매누얼도 아니기 떄문에.

미래의 나에게 일만 던져주고

일단 대충 쓴다.

(미래의 나: 에라이 씨밤)

 

중간 잡설 (생략)

더보기

 

다운 - 아카이브매니저 압축풀기 - 터미널로 열기 - ./인스톨러

 

끝.

 

 

Ah....

웹사이트 호스팅 준비 너무 싫고 지루하다.

 

차라리 스위프트로 앱 하나 짜고 말지.

이럴거면 자바나 C로 전용 프로그램 짜고 말지.

 

웹이 크로스 플랫폼 장점도 있고

내가 잘 모르는 분야라 새로 해보려고 하는 것인데

서브렛은 어쩌고 저쩌고 Webapp.xml 파일 따라 URL이 바뀌고 어쩌고 저쩌고

 

 

한 4년 전에 웹개발을 끄적이며

혼자 웹 호스팅을 한 적이 있다.

 

공유기 DDNS 세팅하고

80포트를 다이렉트로.. 물렸다.

지금 생각해보면 개인정보 털리기 딱좋은 방법.

 

심지어 로그인 페이지랑 게시판도 만들었는데,

입력값 검증이나 크로스사이트 변조같은 기초적인 보안 조치도 하지 않았다.

 

당시에도 웹이 재밌어서 한게 아니라,

내가 원하는 기능을 만들고 싶었기 떄문에 붙잡고 있었다.

 

당근 소스는 복붙안되네수정 버전이고

나중에 DB 만지는 코드쪽에 이상이 있었는지

DB관련 에러가 뿜어져 나왔다.

 

보안 걱정도 되고 쓰지도 않고 해서 서버 내려버림.

 

당시 주옥같았던 기분이 떠오른다.

소름돋게 기분나쁘다.

짜증이 치솟는다. 개념이 전혀 직관적이지도 않고, 장난질 치는게 세팅같음.

 

퍼시발 울프릭 덤블도어 아저씨가 갑자기 생각난다.

아 진짜 하기싫다.

 

 

 

 

 

서버를 추가하는데 우분투 apt 에서

미들웨어를 어디다 깔았는지 몰라 좀 해멨다.

 

이클립스에서 서버 추가해야하는데,

어디지?? 하다가 찾아냄.

 

/usr/share/tomcat9

 

에라 모르겠다하고 내 계정 ~ 디렉토리에

톰캣 10을 깔았다. 이클립스 통해서.

그래서 내 노트북에는 톰캣 9와 톰캣 10이 공존한다.

물론 컴퓨터 구동시 실행되는 서비스는 톰캣 10이다.

 

그러고보니 개발환경에는 톰캣을 굳이 깔아서 서비스 시킬 필요가 없네.

이런.

 

기존 서비스중인 톰캣이랑 연동을 해야흐는거니.

대학때 나노무샛기는 잘했다. 기억은 안 난다.

 

...

뮨득 과거에 나는 어떻게 했을까

궁금해졌다.

 

...집 밖에 일주일정도 나와있어야하는데

하필 이때 저널이 필요하다니.

 

 

결국 기존 톰캣 지워버렸다

sudo service tomcat9 stop

sudo apt remove tomcat9

sudo apt autoremove

 

포트번호 충돌난다고 이클립스가 찡얼거린다.

 

netstat -ano | grep 8080

 

흠. 포트 붙잡고있는 프로세스는 없는데?

sudo reboot.

 

내가 만약에 리눅스를 NSD 플레이버로 하나 만들게 된다면

(시나트라 OS)

sudo 를 suka 로 바꿔야겠다는 ADHD모멘트를 잠시 가진 뒤,

기존 이클립스상 서버 싹 다 제거,

이클립스에서 톰캣 10.0을 다운,

이클립스 폴더에 대충 떄려박고

이클리스상 톰캣서버를 기동시키니 잘된다.

 

앞선 뻘짓이 모두 의미가 없어져버렸다.

간단해서 좋지만 시간아까워서 짜증난다.

(아 가상서버는 또 롤백시키고 또 다시 깔아야된다.)

 

 

 

스크린샷 사진을 옮기려고

리눅스에 카카오톡을 깔으려니 리눅스는 지원 안하나보다.

 

시부엉새 쌈바 서버 열자.

 

아... 설정 다 하고나니

VPN으로 불가능.

 

 

 

 

 

 

...

윈도우에서는 프로젝트 만들고나서

실행을 누르면 바로 OS의 디폴트 웹브라우저에 결과창을 보여줬다.

 

리눅스는 이클립스에도, 디폴트 브라우저에도 보여주질 않는다.

 

전에 만들때는 이클립스에서 봤던 것 같은데....

시작조차 하기 힘든 웹개발.

젠장.

 

결국 내 맥에 jdk 를 깔고 이클립스를 깔고 있다.

...

 

하스웰 2코어 4쓰레드 모바일 i5 맥북프로는

헉헉거리고 있다.

 

내 우분투 노트북(4c4t i5 7...)과 가상머신 (5코어 데탑머신)은

성능은 널널하지만 망할 환경 설정이 안 되고 있다.

 

 

가상머신에 윈도우 깔자... 모르곘다 ㅜㅜ

아무리 구글링을 해도 해답을 찾는데 시간이 너무 오래 걸릴 것만 같다.

브루트포스로 문제를 해결하고 있다.

젠장.

윈도우의 노예..

 

 

진짜 예전에 어떻게 세팅했는지

기록을 다 해놨는데.

 

 

...

Proxmox에서

- 리눅스 게스트 메모리 - 5GB로 줄임

- 윈도우 게스트 머신 생성 - 4C 5GB 50GB 생성

 

윈도우 깔던 중 2코어 맥북에서 이클립스 설치가 완료되었다.

테스트 프로젝트 생성하고, 인덱스.jsp생성후 실행을 눌렀다.

사파리에 떡하고 뜨는 빈 페이지.

 

오 마이 괃...

이클립스에서 설정 바꾸면 되는구나.

 

 

리눅스 디폴트 브라우저 세팅 어케하는지 모르겠다.

일단 인터널로 바꿨다.

잘뜬다. 하하...

맥북에어는 VPN을 붙여놨고

맥북프로는 현지 로컬만 붙여놨다.

 

에어드랍이랑 파일공유가 정신을 못 차린다. ㅋㅋ.

 

M2 Max 박힌 맥북을 사야겠다.

사고싶다.

 

주머니에 천 몇백만원이 있다.

퇴사하려고 1년동안 꾸역꾸역 모은 돈인데.

허투로 쓸까. 말까.

벤투르인지 벤쳐인지 최신 os 지원도 못 받는 이 꾸진 맥북.

 

화면이 IPS라서 못 팔겠다.

 

 

하...

개발 시작하자.

 

 

...

HTML은 되는데

JSP를 생성하면 에러가 난다.

 

어쩐지, 전에 만들어 썼던 웹페이지 프로젝트를

Git에서 다운로드 받자마자 온갖 오류가 뿜어져 나왔다.

 

javax.servelet.http... 운운하며

이클립스가 칭얼거린다.

 

이래서 내가 웹을 싫어한다.

아는놈들만 한다는 개노잼 고인물 게임같음.

 

 

 

내 기억을 더듬어보면, 

 

톰캣 룰.

 

- webapps 디렉토리 밑에 폴더 = 각각의 웹 앱 생성 = 새로운 서버측 컨텍스트 생성

- 웹앱은 오직 하나의 서블렛 컨택스트와 매핑됨.

- 서로 다른 웹앱은 독립적인 서브렛 컨텍스트 객체와 매핑되어 각자 공간에 독립적으로 자신의 정보 관리

- 서브렛 컨텍스트는 하나의 웹앱 내에서 여러 JSP페이지와 서브렛들이 공동으로 활용할 수 있는 저장소.

 

호스트 주소 (e.g. nsd.iptime.org)만 치면 (웹앱 지정 없이) webapps의 ROOT로 접근.

→ hello.world.org:8080/index.jsp 접근시 ...webapps/ROOT/index.jsp로 접근.

(맞나? 맞겄지? 이걸 보안때 배웠는지 웹때 배웠는지 모르겠다.)

 

 

(갑자기 생각나서 다시 까먹은 기억 저장소로 데이터를 옮기기 전에 블로그에 급히 캐싱해둠)

 

 

 

JSP → 서브렛인 Java 소스파일 변환 → class 파일로 컴파일됨 (일반 자바 파일처럼) 

⇒ 이 클래스 파일이 JSP/Servlet 컨테이너인 톰캣 상에서 실행 -> 결과가 웹브라우저로 전달됨

ㅇㅎ 그랬구나.

 

분명 배운건데 내 필기를 다시 읽으면서 신기해 하고 있다.

 

 

오케이.

블라 블라 블라...

 

이전 잡설

 

더보기

 

Servlet 은 컴파일 과정이 필요하고, 특정 클래스를 상속 받아 구현.

 

응?

구현?

내가 서브렛을 구현해야된다고??

 

그러고보니 무슨 파일을 받아서 넣었던 것 같다.

프로젝트 이름 우클릭 - Build Path - Configure Build Path

아래 상태로 누르고 (모듈패스에 넣는게 맞는진 모르겠음.)

-> mac은 자동 추가 되었는데, 클래스패스에 넣어놨음. 클래스패스에 추가하자.

자르 추가.

 

무슨자르?

인터넷에서 받았다.

 

자알 된다.

 

나는 실무(?)적으로 개발해서 실제 호스팅까지 이을 생각을 하고 있다.

webapp 하단에 ROOT 디렉토리와 index.흐트멜 or jsp 를 만들고

깃 연동하자.

 

테스트 웹호스트 서버 구축하고

연동 마치면 개발 시작이다.

 

Phew.

 

 

 

 

 

 

그럼 JSP 파일을 실행하기 위해선

뭐시기를 추가해야한다.

 

더보기

 

 

https://m.blog.naver.com/bgpoilkj/221656227898

 

이클립스 JSP프로젝트 에러 해결방법(javax.servlet에러, 톰켓에러)

안녕하세요. S Writer입니다. JSP개발을 위해 이클립스EE를 사용하다가 프로젝트파일을 복사해서 다...

blog.naver.com

 

 

흠...

 

톰캣 어디 설치했더라.

-> 나는 유저 디렉토리 바로 하단에 박았다.

 

 

익셉션을 뿜으면서 서버가 꿹 하고 죽어버린다.

 

..ㅠㅠ

 

 

에라이

영어로 찾아봐야겠다.

 

 

학상때 만들었던 JSP 텀프로젝트를 불러왔다.

 

뻘건 에러.

 

The default superclass, "javax.servlet.http.HttpServlet", according to the

project's Dynamic Web Module facet version (3.1), was not found on the Java

Build Path.

 

 

영어로 검색해도 한글 (티스토리) 결과가 화면을 뒤덮는다.

 

https://orange056.tistory.com/191

 

[이클립스] The superclass "javax.servlet.http.HttpServlet", determined from the Dynamic Web Module facet version (4.0), was

The superclass "javax.servlet.http.HttpServlet", determined from the Dynamic Web Module facet version (4.0), was not found on the Java Build Path 이와 같은 오류가 발생한다면 프로젝트를 클릭하고 우클릭한 후 Properties를 선택한

orange056.tistory.com

 

 

음... 뭔가 다른데.

 add library - server runtime

 시키는대로 했다.

톰캣 v8은 왜 들어있는거지? 체크 해제했다.

 

 쿼리 던지는 부분에 익셉션이 터지면서

잘 실행이 된다.

근데 워닝이 안 사라진다.

 

흠...

 

 

https://yghan.tistory.com/59

 

JSP로 기본적인 웹 페이지 생성하기

이번 시간에는 JSP 제 1 강입니다. JSP의 기본을 배워보는 시간으로 아주 간단하게 기본적인 웹사이트를 출력하는 것을 해보도록 하겠습니다. JSP는 자바 서버 페이지라는 단어입니다. JSP는 HTML내

yghan.tistory.com

 

다른 블로그에 공개된 소스를 긁어다 붙였다.

 

아마 저 프로젝트에 섭렛 런타임? 관련 파일?? 이 안 맞아서 그런가보다.

 

 

 

 

D. Git 연동

혼자 가지고 놀다 밀어버릴거면 상관없지만

- 클라우드에 보관하거나

- 누구 보여주거나 (주로 취업할 때)

- 내 서버에 올리거나

- 누군가와 협업할 때

깃을 써야한다. 고 생각한다.

 

https://github.com/

 

GitHub: Let’s build from here

GitHub is where over 94 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and feat...

github.com

가서 로그인하자.

 

소싯적 작업하던 프로젝트가 산더미로 있다.

 

싸그리 무시하고 새로 하나 파자.

몇년 전부터 무료회원도 비공개 르포를 만들 수 있게 되었다.

 

굿.

 

데스크탑이 있어..?

일단 깔고 보는거지.

 

음... 뭔가 이게 아닌 것 같다.

 

 

 

 

그렇지.

- 이클립스에서 이미 만든 프로젝트를 Git에 밀어버리고 (푸시)

- 웹 서버에서 해당 프로젝트를 땡겨오고 (풀)

- 톰캣 서버 (랑 아파치 웹서버 이름이 뭐지, ajax으로 연결하는거) 등등 셋업을 해줘야한다.

 

 

앞서 테스트 플젝을 만들었으니,

깃에 올리는 방법부터 찹아보자.

그리고, 다른 컴퓨터의 eclipse에서 해당 프로젝트를 임포트 하는 방법도 찾아보자.

 

역시 한글로 검색하면 티스토리밖에 안나온다.

이래서 카카오톡 화재났을 때 개발자들이 일을 못했다는 농담이 생겼다.

 

모르는 사람은 저렇게 찾아보면 될테고

나는 이클립스 홈페이지 위키를 찾아보았다.

 

https://wiki.eclipse.org/EGit/User_Guide#Push_Upstream

 

EGit/User Guide - Eclipsepedia

 

wiki.eclipse.org

...모르겠다.

 

일단 서버부터 셋업하자.

 

 

...아래 서버사이드 셋업이 거의 완료되었다.

깃 가지고 고민하고 있는데

의욕이 자꾸 떨어진다.

 

한국 블로그는 저마다 설명도 다르고 방법도 다르다.

무엇보다도, 읽어도 뭔 소린지 모르겠음.

 

"

A=B,

C=F,

if (D != A) A=C,

그러니까 Omega = 줄리 킴. 킴벌리.

'...? 뭔 개소리지.'

"

 

이런 느낌.

 

이들의 설명을 읽으며 (따라하지도 않음. 너무 점프 심하거나 뭔소리하는지 모르겠는 글이라.)

힌트를 얻어 혼자 만지작 만지작 해봤다.

 

 

 

이클립스 상단 Window - Show View - Other... - git - repository

 

여기서

- 기존 르포 git에서 가져오기: 클로닝으로 가져오기

- 기존 플젝 git에 올리기: ? 어케하는거냐. 로컬은 만들었는데 온라인 git은 어떻게 하는건지 모르겠다.

 

아, 그 전에.

github 계정 들어가서 각 환경별로 (맥, 노트북, 가상머신 3개) RSA 퍼블릭 키를 등록해줬다.

*nix (맥, 리눅스)는 터미널에서 ssh-keygen으로 생성하면 된다.

윈도는 모르겠다.

 

아 그리고,

토큰이나 비번 쓰지 않고 나처럼 RSA로 깃허브 인증하는 경우

ssh port 22 커넥션 연결실패였나

비슷한 에러만 주구장창 나는 경우가 있다.

파써블 커즈 : 인터넷 연결없음 / 방화벽 차단.

 

그거 ~~/user/.ssh/knownhosts에 git 이 없어서 그런거다.

뻘짓 조온나 했다.

- RSA 비밀키 암호화해놔서 그런거여?

- SHA256은 안되는거였나? (이클립스에서 RSA 키 생성하면 ssh-keygen보다 짧음)

- .ssh 디렉토리 접근을 제대로 못하나? (바탕화면에 wtf, wtf.pub 키 생성하고 git과 이클립스에 추가, 여전히 안됨)

 

 

 

 

 

 

 

E. 서버사이드 셋업

Proxmox에서 테스트서버 하나 만들었다.

1코어 2기가 램 20기가 스스디.

 

우분투 22.04LTS 서버로 OS 설치하였고

미니멀로 진행, OpenSSH만 추가함.

 

 

설치 완료 후 

sudo apt update

sudo apt upgrade

sudo apt install default-jdk

sudo apt install apache2

sudo useradd -m -d /opt/tomcat -U -s /bin/false tomcat

(아래 글 왈 보안상 권한 없는 계정으로 톰캣을 실행해야 안전하다고 한다.)

sudo apt autoremove

java -version

apache2 -version

 

https://www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-10-on-ubuntu-20-04

 

How To Install Apache Tomcat 10 on Ubuntu 20.04 | DigitalOcean

 

www.digitalocean.com

 

아... 스냅샷 안 찍었다.

지금이라도 찍자.

씬 프로비저닝이 아니면 스냅샷이 안 찍힌다.

 

씬 프로비저닝된 스스디로 바꿔 다시 깔았다.

 

default-jdk + 톰캣9 + 아파치2 + ufw + net-tools 깔았다.

ufw는 apache와 22번 (ssh)만 열었다.

스냅샷 찍고, 하이퍼 바이저 창은 끄자.

 

 

아파치와 톰캣을 연동할 차례이다.

 

웹페이지 접속하는데 클라이언트가 80포트(http)와 8080포트를 구분해서 접속할 이유도 없거니와

- 동적 페이지를 처리하지 못하지만 정적페이지 처리속도가 빠른 Apache

- 동적 정적 둘 다 처리하지만 정적페이지는 처리속도가 꽤 느린 Tomcat

두 녀석을 하나의 몸처럼 일하게 해야한다.

막상 드래곤 볼 지 본 적이 없음.

내 저널이 있으면 그거 보고 하면 되는데

(ajp 관련해서 필기를 빽빽하게 해놨다)

저널이 없다. 한국인 블로그를 좀 찾아보자.

 

https://all-record.tistory.com/188 

 

[Ubuntu] 아파치(Apache) 설치 및 톰캣(Tomcat8) 연동

아파치와 톰캣을 연동하는 이유는? 톰캣은 WAS이지만 Web 서버의 기능도 갖고 있다. 그러나 톰캣의 Web 서버 기능은 아파치보다 처리 속도가 느리기 때문에 정적인 페이지는 아파치가 처리하고, 동

all-record.tistory.com

글이 겁나 깔끔하다.

따라하자.

 

 

 

 

sudo apt install libapache2-mod-jk

이부분은 생생히 기억난다.

워커 어쩌고 설정해주고 했던 것 같음.

 

아래 두 미들웨어의 설치경로를 확인해보자. (자디킷도 미들웨어라고 할 수 있겠지..?)

톰캣    : /usr/share/tomcat9

자디킷 : /lib/jvm/java-11-openjdk-amd64

어라잇. (러시안 엑센트로)

워커 프로퍼티즈 수정하러 가자.

 

sudo nano /etc/apache2/workers.properties

..미니멀라이즈 서버는 nano도 없다. nano 설치.

 

아 그래 새로 생성이었지.

워커 프로퍼티즈 "생성"하러 가자.

내 워커는 핫산으로 이름을 지어줬다.

 

일해라 핫산!

 

...

갑자기 아메리카와 호주에 있는 한국계 현지인들에게 빡이 친다.

전적대학 영어학과(복수전공) 다닐 때 미국에서 온, 한국어 1도 못하는 동기....는 아니고 같은 학과 학생이 있었다.

동아리에도 캐나다와 미국에서 온 사람이 두 명 있었다.

한국어도 못하고, 영어도 까먹어가는 사람들.

한국 군대에서 두들겨 맞아가면서 (내 세대와 내 앞 세대는 군대에서 맞다가 뼈가 부러져도 빨간약 발라주고 쉬쉬했다) 배운 한국어.

 

이 세 명이 이중국적을 포기하고 한국에 끌려온 이유는,

변호사(인지 아님 다른 직인지) 가 돈을 들고 튀어서, 제 때 한국 국적을 포기하지 못한 케이스였다.

근 데 세 놈무색기들 다 한국계였음.

 

호주에서 워킹 홀리데이를 다녀온 친구들을 보면,

- 백인계 임플로이어: 험한 일, 괜찮은 대우 (시급 $30 쁘라스 마이나스), 나쁘지 않은 인성

- 한국계 임플로이어: 험한 일, 심각한 대우 (시급 $13도 봄), 쓰레기 인성.

특히 처음 호주 가서 한국인에게 뒷통수 오지게 뚜들겨맞은 친구들이 꽤 있었다.

밥굶고 일하다가 도망간 케이스도 있음.

 

 

나도 외국 나가서 한국계 인간들이 운영하는 숙소나 음식점 등을 이용하며

좋았던 기억이 1도 없다. 바가지 존나쓰고, 주방딸린 집에서 요리해먹었다고 면박에 지랄하는데 열받아서 중간 환불하고 나갔다.

(아니 파리에 왔으면 여행지를 가야지 주방에서 점심해먹으면 어떡해요? 네? 주방 있어서 여기 온건데요? 파스타도 못해먹나요?)

미친 할망구 진짜 아직도 생각하면 짜증난다. 밖에 식사비가 얼만데. 까르푸24에서 식자재 조온나 사가서 저녁 푸지게먹고 체크아웃함.

한국인이라면 외국에서 한국계 장사치만 피하면 된다. 진짜로.

오히려 프랑스 길에서 만난 베트남계 / 인도네시아계 사람들이 더 진솔하고 착했던 기억 뿐이다.

 

그래서 그런지 길거리에서 동양인이 지나가면 그들이 떠드는 언어가 귀에 들린다.

가끔 다가와서 " 어 혹시 한국인이세요 " 하면

"하? 워 팅 부동, 니 슈 빤러마 " ㅋㅋㅋ이지랄 하면서 다른 동양인인척 한다.

 

한 번은 그렇게 다가온 사람이 한국인인데 중국어를 유창하게 하는 사람이라

" 아 니 슈 쭝궈러 마? 워 뭐시기 저시기 짱꼴라마..." 해서

'아.. 저기 저 한국인은 맞아요. 다른 분이랑 얘기하시죠." 하고

중국어를 쏟아내는 그 사람의 벙찐 표정을 뒤로한 채 (아마 뭐지 저샛기 하지 않았을까) 걸어간 기억이 난다. ㅋㅋ;

 

 

자기가 초기에 소유한 국적 외에 다른 나라에서 일하는게 말같이 쉬운 일인가.

나도 헬조선 망해가는 나라 벗어나려고 애를 쓴다만

쉽지가 않다. 내 스킬셋 인정받을 수가 없음.

어릴 때 여행다니고 머물기 할때는 돈쓰는 입장이니까 좋았지...

근데 28살 도마뱀 남푠 윤씨가 테레비 나와서 개소리 자꾸 짖는거 보면 한시빨리 튀어야 할 것 같긴 하다.

(도마뱀 리자드는 아래 빌 버의 잡소리를 들어보면 뭔지 알게 됨. )

https://www.youtube.com/watch?v=pznB7WP4P1o&ab_channel=ChrisCowan 

왓 우쥬 레더 비,

52, 앤 룩 52,

오어 비 52, 벗 유 룩 라잌 어 28 이어 올드 리자드

ㅋㅋㅋㅋㅋㅋㅋㅋ 댓츠 유어 옵션즈 앳 디스 포인트 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

성형괴물 술집여자와 돌대가리 미신 아저씨.

 

전에는 통일되면 잠재적 사업확장성이나 문화충돌같은 것에 대해 가끔 생각해보곤 했는데.

이제는 관심없다. 무력 통일을 하든 중국과 통일하든..

DNA, HW만 동양인이고 대가리의 FW는 유럽산으로 포맷하기 위해 30년을 고생했다.

계속 포맷하자.

 

 

joke로 워커 이름을 하싼으로 이름짓다가 어릴적부터 받은 차별, 외국인 동양인인 죄,

특히 동양인이 동양인에게 치는 뒤통수에 직간접 적으로 맞았던 기억들이 스멀스멀 떠올라

급분노했다. 나도 백인으로 태어났으면. 제대로된 White trash가 뭔지 보여줬을텐데.ㅋㅋㅋㅋ.

...

 

 

 

jk.conf 파일을 열으라고 한다.

 

sudo nano /etc/apache2/mods-available/jk.conf

 

JkWorkersFile 디렉토리를 수정해주고 저장.

 

 

000-default.conf 수정.

아... 디렉토리 바꿔야되는데.

 

옵션

1. 톰캣 기본 루트 디렉토리 유지 + 이클립스 연동시 일부 파일만 연동

2. 지금 톰캣 기본 루투 디렉토리 변경 + 이클립스 연동 후 git pull, 해당 디렉토리로 변경.

 

 

현업에서 어떻게 쓰는지 모르곘다.

 

예전에 옵션 2번으로 했던 기억이 난다.

/webprojects/(이클립스에서 가져온 이클립스 프로젝트 전체)...

아니면 /var/www/webprojects/...

이렇게였던 것 같기도.

 

권한 문제로 톰캣이 저 디렉토리상 파일을 읽지 못해

찡얼거렸다.

톰캣에게 루트 권한을 멕여 해결했던 것으로 기억한다.

(지금 돌이켜보면 보안 이슈가 한두가지가 아니었던듯)

 

 

옵션 1로 가야겠다.

 

안되면.. 파일 깃으로 풀 하고 매뉴얼로 옮기지 뭐. ㅜㅜ

 

아.

기존 루트 디렉토리 상단, /var/lib/tomcat9/webapps 디렉을 를 깃으로 올리고

이걸 이클립스 프로젝트에 추가하는 형태로 쓸 수 있나?

하이키 로우키 스튜핃 벗 얼쏘 지니어스

일단은 저 블로그에서 시키는 대로 하였다.

 

흠. JSP 파일만 톰캣에서 처리하라고 적는 부분이 있던 것 같은데,

여기 블로그의 내용을 봐도 기억이 안 나는걸 보면 달랐던 것 같다.

 

일단은 패스.

어차피 내부망에서만 쓸건데 뭐.

일단은.

 

 

톰캣쪽 서버 흐멜 (xml) 수정.

 

 

sudo nano /etc/tomcat9/server.xml

 

sudo service tomcat9 restart

sudo service tomcat9 status

sudo service apache2 restart

sudo service apache2 status

 

굿.

흠.

해당 서버로 웹브라우저에서 접속하면

톰캣의 화면이 나오는게 아니라 아파치의 화면이 나온다.

이 머선129.

 

nano로 helloworld.jsp를 만들어봐야겠다

 

sudo nano /var/lib/tomcat9/webapps/ROOT/helloworld.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head><title>Priviet</title></head>

<body>

Hyello

<% out.print("</br>1+1=");

       out.print(1+1);

%>

</body>

</html>

... 안된다.

 

index.html도 안 된다.

503 Service Unavaillable.

 

아파치 기본 디렉토리와

톰캣 기본 디렉토리 둘 다 복사해보고 접근해봤으나

넷 다 (혤로워를드jsp + index.html) 503 ㅋㅋ;

 

 

무엇이 잘못된 거실까.

서버를 재기동하였다.

톰캣이 시작은 되었으나, 시뻘건 에러를 흘리고 있다.

 

아.. 시크릿 키... 미안 깜빡했어.

저사람 블로그에는 시크릿 키 설정하는 부분이 없다.

좀 오래된 포스팅인가보다.

 

어떻게하더라...

 

티스토리로 찾으니 블로그에서 자꾸 광고차단 프로그램 풀으라고 지..난리를... 아따 딸라 한 장에 목숨걸었소. 끌베이가.

영어로 검색해야겠다.

 

secret="secretKey"

각각 추가 (실제론 유출되도 상관없는 서버용 시크릿 키를 설정함)

(H2O delirious의 목소리가 떠오른다. 잇처 마다빡킹 씨크릿!)

톰캣쪽은

secretRequired="true"

도 추가.

 

 

...

에러문구는 사라졌는데,

기본 페이지는 503이 뜬다.

 

서버 재기동해도 그대로,

톰캣 스테이터스 하단을 읽어보니

AJP 프로토콜 핸들러가 요상하다.

IPv6로 설정된건가 싶어서 127.0.0.1로 세팅해줬다.

아파치측 설정 최종 (띄어쓰기 제거하고 host 로컬에서 127.0.0.1변경, 파운드팩터 20에서 1로 변경)
톰캣 사이즈 최종, 어드레스에 직접 127.0.0.1 넣어줌.

자알 된다.

/*를 (모든 파일을) 톰캣에게 일단 던져주고 있어

흐트멜도 자스프도 잘된다.

aaa.bbb.ccc.ddd/index.html & 혤로워를드.jsp

 

호작질 마치고 나면 json 이나 jsp만 톰캣에게 던져줄 예정이다.

 

휴. 잭맨. 휴. 재솔. 휴. 지칵.

 

다시 돌아가서 이클립스 연동을 고민해봐야겠다.

 

 

 

 

드디어 집에 와서 내 옛날 져널을 꺼내들었다.

뭐가 안되는지, 어떤 미들웨어가 뭘 하는지 상세히 기록해놨다.

 

 

 

 

F. 보안 위협요소 제거

해야할 것

- ROOT인 것 처럼. 컨텍스트 숨기기.

 

- 에러 처리 화면 설정.

 

- 디렉토리 보여주지 않게 설정.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Sorry but not sorry.

Sorry for wasting your time but 

@ the same time, I don't give a shite.

...

반응형

Comment(s)