다운로드 =>  https://www.microsoft.com/ko-kr/evalcenter/evaluate-sql-server-2016 

 

 

Microsoft 공식 홈페이지

Microsoft는 목표와 가치는 전세계의 사람과 기업이 잠재력을 최대한 발휘할 수 있도록 돕는 것입니다.

www.microsoft.com

1. 기본정보 입력 및 동의 후 평가판 설치 프로그램 다운로드.

    SQLServer2016-SSEI-Eval.exe

 

 

2. 프로그램 실행하여 설치용 프로그램을 내려  받는다.

     SQLSserver2016SP2-FullSlipstream-x64-KOR.iso

 

 

3. 계획 단계 Skip 하고  '설치' 단계를 진행한다.

 

4. '설치' 단계의 첫 항목 "새 SQL Server 독립 실행형 설치 ....." 를  선택한다.

 

5. 무료 버전으로 진행한다. ( 180일 사용가능 )

 

6. 라이선스 동의 의 진행.

 

7. 자동 업데이트 옵션 선택 후 진행한다.

 

8. 설치 결과를 확인한다. ( 방화벽 경고는 무시한다. )

 

9. 기능선택 옵션에서 필요한 기능을 선택한다.

    테스트 서버임으로 기본 3개 기능만 선택하고 진행한다.
       (데이터베이스 엔진 서비스,  검색을 위한 전체 텍스트 및 의미체게 추출, 클라이언트 도구 연결)

 

10. 인스턴스 구성 ( 기본설정으로 진행)

   * ( 인스턴스에 대한 이해)
    SQL Server는 하나의 컴퓨터에 대해 여러 인스턴스가 설치될 수 있다. 즉, 하나의 컴퓨터에 서로 다른 데이터베이스를 보유하는 SQL Server를 여러 번 설치할 수 있다는 얘기이며, 각각의 인스턴스는 자신만의 데이터베이스를 보유하게 된다. 이들 SQL Server 인스턴스는 디폴트 인스턴스와 명명된 인스턴스(named instance)로 나누어 볼 수 있는데, 디폴트 인스턴스는 대개 최초로 설치되는 SQL Server 인스턴스를 말하며 특별한 이름이 붙지 않는다. 디폴트 인스턴스가 설치된 이후에 추가로 설치되는 SQL Server는 디폴트 인스턴스와 구분하기 위해 각 인스턴스 마다 이름이 붙게 된다. 이렇게 이름이 붙은 SQL Server 인스턴스를 명명된 인스턴스라고 한다. 예를 들어 보자. 필자의 데스크톱에는 SQL Server 2000, SQL Express, SQL Server 2005가 모두 설치되어 있다. 이 중 최초로 설치한 SQL Server 2000이 디폴트 인스턴스이며, SQL Express와 SQL Server 2005는 각각 이름이 SQLEXPRESS, SQL2005 인 명명된 인스턴스이다. 그리고 이들 인스턴스들이 모두 동시에 수행될 수 있다. 다시 말하자면 sqlservr.exe 프로세스가 여러개 수행 중일 수 있다는 말이다.

디폴트 인스턴스와 명명된 인스턴스는 설치 시에 결정된다. SQL Server를 설치할 때, 해당 인스턴스를 디폴트 인스턴스로 설치할 것인지, 명명된 인스턴스로 설치할 것인지 결정할 수 있다. 대개, 첫 번째 SQL Server를 설치할 때, 설치 프로그램은 디폴트 인스턴스로 설치하곤 하지만 반드시 그렇게 해야만 하는 것은 아니다. 컴퓨터에 달랑 1개의 SQL Server 인스턴스를 설치하더라도 명명된 인스턴스로 설치가 가능함에 유의하자.

SQL Express의 경우, 항상 명명된 인스턴스로 설치된다. 설치 프로그램은 SQL Express를 설치할 때 SQLEXPRESS 라는 이름을 사용하여 데이터베이스를 설치하며, 이미 이 이름이 존재하는 경우 뒤에 숫자가 붙게 된다.

Referencing SQL Server Instances

그렇다면 하나의 컴퓨터에 여러 SQL Server가 존재할 때, 각각의 인스턴스를 참조하는 방법은 무엇일까? 디폴트 인스턴스는 이름을 갖지 않기 때문에 해당 컴퓨터의 컴퓨터 이름 혹은 IP 로서 참조된다. 반면 명명된 인스턴스는 컴퓨터 이름(혹은 IP)과 인스턴스 이름을 백슬래쉬(\) 문자로 구분하여 모두 명시해 주어야 한다. 예를 들어, DBServer 란 컴퓨터(IP가 10.1.1.10 이라 가정)에 SQL Server 2000 이 디폴트 인스턴스이며, SQL Express 그리고 SQL Server 2005가 SQLEXPRESS, SQL2005란 이름으로 설치되었다고 가정해 보자. 먼저 디폴트 인스턴스인 SQL Server 2000을 참조하기 위해서는 단순히 DBServer(혹은 IP 10.1.1.10)로만 참조하면 디폴트 인스턴스에 접근할 수 있다. SQL Express에 접근하기 위해서는 DBServer\SQLEXPRESS 로, SQL Server 2005에 접근하기 위해서는 DBServer\SQL2005 라는 SQL Server 이름을 사용해야 한다.

 

 

11. 서버 구성 ( 기본값을 구성한다.)

  

12. 데이터베이스 엔진 구성 ( 사용자 계정을 관리자 계정으로 등록한다.)

    - 하단의 "현재 사용자 추가" 버튼을 클릭하여  DB 관리자로 등록한다. (자동 등록됨)

 

13. 설치 준비

    - 세팅(선택)된 내용을 보여준다.  실행을 누르면 설치를 시작한다.

 

 

14. 설치 완료.

 

 

15. 관리용 프로그램을 설치한다. 

    - SQL Server Managerment Studio (SSMS)

       ( https://msdn.microsoft.com/ko-kr/library/mt238290.aspx )

 

 

1. Servlet의 이해

1.1 Servlet 이란

  • Servlet은 웹에서 JAVA 프로그래밍을 구현하기 위해 탄생 함.
  • JAVA 로 구현된 CGI(Common Gateway Interface) 라고들 흔히 말함
  • HTTP protocol 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속하여 개발하며, Servlet은 Container에 의해서 실행되고, 관리된다.
  • HTML 변경시 Servlet을 재컴파일 해야 하는 단점이 있다.

1.2 Servlet Container란

  • HTTP 요청을 받아서 Servlet을 실행시키고, 그 결과를 사용자 브라우저에게 전달해주는 기능을 제공하는 컴포넌트 이다.
  • Servlet을 실행하고 생명주기를 관리하는 역할을 한다.
  • Servlet과 웹 서버(Apache, nginx..)가 서버 통신 할 수 있는 방법을 제공한다.
  • 멀티 스레딩을 지원하여 클라이언트의 다중 요청을 알아서 처리해준다.
  • 대표적인 Conatainer에는 Tomcat, jetty, jboss 등이 있다.

1.3 Servlet 동작과정

 

  • ① 사용자가 URL을 클릭하면 HTTP Request를 Servlet Container에 보낸다.
  • ② Servlet Container는 HttpServletRequest, HttpServletResponse 두 객체를 생성한다.
  • ③ 사용자가 요청한 URL을 분석하여 어느 서블릿에 대한 요청인지 찾는다. (DD를 참조하여 분석)
  • ④ 컨테이너는 서블릿 service() 메소드를 호출하며, POST, GET여부에 따라 doGet() 또는 doPost()가 호출된다.
  • ⑤ doGet() or doPost() 메소드는 동적인 페이지를 생성한 후 HttpServletResponse객체에 응답을 보낸다.
  • ⑥ 응답이 완료되면 HttpServletRequest, HttpServletResponse 두 객체를 소멸시킨다.

DD (배포서술자, Deployment Descriptor) = web.xml

  • Servlet, Error Page, Listener, Fillter, 보안 설정등 Web Application의 설정 파일이다.
  • URL과 실제 서블릿의 매핑 정보도 담고 있다.
  • 하나의 웹 어플리케이션에 하나만 존재한다.
  • 보통 Web Document Root 디렉토리에 WEB-INF 폴더 아래 web.xml 파일로 존재한다.

1.4 JSP의 동작구조

 

 

 

2. Servlet 간단예제

2.1 Servlet 예제 코드 작성

  • src/main/java 폴더 아래에 com.oracleclub.study.servlet 패키지를 생성하고 아래의 HelloServlet을 생성한다.
  • 모든 JAVA 파일은 직접 코딩해 주세요

com.oracleclub.study.servlet.HelloServlet.java

 /*
 * HelloServlet.java 2012. 9. 14. 
 *
 * Copyright www.gurubee.net All rights Reserved.
 */
 package com.oracleclub.study.servlet;

 import java.io.IOException; 
 import java.io.PrintWriter;

 import javax.servlet.http.HttpServlet; 
 import javax.servlet.http.HttpServletRequest; 
 import javax.servlet.http.HttpServletResponse; 

 /** 
  * Servlet 간단 예제 
  * 
  * @author : oramaster 
  * 
  */
 @SuppressWarnings("serial")
 public class HelloServlet extends HttpServlet { 
      // 대부분의 Servlet은 doGet 또는 doPost만 작성하며, 
      // 컨테이너가 생성한 Request와 Response 객체를 전달 받는다. 
     public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {    
          resp.setContentType("text/html; charset=UTF-8");
 

      // Response 객체의 PrintWriter를 사용해 브라우저에 HTML을 출력한다. 
      PrintWriter out = resp.getWriter();
      out.println("<HTML><HEAD><TITLE>HelloServlet</TITLE></HEAD>"); 
      out.println("<BODY>"); 
      out.println("<H2> Clinet IP: " + req.getRemoteAddr() + "</H2>"); 
      out.println("<H2> Client Host : " + req.getRemoteHost() + "</H2>");
      out.println("<H2> Request URI : " + req.getRequestURI() + "</H2>");
      out.println("</BODY></HTML>");
   }

 }

 

 

2.2 URL과 Servlet 매핑하기

  • HelloServlet 작성이 완료 되었다면, 배포서술자(DD=web.xml) 파일에 URL 매핑을 기술한다.
web.xml

 <servlet>
       <servlet-name>hello</servlet-name> <!-- DD 안에서 사용될 이름을 지정한다. --> 
       <servlet-class>com.oracleclub.study.servlet.HelloServlet</servlet-class> <!-- Servlet 클래스 이름을 기술한다. -->   </servlet>

 <servlet-mapping>
       <servlet-name>hello</servlet-name> <!-- Servlet 클래스의 DD안에서 정의한 이름 --> 
       <url-pattern>/servlet/hello</url-pattern> <!-- 클라이언트가 요청하게 될 이름. --> 
 </servlet-mapping>

배포서술자에서 서블릿 관련 항목을 간단히 설명하면 아래와 같다.

  • <servlet> : <servlet-name>과 <servlet-class>를 연결 한다.
  • <servlet-name> : DD 안에서 사용될 이름
  • <servlet-class> : 자바 클래스 이름
  • <url-pattern> : 클라이언트가 요청하게 될 이름
  • <servlet-mapping> : <servlet-name>과 <url-pattern>을 연결 한다.

2.3 Tomcat 연동 하기

  • 톰캣 다운로드 클릭 후 압축해제 한다.
  • 배포서술자까지 작성이 완료되었다면 톰캣을 연동하여 실행해 보자
  • 이클립스 <Servers>에서 <New>→<Server>를 실행한다.
  • <그림2-3>과 같이 <Tomcatv6.0 Server>를 선택한 후 <Server name> 을 web-project로 입력한다.
  • <Server runtime environment> 가 설정되어 있지 않다면 <Add> 버튼을 클릭하여 압축해제 한 Tomcat 디렉토리를 선택한다.
  • 강의에서는 Tomcat 6.x 버전을 기준으로 하였으며, 개인의 버전에 맞추어서 선택하면 된다.

 

  • Next 버튼을 클릭하고 위와 같이 spring-project를 [STUDY:Add]한 후 Finish 버튼을 클릭한다.

 

2.4 서블릿 실행

  • Tomcat Server를 Start 한 후 http://localhost:8080/servlet/hello URL 에 접속해 보자
  • 아래와 같이 정상적으로 실행이 되는지 확인해 보자

     Clinet IP : 0:0:0:0:0:0:0:1
     Client Host : 0:0:0:0:0:0:0:1
     Request URI : /servlet/hello 

2.5 Apache+Tomcat연동 후 서블릿 실행

  • 정상적으로 호출이 된다면 Apache와 연동을 해보자. 좀 전에 테스트한 http-vhost.conf 파일의 DocumentRoot를 spring-project의 webapps 디렉토리로 변경하고 Apache를 restart하면 된다.
  • JkMount 설정에 /servlet/ 디렉토리도 추가해 주자
http-vhost.conf 파일 설정

<VirtualHost *:80>
    ServerName test.apache.org
    DocumentRoot C:\workspace\project\spring-project\webapps 
 
# URL중 jsp로 오는 Request만 Tomcat에서 처리 함
JkMount  /*.jsp  spring-project 

# 아래의 spring-project는 workers.properties에서 등록한 worker이름 이다.
# servlet 예제 실행을 위해서 추가
JkMount  /servlet/*  spring-project
</VirtualHost> 

 

Apache를 restart 한 후 http://test.apache.org/servlet/hello 로 접속하여 Servlet이 정상적으로 실행되는 것을 확인하자.

 Clinet IP : 0:0:0:0:0:0:0:1
 Client Host : 0:0:0:0:0:0:0:1
 Request URI : /servlet/hello 

 

2.6 URL과 Servlet을 간단하게 매핑하기

  • 위 예제에서 간단하게 HelloServlet을 실행하였는데, 만약 서블릿 클래스가 굉장히 많아 진다면, <servlet> , <servlet-mapping> 설정이 서블릿의 두 배만큼 많아 질 것이다.
  • 톰캣에서는 서블릿 매핑 설정을 간단하게 할 수 있는 기능을 제공하며, 톰캣 서버의 web.xml(이클립스에서는 <Servers> <spring-project-config>의 web.xml) 에서 아래 부분의 주석만 해제하면 된다.
web.xml 파일 설정

<!-- 122라인 -->

        <servlet>

              <servlet-name>invoker</servlet-name>

              <servlet-class>

                      org.apache.catalina.servlets.InvokerServlet

              </servlet-class>

              <init-param>

                     <param-name>debug</param-name>

                     <param-value>0</param-value>

              </init-param>

              <load-on-startup>2</load-on-startup>

        </servlet>

<!-- 382라인 -->

        <servlet-mapping>

              <servlet-name>invoker</servlet-name>

              <url-pattern>/servlet/*</url-pattern>

        </servlet-mapping>

  • Tomcat Server의 web.xml 수정 후 이클립스를 다시 실행한다.
  • spring-project의 web.xml 에서 아래와 같이 servlet 이름만 지정하고 <servlet-mapping> 설정은 제거한다.
web.xml

<servlet>
       <servlet-name>hello</servlet-name> <!-- DD 안에서 사용될 이름을 지정한다. -->
       <servlet-class>com.oracleclub.study.servlet.HelloServlet</servlet-class> <!-- Servlet 클래스 이름을 기술한다. --> </servlet>

  • Tomcat Server를 재시작 한 후 http://test.apache.org/servlet/hello URL로 접속하여 정상 접속이 되는지 확인해보자
  • Invoker를 이용한 매핑의 경우 클라이언트 URL은 /servlet/servlet-name 이 된다.

 

3. 톰캣 startup 시 오류

3.1 404 Not Found 오류

  • <Server> → <spring-project> → <Web Moduls>에서 Path가 아래와 같이 공백으로 되어 있는지 확인한다.

3.2 java.lang.SecurityException

  • 톰캣이 startup시 "Caused by: java.lang.SecurityException: Servlet of class org.apache.catalina.servlets.InvokerServlet is privileged and cannot be loaded by this web application" 에러가 발생한다면 Tomcat Server의 server.xml 파일에서 <Context> 태그에 privileged="true" 옵션을 추가하면 된다.

3.3 java.lang.ClassNotFoundException

  • 톰캣이 startup시 "java.lang.ClassNotFoundException" 오류가 발생하면 .classpath의 MAVEN2_CLASSPATH_CONTAINER 부분을 확인한다.
  • 아래와 같이 attributes의 /WEB-INF/lib 폴더를 추가한다.
  • Project Clean, Tomcat Clean 한 후 다시 start 해보자
.classpath의 MAVEN2_CLASSPATH_CONTAINER 설정

<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER" > 
     <attributes> 
             <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
     </attributes> 
</classpathentry>

 

-- STS 버전 
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
      <attributes> 
             <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/> 
      </attributes> 
</classpathentry>

  • <Project> → <Clean>

  • <Server> → <Clean>

 

 

'배워서 남주자 > JAVA' 카테고리의 다른 글

Tomcat 설치 및 설정  (0) 2019.04.11

[tomcat 설치]

 1. yum 으로 Centos7 에서 제공하는 7.0 버전을 설치한다.

      [root@tomcat Catalina]# yum list installed | grep tomcat
      tomcat.noarch                          7.0.76-9.el7_6                  @updates 
      tomcat-admin-webapps.noarch            7.0.76-9.el7_6                  @updates 
      tomcat-docs-webapp.noarch              7.0.76-9.el7_6                  @updates 
      tomcat-el-2.2-api.noarch               7.0.76-9.el7_6                  @updates 
      tomcat-javadoc.noarch                  7.0.76-9.el7_6                  @updates 
      tomcat-jsp-2.2-api.noarch              7.0.76-9.el7_6                  @updates 
      tomcat-jsvc.noarch                     7.0.76-9.el7_6                  @updates 
      tomcat-lib.noarch                      7.0.76-9.el7_6                  @updates 
      tomcat-native.x86_64                   1.2.17-1.el7                    @epel    
      tomcat-servlet-3.0-api.noarch          7.0.76-9.el7_6                  @updates 
      tomcat-webapps.noarch                  7.0.76-9.el7_6                  @updates


 2. ntsysv 에 등록하여 자동 실행되도록 설정한다.
   

     [*] tomcat.service 

 

 3. 설치경로는 /etc/tomcat 에 관련 파일들이 생성된다.
    - 서비스 포트 확인  server.xml 파일을 열어 보면 아래와 같은 문구를 확인할 수 있다.

     

            < Connector  port="8080"  protocol="HTTP/1.1"
                     connectionTimeout="20000"
                     redirectPort="8443" />

 

    - Tomcat 서비스 구성 파일 ( tomcat.conf )

       

            TOMCAT_CFG_LOADED="1"
            TOMCATS_BASE="/var/lib/tomcats/"
            JAVA_HOME="/usr/lib/jvm/jre"
            CATALINA_HOME="/usr/share/tomcat"
            CATALINA_TMPDIR="/var/cache/tomcat/temp"
            SECURITY_MANAGER="false"


 4. 데몬 실행 및 종료
      # systemctl   start   tomcat   --> 실행
      # systemctl   stop   tomcat   --> 종료

    ​

'배워서 남주자 > JAVA' 카테고리의 다른 글

Java Servlet ( 개념 )  (0) 2019.04.11

+ Recent posts