on my way

MySQL, Apache Tomcat, Java 설치 및 연동하기 본문

Computer Science/JAVA

MySQL, Apache Tomcat, Java 설치 및 연동하기

wingbeat 2024. 4. 24. 20:56
반응형

전체적인 구동 원리

Server(컴퓨터 한 대라고 생각하면 됨) : Service

PC안에 JDK 위에서 MySQL, Tomcat, Oracle

세 개의 서비스가 돌고 있다.

 

PC에 Tomcat이 있고 Eclipse가 있으면

Eclipse안에 서버를 가상으로 띄운 것이다. (실제 tomcat 서버 아님, 이클립스 끄면 켜지지 않음)

 

Tomcat 작동 원리(?)

생성한 tomcat9 폴더를 보면 

bin 폴더 : 안에는 실행 파일들이 들어있다.

conf 폴더 : configration 톰캣의 설정 파일

lib 폴더 : 라이브러리. servlet-api.jar 매우 중요한 파일이다.

logs 폴더: 콘솔출력된 에러 등이 출력되어 있다. (에러나면 서버에서 리눅스 명령어로 이 파일을 열어봐야 한다.)

temp 폴더 : 임시

work 폴더 :

JSP - Html 안에 Java

Servlet - Java 안에 Html,CSS,Java

확장자 jsp를 만나면 servlet으로 변하게 된다.(클래스)

톰캣의 역할은 jsp를 .java로 바꾸고, 또 .java를 servlet으로 컴파일 해주는 역할을 한다.

그 작업을 work라는 폴더에서 한다.

webapps 폴더 : wep application.. context path들이 webapps  폴더에 들어있다.

 

Windows > Runtime Environment를 보면 Tomcat이 추가되어있다. (내가 추가한 것)

servlet에 있는 .jar 파일들이 세팅하며 자동으로 연결되어 있다. 

 

웹서버에서 넘어온 동적인 페이지를 읽어들여 프로그램을 실행하고, 그 결과를 다시 html로 재구성해서 아파치에 되돌려준다.

 

add and remove의 add를 하면서 server.xml파일에 <context> 형식으로 추가된다. 이클립스 안에서 가상으로 구동됨.

(강의 다시 듣기 0425 09:20)

 


 

웹 개발을 이해하기 위해서는 몇 가지 기본적인 용어와 구성요소를 알아야 한다. 

이 중에서 중요한 부분이 웹서버, 웹 애플리케이션 서버(WAS), 미들웨어, MVC 모델 등입니다. 이들 각각의 역할과 관련 기술에 대해 알아보자.

 

웹서버 (Web Server)
웹서버는 HTTP 프로토콜을 기반으로 클라이언트(웹 브라우저)의 요청을 받아 정적인 컨텐츠(HTML, CSS, JavaScript 파일 등)를 제공하는 서버입니다. 가장 대표적인 예로 Apache 웹서버가 있으며, 이 외에도 Nginx 등이 널리 사용됩니다.


Apache는 웹 서버 소프트웨어로, 무료이며 오픈 소스입니다. 아파치 소프트웨어 재단이 개발하고 관리하며, 전 세계적으로 가장 널리 사용되는 웹 서버 중 하나입니다.

 

정적으로 구현만 해도 된다면 html사용해라.

DB연동도하고 데이터를 동적으로 구현하려면 WAS를 사용해야한다.


웹 애플리케이션 서버 (WAS, Web Application Server)
WAS는 웹서버의 기능을 포함하면서도, 애플리케이션이 동작할 수 있도록 환경을 제공하는 서버입니다. WAS는 정적인 웹 페이지뿐만 아니라 동적으로 데이터를 처리하고 화면에 표시하기 위해 사용됩니다.  클라이언트의 요청에 따라 서버에서 프로그램을 실행하여 동적인 컨텐츠를 생성하고 이를 클라이언트에 전달합니다. 이를 통해 데이터베이스 연동, 사용자 인증, 데이터 처리 등 복잡한 작업을 수행할 수 있습니다.  이를 위해 주로 JSP(Java Server Pages)와 같은 서버 측 기술과 함께 사용됩니다. 대표적인 WAS로는 Apache Tomcat, JEUS, JBoss 등이 있습니다.

 

한국에서는 JEUS(JAVA Enterprise User Solution)와 JBoss와 같은 상용 WAS(Web Application Server)를 많이 사용합니다. 이러한 WAS는 웹 어플리케이션을 실행하기 위한 미들웨어로, 다양한 기능을 제공하여 웹 애플리케이션의 개발, 배포, 실행, 관리를 지원합니다.

 

Tomcat은 Apache 소프트웨어 재단에서 개발한 WAS 중 하나로, 주로 경량화된 웹 애플리케이션을 구축하고자 할 때 많이 사용됩니다. 특히 간단한 웹 사이트나 웹 애플리케이션을 개발할 때 Tomcat을 활용하는 경우가 많습니다.

 

미들웨어
미들웨어는 클라이언트와 서버 사이에서 다양한 기술적인 처리를 담당하는 소프트웨어입니다. 데이터 관리, 애플리케이션 서비스, 메시징, 인증 등의 기능을 제공하여 애플리케이션 개발의 복잡성을 줄여주고, 다양한 시스템 간의 연결을 원활하게 합니다.

MVC 모델 2
MVC(Model-View-Controller) 모델은 애플리케이션을 세 가지 주요 구성 요소로 나누어 개발하는 디자인 패턴입니다. 모델(Model)은 데이터와 비즈니스 로직을 처리, 뷰(View)는 사용자 인터페이스를 담당, 컨트롤러(Controller)는 사용자의 입력과 이벤트를 처리하여 모델과 뷰를 연결합니다. 모델 2는 주로 웹 애플리케이션에서 사용되는 MVC의 변형으로, 뷰에 해당하는 부분을 JSP가, 컨트롤러는 서블릿이 담당하는 구조입니다.

스프링 프레임워크
스프링(Spring)은 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크입니다. 스프링은 엔터프라이즈급 애플리케이션을 쉽게 개발할 수 있도록 다양한 기능을 제공합니다. 특히, 의존성 주입(Dependency Injection)이라는 기술을 통해 애플리케이션의 결합도를 낮추고, 유연성 및 확장성을 높일 수 있습니다. 스프링은 MVC 패턴을 기반으로 한 웹 애플리케이션 개발을 지원하는 스프링 MVC를 포함하고 있습니다. 스프링은 DI(Dependency Injection), AOP(Aspect-Oriented Programming), MVC 패턴 등을 지원하여 개발자가 더 간편하게 웹 애플리케이션을 구축할 수 있도록 도와줍니다.


MySQL 설치하기

 

커뮤니티 버전 다운로드하기

 

 

password를 기억하자

 

 

community 버전 + workbench를 설치해주자

 


Administration
MySQL 서버를 관리하는 과정에서 "Administration"은 서버 설정, 사용자 계정 관리, 보안 설정, 백업 및 복구, 성능 최적화 등 다양한 관리 작업을 포함합니다. 이러한 작업은 MySQL Workbench와 같은 GUI 도구를 통해 수행할 수도 있고, 명령줄 인터페이스를 사용하여 직접 수행할 수도 있습니다.

Schemas
MySQL에서 "Schemas"는 데이터베이스의 구조를 나타냅니다. 스키마에는 테이블, 뷰, 저장 프로시저, 함수 등 데이터베이스 객체가 포함됩니다. 각 스키마는 고유한 이름을 가지며, 하나의 MySQL 서버에서 여러 스키마를 생성하여 사용할 수 있습니다.

스키마 생성 명령어
MySQL에서 새로운 스키마(데이터베이스)를 생성하는 기본 명령어는 다음과 같습니다:

CREATE DATABASE [IF NOT EXISTS] 스키마명
[CHARACTER SET 문자셋]
[COLLATE 정렬규칙];


[IF NOT EXISTS]: 이 옵션은 지정한 이름의 스키마가 이미 존재하지 않을 경우에만 스키마를 생성합니다.
스키마명: 생성할 스키마의 이름을 지정합니다.
[CHARACTER SET 문자셋]: 스키마의 기본 문자 집합을 지정합니다. 이는 스키마 내의 테이블과 다른 객체에 적용됩니다.
[COLLATE 정렬규칙]: 문자열 비교 시 사용할 정렬 규칙을 지정합니다.


예를 들어, "mydatabase"라는 이름의 새 스키마를 생성하려면 다음 명령어를 사용할 수 있습니다:

CREATE DATABASE IF NOT EXISTS mydatabase;


요약
MySQL에서 "Administration"은 서버의 전반적인 관리를 의미하며, "Schemas"는 데이터베이스의 구조를 나타냅니다. 스키마를 생성할 때는 CREATE DATABASE 명령어를 사용하며, 이때 추가 옵션으로 문자 집합과 정렬 규칙을 지정할 수 있습니다. MySQL을 효과적으로 관리하기 위해서는 이러한 개념과 명령어에 익숙해지는 것이 중요합니다.

 

 

스키마 생성하기

charset은 utf-8로 설정했다

 

 

Users and Privileges에 사용자 계정이 있다.

새 유저 생성하기

limit to hosts matching : %로 설정해두면 모두 접속 가능

비밀번호에 consider ~ 떠도 무시하면 작성한대로 저장됨

 

 

새로운 connection 만들기

 

 

여기에 test 스키마가 추가가 되어야 함

AddEntry로 기존에 생성한 test schema 추가

 

spanner 누르면 진입 가능한 화면

Datatype을 클릭해서 변경 가능. 

 

  • PK (Primary Key):
    주 키 또는 기본 키(primary key)로, 테이블의 각 행을 고유하게 식별하는 데 사용됩니다.
    각 테이블에는 하나의 기본 키가 있어야 합니다.
    기본 키는 NULL 값을 가질 수 없으며, 중복되지 않아야 합니다
  • NN (Not Null):
    해당 열의 값이 NULL이 될 수 없음을 나타내는 제약 조건입니다.
    즉, 이 열에는 NULL 값을 저장할 수 없습니다.
  • UQ (Unique):
    해당 열의 값이 유일해야 함을 나타내는 제약 조건입니다.
    즉, 테이블 내에서 중복된 값을 허용하지 않습니다.
  • B (Binary):
    해당 열이 이진 데이터(바이너리 데이터)를 저장할 수 있음을 나타냅니다.
    이러한 열은 주로 이미지, 오디오 또는 기타 이진 파일과 같은 이진 데이터를 저장하는 데 사용됩니다.
  • UN (Unsigned):
    해당 열이 음수가 아닌 양수만을 포함한다는 것을 나타냅니다.
    예를 들어, UNSIGNED INT는 0과 양의 정수만을 저장할 수 있습니다.
  • ZF (Zero Fill):
    해당 열의 값이 저장될 때, 값이 필드 너비보다 짧으면 남은 공간을 0으로 채웁니다.
    주로 숫자형 필드에서 사용되며, 숫자의 자릿수를 일정하게 유지하는 데 유용합니다.
  • AI (Auto Increment):
    해당 열이 자동으로 증가하는 값을 가짐을 나타냅니다.
    주로 기본 키(primary key)에 사용되며, 각 새로운 행이 추가될 때마다 이 값이 자동으로 증가합니다.
  • G (Generated):
    해당 열의 값이 자동으로 생성되는 값임을 나타냅니다.
    예를 들어, 열의 값이 기본 키 값과 같은 순차적인 값이 될 수 있습니다.

MySQL 문법

-- 페이징 처리 
select * from student order by studno limit 10,10;

-- 날짜 관련
-- 현재일자 (from 안써도 오류 안남)
select now(), sysdate(), curdate(), curtime();
-- 일자 간격 일수
select datediff(now(),'2024-03-12');

-- 이후/이전일자
select date_add(now(), interval 7 day);
select date_add('2024-01-01',interval 7 day);
select date_sub(now(), interval 43 day);
select date_sub(now(), interval -43 day);

-- 날짜 포매팅
select date_format(now(), '%Y-%m-%d');
select date_format(now(), '%Y년 %m월 %d일');
-- null 처리
select salary*12+ifnull(bonus,0) 연봉 from emp;
-- ifnull 안하면 연산이 안됨. nvl 처럼

-- 조건
select if(grade=1, '신입생', '재학생') from student;

-- concat
select concat(ename, job) from emp;
select concat(ename, ' ', job) from emp;
select ename || ' ' || job from emp; -- 불가

-- inline view (alias 필수)
select * from (select * from emp) a;

-- sequence (없음) 대신 ai(auto increment)
-- ai : 테이블 제약 조건, insert할 때 값 지정
insert into dept (dname, loc) values ('개발팀', '서울'); -- 1씩 증가
select last_insert_id(); -- 방금 insert PK

/*
Type: int, tinyint..., char, varchar, double(전체, 소수점), text
검색시 대소문자 구분 안함 (오라클은 구분)
*/

 

tomcat 연결

https://dev-handbook.tistory.com/32

 

[Eclipse] 이클립스에서 Tomcat 서버 설정하기

웹 애플리케이션 개발을 위해서는 WAS가 필요하고 가장 잘 알려진 WAS 가운데 하나가 Tomcat입니다. 먼저 Tomcat을 설치하고 나면 개발환경인 이클립스에서 Tomcat 서버를 설정해서 연동하여 편리하게

dev-handbook.tistory.com

Dynamic Web Project 생성

web.xml엔 웹사이트의 설정이 들어있다. 체크하면 생김.

 

에러 로그

[MySQL] Error Code: 1046. No database selected Select the default DB to be used by double-clicking its name in the SCHEMAS list in the sidebar

1. 직접 db이름 매번 설정해주기

2. 기본 스키마 설정


[Tomcat] A service with the given Service Name is already installed on this machine. Please choose another Service Name 

https://changun516.tistory.com/48

 

[Tomcat] A service with the given Service Name is already installed on this machine. Please choose another Service Name 오류

l 오류 잡기 Apache Tomcat Setup 설정 시 발생되는 아래와 같은 오류 해결 방법입니다. A service with the given Service Name is already installed on this machine. Please choose another Service Name 아파치 톰캣을 설치 하는 경

changun516.tistory.com

 


Could not publish server configuration for Tomcat v9.0 Server at localhost. Multiple Contexts have a path of

Servers 폴더의 server.xml 

text로 보기로 켜서 <Context~ 부분에 중복되어있는지 확인.

중복된 부분 지우고 저장하니 실행됨


java.net.SocketTimeoutException: Read timed out 

<Connector URIEncoding="UTF-8" connectionTimeout="99999" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

server.xml 내 connectionTimeout 시간 변경


포트 에러

Port 8080 required by Tomcat v9.0 Server at localhost is already in use. The server may already be running in another process, or a system process may be using the port. To start this server you will need to stop the other process or change the port number(s).

https://mine-it-record.tistory.com/15

 

[SPRING] Apache Tomcat(아파치 톰캣)_포트 변경하기

- Spring Apache Tomcat 포트 변경하기 - 기본적으로 스프링에 톰캣 서버를 올리면 8080이라는 기본 포트 설정값을 가지고 있는데 이게 ORACLE이랑 함께 사용한다면 ORACLE 역시 기본 포트 값이 8080이기때문

mine-it-record.tistory.com

우선 중복된 포트번호 수정

만약 server.xml에 반영 안된다면

마찬가지로 server.xml에서 포트번호 수정되어있는지 확인.

 

각각 수정된거 확인

 

https://opentutorials.org/module/4682/27998

 

server.xml 기본 확인사항 - tomcat

아래는 이클립스에서 서버 포트를 설정하는 UI 화면이다. 해당 UI 가 톰캣의 server.xml 에서 어떻게 반영되는지 순서대로 확인해보자. 1. Tomcat admin port ( 8006 )   - server.xml 의 최상위 <Server> 태그 내

opentutorials.org

확인해보기


INFO: 프로덕션 환경들에서 최적의 성능을 제공하는, APR 기반 Apache Tomcat Native 라이브러리가, 다음 java.library.path에서 발견되지 않습니다: [D:\java\jdk17\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\oraclexe\app\oracle\product\11.2.0\server\bin;;C:\Program Files\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;D:\java\jdk17\bin;C:\Users\User\AppData\Local\Microsoft\WindowsApps;C:\Users\User\AppData\Local\Programs\Microsoft VS Code\bin;.]

 

<Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener" />

 

server.xml 파일 내 위 코드 주석처리


이클립스 내 tomcat 서버 설정

https://dev-handbook.tistory.com/32

 

[Eclipse] 이클립스에서 Tomcat 서버 설정하기

웹 애플리케이션 개발을 위해서는 WAS가 필요하고 가장 잘 알려진 WAS 가운데 하나가 Tomcat입니다. 먼저 Tomcat을 설치하고 나면 개발환경인 이클립스에서 Tomcat 서버를 설정해서 연동하여 편리하게

dev-handbook.tistory.com

https://m.blog.naver.com/hodolbak/220479777542

 

이클립스 톰캣 연동 #2 - Dynamic Web Project

이클립스 톰캣 연동 두번째는 실제 웹을 띄워보는 거다. (연동이 이게 전부지 뭐) 이것은 이클립스에서 만...

blog.naver.com

 


이클립스 UTF-8 인코딩 설정

https://parkjye.tistory.com/35

 

[Eclipse] 이클립스 "UTF-8" 인코딩(Encoding) 설정

# UTF-8 UTF-8은 유니코드를 인코딩(Encoding)하는 방법이고, 인코딩(Encoding) 이란 컴퓨터가 이해할 수 있는 형태로 바꾸어주는 것입니다. UTF-8은 가변 방식을 사용합니다. 예를 들어 'a'는 1byte이고 '가'

parkjye.tistory.com


css 경로 설정

1. 절대경로
- 어떠한 웹페이지나 파일이 가지고 있는 고유한 경로, 절대적으로 변하지 않는 경로
2. 상대경로
- 내 위치 기준에서 사용하는 경로
1. '/' > 가장 최상의 디렉토리로 이동한다.(web root)
2. './' 파일이 현재 디렉토리를 의미한다.
2. '../'상위 디렉토리로 이동한다.
만약 두 단계 상위 디렉토리로 이동하려면 '../../'이렇게 사용하면 된다.

 

반응형