<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>키큰난쟁이의 놀이터</title>
    <link>https://bigdwarf.tistory.com/</link>
    <description>개발 블로그</description>
    <language>ko</language>
    <pubDate>Mon, 20 Jul 2026 22:58:19 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>키큰난쟁이</managingEditor>
    <image>
      <title>키큰난쟁이의 놀이터</title>
      <url>https://tistory1.daumcdn.net/tistory/6831468/attach/ed721902b9ab454bb3d90a76b087ae3b</url>
      <link>https://bigdwarf.tistory.com</link>
    </image>
    <item>
      <title>모델 컨텍스트 프로토콜(Model Context Protocol, MCP) : AI와 데이터 통합의 새로운 표준</title>
      <link>https://bigdwarf.tistory.com/42</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목을-입력해주세요_-003 (1).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dkoqPb/btsM2vY0lav/DPuDEKD033lI6qvX52JvJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dkoqPb/btsM2vY0lav/DPuDEKD033lI6qvX52JvJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dkoqPb/btsM2vY0lav/DPuDEKD033lI6qvX52JvJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdkoqPb%2FbtsM2vY0lav%2FDPuDEKD033lI6qvX52JvJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1080&quot; data-filename=&quot;제목을-입력해주세요_-003 (1).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI 기술이 발전하면서 단순히 텍스트 응답을 생성하는 것을 넘어, 외부 데이터를 실시간으로 활용하는 능력이 중요해졌습니다. 그러나 기존 AI 모델은 특정 데이터 소스와 개별적으로 연동해야 하는 복잡한 과정이 필요했습니다. 이러한 문제를 해결하기 위해 등장한 것이 바로 모델 &lt;b&gt;컨텍스트 프로토콜(Model Context Protocol, MCP)&lt;/b&gt;입니다.&lt;br /&gt;&lt;br /&gt;MCP는 AI 모델과 외부 데이터 소스(API, 데이터베이스, 파일 시스템 등)를 연결하는 개방형 표준 프로토콜로,,Anthropic(Claude AI 개발사)이 2024년 11월에 처음 공개했습니다. 이를 통해 AI 모델은 실시간 데이터를 활용하거나 특정 기능을 실행할 수 있으며, 개발자들은 통합 작업의 복잡성을 크게 줄일 수 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. MCP란&amp;nbsp;무엇인가?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP는&amp;nbsp;AI&amp;nbsp;모델이&amp;nbsp;외부&amp;nbsp;데이터를&amp;nbsp;활용할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;돕는&amp;nbsp;표준화된&amp;nbsp;인터페이스입니다.&amp;nbsp;이를&amp;nbsp;통해&amp;nbsp;AI가&amp;nbsp;다양한&amp;nbsp;도구와&amp;nbsp;데이터를&amp;nbsp;연결하여&amp;nbsp;더&amp;nbsp;똑똑하고&amp;nbsp;실용적인&amp;nbsp;응답을&amp;nbsp;생성할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.1 기존 AI 모델의 한계&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;일반적으로&amp;nbsp;AI&amp;nbsp;모델은&amp;nbsp;훈련된&amp;nbsp;데이터에&amp;nbsp;기반하여&amp;nbsp;응답을&amp;nbsp;생성합니다.&lt;/li&gt;
&lt;li&gt;그러나 &lt;b&gt;실시간 데이터(날씨, 최신 뉴스, 데이터베이스 정보 등)&lt;/b&gt;에는 접근할 수 없다는 한계가 있었습니다.&lt;/li&gt;
&lt;li&gt;이를&amp;nbsp;해결하려면&amp;nbsp;매번&amp;nbsp;개별&amp;nbsp;API를&amp;nbsp;통합해야&amp;nbsp;하며,&amp;nbsp;이는&amp;nbsp;개발&amp;nbsp;비용과&amp;nbsp;유지&amp;nbsp;보수&amp;nbsp;부담을&amp;nbsp;증가시켰습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.2 MPC의 역할&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP는 다음과 같은 방식으로 기존 문제를 해결합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AI가&amp;nbsp;외부&amp;nbsp;데이터와&amp;nbsp;직접&amp;nbsp;연결&amp;nbsp;가능:&amp;nbsp;웹&amp;nbsp;API,&amp;nbsp;파일&amp;nbsp;시스템,&amp;nbsp;데이터베이스&amp;nbsp;등&amp;nbsp;다양한&amp;nbsp;소스와&amp;nbsp;통합.&lt;/li&gt;
&lt;li&gt;개별적인&amp;nbsp;API&amp;nbsp;연동&amp;nbsp;없이&amp;nbsp;통합&amp;nbsp;관리&amp;nbsp;가능:&amp;nbsp;단일&amp;nbsp;프로토콜로&amp;nbsp;모든&amp;nbsp;소스를&amp;nbsp;연결.&lt;/li&gt;
&lt;li&gt;보안성과&amp;nbsp;확장성&amp;nbsp;보장:&amp;nbsp;안전한&amp;nbsp;데이터&amp;nbsp;교환&amp;nbsp;및&amp;nbsp;새로운&amp;nbsp;도구&amp;nbsp;추가&amp;nbsp;가능.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;468226356_1101835827994659_8698680437795713903_n.jpg&quot; data-origin-width=&quot;968&quot; data-origin-height=&quot;749&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZDwyM/btsM1pesJLk/1CxfQfMxc2jZHUFh4Aomb1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZDwyM/btsM1pesJLk/1CxfQfMxc2jZHUFh4Aomb1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZDwyM/btsM1pesJLk/1CxfQfMxc2jZHUFh4Aomb1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZDwyM%2FbtsM1pesJLk%2F1CxfQfMxc2jZHUFh4Aomb1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;968&quot; height=&quot;749&quot; data-filename=&quot;468226356_1101835827994659_8698680437795713903_n.jpg&quot; data-origin-width=&quot;968&quot; data-origin-height=&quot;749&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. MCP의 주요 구성 요소&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP는 클라이언트-서버 구조로 동작하며, 다음과 같은 핵심 요소로 구성됩니다.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.1 MCP 호스트(Host)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AI&amp;nbsp;애플리케이션(예:&amp;nbsp;Claude&amp;nbsp;Desktop,&amp;nbsp;AI&amp;nbsp;챗봇)이&amp;nbsp;사용자&amp;nbsp;요청을&amp;nbsp;처리하고&amp;nbsp;MCP&amp;nbsp;서버와&amp;nbsp;통신합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.2 MCP 클라이언트(Client)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;호스트와&amp;nbsp;서버&amp;nbsp;간의&amp;nbsp;연결을&amp;nbsp;담당하며,&amp;nbsp;여러&amp;nbsp;MCP&amp;nbsp;서버에서&amp;nbsp;데이터를&amp;nbsp;가져옵니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.3 MCP 서버(Server)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;외부&amp;nbsp;데이터를&amp;nbsp;제공하거나&amp;nbsp;특정&amp;nbsp;작업(예:&amp;nbsp;계산)을&amp;nbsp;수행합니다.&lt;/li&gt;
&lt;li&gt;예:&amp;nbsp;날씨&amp;nbsp;API,&amp;nbsp;파일&amp;nbsp;시스템,&amp;nbsp;SQL&amp;nbsp;데이터베이스&amp;nbsp;등.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.4 MCP 컨텍스트(Context)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컨텍스트는 MCP 서버가 제공하는 실제 데이터나 기능으로 다음과 같이 분류됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 71px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;컨텍스트 요소&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;Resources&amp;nbsp;(리소스)&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;AI가&amp;nbsp;읽을&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;데이터&amp;nbsp;(파일,&amp;nbsp;DB&amp;nbsp;레코드&amp;nbsp;등)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;Tools&amp;nbsp;(도구)&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;AI가&amp;nbsp;호출할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;기능&amp;nbsp;(API&amp;nbsp;요청,&amp;nbsp;계산&amp;nbsp;등)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;Prompts&amp;nbsp;(프롬프트)&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;응답&amp;nbsp;생성을&amp;nbsp;조절하는&amp;nbsp;지침&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. FastMCP:&amp;nbsp;Python&amp;nbsp;기반&amp;nbsp;MCP&amp;nbsp;서버&amp;nbsp;구현&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FastMCP는 Python SDK로, 모델 컨텍스트 프로토콜(MCP)을 쉽게 구현할 수 있도록 설계된 도구입니다. Anthropic이 제안한 MCP 표준은 AI 모델과 외부 데이터 소스를 연결하는 강력한 방식이지만, 이를 직접 구축하려면 복잡한 프로토콜 관리와 많은 코드 작업이 필요합니다. FastMCP는 이러한 복잡성을 줄이고, 데코레이터 기반의 간단한 코드 작성으로 MCP 서버를 만들 수 있게 해줍니다.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.1 FastMCP란?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FastMCP는 MCP의 모든 사양을 구현한 Python SDK로, 다음과 같은 기능을 제공합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MCP 클라이언트 및 서버 생성: MCP 클라이언트와 서버를 쉽게 구축 가능&lt;/li&gt;
&lt;li&gt;표준화된 데이터 전송 방식 지원: Stdio, SSE 등 다양한 전송 방식 지원&lt;/li&gt;
&lt;li&gt;데코레이터 기반 코드 작성: 간단한 함수 정의와 데코레이터를 통해 MCP 리소스, 도구, 프롬프트를 설정 가능&lt;/li&gt;
&lt;li&gt;보안 및 확장성 보장: 로컬 및 원격 데이터 소스에 안전하게 접근&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.2&lt;span&gt; 예제&amp;nbsp;1:&amp;nbsp;두&amp;nbsp;숫자를&amp;nbsp;더하는&amp;nbsp;MCP&amp;nbsp;도구&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1743299530396&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from mcp.server.fastmcp import FastMCP

# MCP 서버 초기화
mcp = FastMCP(&quot;Demo&quot;)

# 두 숫자를 더하는 함수 정의
@mcp.tool()
def add(a: int, b: int) -&amp;gt; int:
    return a + b

if __name__ == &quot;__main__&quot;:
    mcp.run()&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;FastMCP(&quot;Demo&quot;)&lt;/code&gt;: MCP 서버 초기화&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@mcp.tool()&lt;/code&gt;: AI 모델이 호출할 수 있는 도구 정의&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mcp.run()&lt;/code&gt;: 서버 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.3&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;예제 2: SQLite&amp;nbsp;데이터베이스&amp;nbsp;탐색&amp;nbsp;MCP&amp;nbsp;서버&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1743302477325&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from mcp.server.fastmcp import FastMCP
import sqlite3

# SQLite DB 초기화
def init_db():
    conn = sqlite3.connect(&quot;example.db&quot;)
    cursor = conn.cursor()
    cursor.execute(&quot;CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)&quot;)
    cursor.execute(&quot;INSERT INTO users (name) VALUES ('Alice'), ('Bob')&quot;)
    conn.commit()
    conn.close()

# MCP 서버 초기화
mcp = FastMCP(&quot;SQLite Explorer&quot;)

@mcp.resource(&quot;db://users&quot;)
def list_users() -&amp;gt; list[dict]:
    conn = sqlite3.connect(&quot;example.db&quot;)
    cursor = conn.cursor()
    cursor.execute(&quot;SELECT * FROM users&quot;)
    rows = cursor.fetchall()
    conn.close()
    return [{&quot;id&quot;: row[0], &quot;name&quot;: row[1]} for row in rows]

@mcp.tool()
def add_user(name: str):
    conn = sqlite3.connect(&quot;example.db&quot;)
    cursor = conn.cursor()
    cursor.execute(&quot;INSERT INTO users (name) VALUES (?)&quot;, (name,))
    conn.commit()
    conn.close()
    return f&quot;User {name} added successfully!&quot;

if __name__ == &quot;__main__&quot;:
    init_db()
    mcp.run()&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;list_users()&lt;/code&gt;: SQLite 테이블에서 사용자 목록 반환&lt;/li&gt;
&lt;li&gt;&lt;code&gt;add_user(name)&lt;/code&gt;: 새로운 사용자를 추가하는 도구 정의&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. MCP&amp;nbsp;활용&amp;nbsp;사례&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.1&amp;nbsp;파일&amp;nbsp;시스템&amp;nbsp;연동&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AI가 로컬 파일을 읽거나 요약 기능 수행 가능.&lt;/li&gt;
&lt;li&gt;예:&amp;nbsp;&quot;이&amp;nbsp;문서에서&amp;nbsp;중요한&amp;nbsp;내용을&amp;nbsp;요약해줘.&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.2 업무 도구(Slack, Google Drive)와 연동&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Slack 메시지 분석이나 Google Drive 문서 검색 가능&lt;/li&gt;
&lt;li&gt;예: &quot;지난주 공유된 문서를 찾아줘.&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.3 데이터베이스&amp;nbsp;질의&amp;nbsp;처리&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SQL 쿼리를 실행하여 실시간 데이터를 분석&lt;/li&gt;
&lt;li&gt;예: &quot;지난달 매출 데이터를 보여줘.&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.4 실시간&amp;nbsp;정보&amp;nbsp;제공&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;날씨 API나 최신 뉴스를 활용해 실시간 정보 제공&lt;/li&gt;
&lt;li&gt;예:&amp;nbsp;&quot;오늘&amp;nbsp;서울의&amp;nbsp;날씨는&amp;nbsp;어때?&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. MCP가&amp;nbsp;가져올&amp;nbsp;미래&amp;nbsp;변화&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP는 AI 기술 발전에 있어 중요한 전환점입니다. 앞으로 기대되는 변화는 다음과 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AI 모델의 실시간 데이터 활용 능력 향상: 더 정확하고 유용한 응답 생성&lt;/li&gt;
&lt;li&gt;API 통합 부담 감소: 개발자가 더 쉽게 새로운 기능을 추가 가능&lt;/li&gt;
&lt;li&gt;보안성과 확장성을 갖춘 생태계 구축: 기업과 개발자 모두에게 유리한 환경 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재&amp;nbsp;많은&amp;nbsp;기업들이&amp;nbsp;MCP를&amp;nbsp;도입하여&amp;nbsp;AI&amp;nbsp;서비스를&amp;nbsp;개선하고&amp;nbsp;있으며,&amp;nbsp;앞으로&amp;nbsp;이&amp;nbsp;생태계는&amp;nbsp;더욱&amp;nbsp;확장될&amp;nbsp;것으로&amp;nbsp;기대됩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 마무리&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델 컨텍스트 프로토콜(MCP)은 AI와 외부 데이터를 연결하여 더욱 강력하고 유연한 응용 프로그램을 만들 수 있는 혁신적인 기술입니다. Anthropic이 주도하는 이 표준은 앞으로도 다양한 산업에서 폭넓게 활용될 것입니다. 이제 여러분도 MCP를 활용해 더 똑똑한 AI 애플리케이션을 만들어보세요.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>AI/AI 응용</category>
      <category>Ai</category>
      <category>MCP</category>
      <category>mcp architecture</category>
      <category>mcp clients</category>
      <category>mcp servers</category>
      <category>model context protocol</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/42</guid>
      <comments>https://bigdwarf.tistory.com/42#entry42comment</comments>
      <pubDate>Sun, 30 Mar 2025 11:46:54 +0900</pubDate>
    </item>
    <item>
      <title>Spring Boot 3에서 Swagger와 H2 Database 사용하기</title>
      <link>https://bigdwarf.tistory.com/41</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;425&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bezFqk/btsMpKwGbH4/N6jhJAKH1C3TM05btjWkSk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bezFqk/btsMpKwGbH4/N6jhJAKH1C3TM05btjWkSk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bezFqk/btsMpKwGbH4/N6jhJAKH1C3TM05btjWkSk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbezFqk%2FbtsMpKwGbH4%2FN6jhJAKH1C3TM05btjWkSk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;425&quot; data-filename=&quot;image.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;425&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring Boot 3.x 프로젝트에서 Swagger를 이용한 API 문서화와 H2 Database를 활용해서 간단한 회원 관리 시스템 예시로 구현해보겠습니다. 이 글에서는 다음 내용을 다룰 예정입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Gradle을&amp;nbsp;이용한&amp;nbsp;프로젝트&amp;nbsp;설정&lt;/li&gt;
&lt;li&gt;Swagger&amp;nbsp;UI&amp;nbsp;설정&amp;nbsp;및&amp;nbsp;사용법&lt;/li&gt;
&lt;li&gt;H2&amp;nbsp;Database&amp;nbsp;설정&amp;nbsp;및&amp;nbsp;JPA를&amp;nbsp;이용한&amp;nbsp;자동&amp;nbsp;테이블&amp;nbsp;생성&lt;/li&gt;
&lt;li&gt;회원&amp;nbsp;관리&amp;nbsp;기능&amp;nbsp;(등록,&amp;nbsp;수정,&amp;nbsp;삭제)&amp;nbsp;구현&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 설명에서 사용하는 주요 기술 스택은 다음과 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Java&amp;nbsp;버전:&amp;nbsp;17&lt;/li&gt;
&lt;li&gt;Spring&amp;nbsp;Boot&amp;nbsp;버전:&amp;nbsp;3.4.2&lt;/li&gt;
&lt;li&gt;Gradle&amp;nbsp;버전:&amp;nbsp;8.x&amp;nbsp;(8.4&amp;nbsp;이상)&lt;/li&gt;
&lt;li&gt;H2&amp;nbsp;Database&lt;/li&gt;
&lt;li&gt;Swagger&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 프로젝트 설정&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 build.gradle 파일을 다음과 같이 설정합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740042313801&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;plugins {
	id 'java'
	id 'org.springframework.boot' version '3.4.2'
	id 'io.spring.dependency-management' version '1.1.7'
}

group = 'me.junu'
version = '0.0.1-SNAPSHOT'

java {
	toolchain {
		languageVersion = JavaLanguageVersion.of(17)
	}
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.4.0'
	runtimeOnly 'com.h2database:h2'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
	useJUnitPlatform()
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. Swagger&amp;nbsp;설정&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Swagger UI를 설정하기 위해 SwaggerConfig 클래스를 생성합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740042384116&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SwaggerConfig {

    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI()
            .info(new Info()
                .title(&quot;사용자 관리 API&quot;)
                .version(&quot;1.0&quot;)
                .description(&quot;Spring Boot 3.x (Springdoc) 사용자 관리 API&quot;));
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.&amp;nbsp;H2&amp;nbsp;Database&amp;nbsp;설정&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'application.yml' 파일에 H2 Database 설정을 추가합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740042454413&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;spring:
  datasource:
    url: jdbc:h2:mem:testdb
    driver-class-name: org.h2.Driver
    username: sa
    password:
  h2:
    console:
      enabled: true
      path: /h2-console
  jpa:
    database-platform: org.hibernate.dialect.H2Dialect
    hibernate:
      ddl-auto: create-drop
    show-sql: true

springdoc:
  api-docs:
    path: /api-docs
  swagger-ui:
    path: /swagger-ui.html&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 엔티티&amp;nbsp;클래스&amp;nbsp;생성&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;User 엔티티 클래스를 생성합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740042510809&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import jakarta.persistence.*;

@Entity
@Table(name = &quot;users&quot;)
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false, unique = true)
    private String username;

    @Column(nullable = false)
    private String password;

    @Column(nullable = false)
    private String email;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.&amp;nbsp;리포지토리&amp;nbsp;인터페이스&amp;nbsp;생성&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1740042571281&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import me.junu.auth.user.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.Optional;

@Repository
public interface UserRepository extends JpaRepository&amp;lt;User, Long&amp;gt; {
    Optional&amp;lt;User&amp;gt; findByUsername(String username);
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6. 서비스&amp;nbsp;클래스&amp;nbsp;구현&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1740042604067&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import me.junu.auth.user.entity.User;
import me.junu.auth.user.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    private final UserRepository userRepository;

    @Autowired
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public User registerUser(User user) {
        return userRepository.save(user);
    }

    public User updateUser(Long id, User userDetails) {
        User user = userRepository.findById(id)
                .orElseThrow(() -&amp;gt; new RuntimeException(&quot;User not found&quot;));
        user.setUsername(userDetails.getUsername());
        user.setEmail(userDetails.getEmail());
        return userRepository.save(user);
    }

    public void deleteUser(Long id) {
        userRepository.deleteById(id);
    }

    public User loginUser(String username, String password) {
        User user = userRepository.findByUsername(username)
                .orElseThrow(() -&amp;gt; new RuntimeException(&quot;User not found&quot;));
        // TODO: Add password verification
        return user;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;7.&lt;span&gt; 컨트롤러&amp;nbsp;클래스&amp;nbsp;구현&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1740042638439&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import me.junu.auth.user.entity.User;
import me.junu.auth.user.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping(&quot;/api/v1/users&quot;)
public class UserController {

    private final UserService userService;

    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }

    @PostMapping(&quot;/register&quot;)
    public ResponseEntity&amp;lt;User&amp;gt; registerUser(@RequestBody User user) {
        User registeredUser = userService.registerUser(user);
        return ResponseEntity.ok(registeredUser);
    }

    @PutMapping(&quot;/{id}&quot;)
    public ResponseEntity&amp;lt;User&amp;gt; updateUser(@PathVariable Long id, @RequestBody User userDetails) {
        User updatedUser = userService.updateUser(id, userDetails);
        return ResponseEntity.ok(updatedUser);
    }

    @DeleteMapping(&quot;/{id}&quot;)
    public ResponseEntity&amp;lt;?&amp;gt; deleteUser(@PathVariable Long id) {
        userService.deleteUser(id);
        return ResponseEntity.ok().build();
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;8.&amp;nbsp;애플리케이션&amp;nbsp;실행&amp;nbsp;및&amp;nbsp;테스트&lt;/b&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;애플리케이션을&amp;nbsp;실행합니다.&lt;/li&gt;
&lt;li&gt;Swagger&amp;nbsp;UI&amp;nbsp;(http://localhost:8080/swagger-ui.html)에&amp;nbsp;접속하여&amp;nbsp;API를&amp;nbsp;테스트합니다.&lt;/li&gt;
&lt;li&gt;H2&amp;nbsp;Console&amp;nbsp;(http://localhost:8080/h2-console)에&amp;nbsp;접속하여&amp;nbsp;데이터베이스를&amp;nbsp;확인합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1862&quot; data-origin-height=&quot;918&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qE4CC/btsMo4P4Znl/7ubpHqfYIq3uIKw1PSqsx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qE4CC/btsMo4P4Znl/7ubpHqfYIq3uIKw1PSqsx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qE4CC/btsMo4P4Znl/7ubpHqfYIq3uIKw1PSqsx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqE4CC%2FbtsMo4P4Znl%2F7ubpHqfYIq3uIKw1PSqsx1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1862&quot; height=&quot;918&quot; data-origin-width=&quot;1862&quot; data-origin-height=&quot;918&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1865&quot; data-origin-height=&quot;922&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckLhW7/btsMoQdtooM/ZBdFqgl1rDIPTKNucnaSEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckLhW7/btsMoQdtooM/ZBdFqgl1rDIPTKNucnaSEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckLhW7/btsMoQdtooM/ZBdFqgl1rDIPTKNucnaSEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckLhW7%2FbtsMoQdtooM%2FZBdFqgl1rDIPTKNucnaSEK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1865&quot; height=&quot;922&quot; data-origin-width=&quot;1865&quot; data-origin-height=&quot;922&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;9. 마무리&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 Spring Boot 3.x, Gradle, Swagger, H2 Database를 사용하여 간단한 회원 관리 API를 구현해보았습니다. 이 예제를 바탕으로 더 복잡한 기능을 추가하거나 실제 프로젝트에 적용해볼 수 있습니다. 주의할 점은 이 예제에서는 보안 처리나 예외 처리 등이 생략되어 있으므로, 실제 프로덕션 환경에서는 이러한 부분들을 반드시 고려해야 합니다.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/5CXXP/btsMtpGoZYp/xL8elobmrlqqRXRgUibGMk/auth.zip?attach=1&amp;amp;knm=tfile.zip&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;auth.zip&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.17MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>프레임워크/Spring</category>
      <category>API</category>
      <category>api 문서화</category>
      <category>Gradle</category>
      <category>h2 database</category>
      <category>JPA</category>
      <category>Spring Boot</category>
      <category>swagger</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/41</guid>
      <comments>https://bigdwarf.tistory.com/41#entry41comment</comments>
      <pubDate>Thu, 20 Feb 2025 18:17:42 +0900</pubDate>
    </item>
    <item>
      <title>Spring의 Argument Resolver 이해하기</title>
      <link>https://bigdwarf.tistory.com/40</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;img.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bceGMw/btsMmlXHQVW/tCIKl5UG6SFNhL6qa1NaQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bceGMw/btsMmlXHQVW/tCIKl5UG6SFNhL6qa1NaQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bceGMw/btsMmlXHQVW/tCIKl5UG6SFNhL6qa1NaQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbceGMw%2FbtsMmlXHQVW%2FtCIKl5UG6SFNhL6qa1NaQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;640&quot; data-filename=&quot;img.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.&amp;nbsp; Argument Resolver 소개&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Argument&amp;nbsp;Resolver는&amp;nbsp;Spring&amp;nbsp;MVC에서&amp;nbsp;컨트롤러&amp;nbsp;메서드의&amp;nbsp;파라미터를&amp;nbsp;유연하게&amp;nbsp;처리할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;해주는&amp;nbsp;강력한&amp;nbsp;기능입니다.&amp;nbsp;이를&amp;nbsp;통해&amp;nbsp;개발자는&amp;nbsp;요청&amp;nbsp;데이터를&amp;nbsp;원하는&amp;nbsp;형태로&amp;nbsp;가공하여&amp;nbsp;컨트롤러에&amp;nbsp;전달할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.&amp;nbsp; Argument&amp;nbsp;Resolver의&amp;nbsp;역할&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP&amp;nbsp;요청&amp;nbsp;데이터&amp;nbsp;변환:&amp;nbsp;요청의&amp;nbsp;파라미터,&amp;nbsp;헤더,&amp;nbsp;바디&amp;nbsp;등을&amp;nbsp;원하는&amp;nbsp;객체로&amp;nbsp;변환합니다.&lt;/li&gt;
&lt;li&gt;공통&amp;nbsp;로직&amp;nbsp;처리:&amp;nbsp;인증&amp;nbsp;정보&amp;nbsp;추출,&amp;nbsp;데이터&amp;nbsp;검증&amp;nbsp;등의&amp;nbsp;공통&amp;nbsp;로직을&amp;nbsp;처리할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/li&gt;
&lt;li&gt;코드 중복 제거: 컨트롤러에서 반복되는 로직을 Argument Resolver로 이동시켜 코드 중복을 줄일 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.&amp;nbsp; Argument Resolver 동작 원리&lt;/b&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;사용자가&amp;nbsp;HTTP&amp;nbsp;Request를&amp;nbsp;보냅니다.&lt;/li&gt;
&lt;li&gt;DispatcherServlet이&amp;nbsp;요청을&amp;nbsp;받습니다.HandlerAdapter의&amp;nbsp;Argument&amp;nbsp;Resolver&amp;nbsp;호출&lt;/li&gt;
&lt;li&gt;HandlerMapping을&amp;nbsp;통해&amp;nbsp;요청을&amp;nbsp;처리할&amp;nbsp;핸들러(컨트롤러)를&amp;nbsp;찾습니다.&lt;/li&gt;
&lt;li&gt;HandlerAdapter가&amp;nbsp;Argument&amp;nbsp;Resolver를&amp;nbsp;호출합니다.&lt;/li&gt;
&lt;li&gt;Argument&amp;nbsp;Resolver가&amp;nbsp;요청&amp;nbsp;데이터를&amp;nbsp;처리하여&amp;nbsp;핸들러&amp;nbsp;메서드의&amp;nbsp;파라미터로&amp;nbsp;전달할&amp;nbsp;객체를&amp;nbsp;생성합니다.&lt;/li&gt;
&lt;li&gt;핸들러(컨트롤러) 메서드가 실행됩니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.&amp;nbsp; Argument Resolver 구현 방법&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Argument Resolver를 구현하려면 HandlerMethodArgumentResolver 인터페이스를 구현해야 합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1739851773871&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class CustomArgumentResolver implements HandlerMethodArgumentResolver {

    @Override
    public boolean supportsParameter(MethodParameter parameter) {
        return parameter.getParameterType().equals(CustomObject.class);
    }

    @Override
    public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
                                  NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
        // 요청 데이터를 처리하여 CustomObject 생성 및 반환
        CustomObject customObject = new CustomObject();
        // customObject 설정...
        return customObject;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.&amp;nbsp; Argument Resolver 사용 예시&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;커스텀 어노테이션 정의&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1739852148969&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface CurrentUser {}&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Argument&amp;nbsp;Resolver&amp;nbsp;구현&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1739852167108&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class CurrentUserArgumentResolver implements HandlerMethodArgumentResolver {

    @Override
    public boolean supportsParameter(MethodParameter parameter) {
        return parameter.getParameterAnnotation(CurrentUser.class) != null
                &amp;amp;&amp;amp; parameter.getParameterType().equals(User.class);
    }

    @Override
    public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
                                  NativeWebRequest webRequest, WebDataBinderFactory binderFactory) {
        HttpServletRequest request = (HttpServletRequest) webRequest.getNativeRequest();
        return getUserFromSession(request);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컨트롤러에서&amp;nbsp;사용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1739852189776&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@GetMapping(&quot;/profile&quot;)
public String getProfile(@CurrentUser User user) {
    return &quot;User: &quot; + user.getName();
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6.&amp;nbsp; 마무리&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Argument&amp;nbsp;Resolver는&amp;nbsp;Spring&amp;nbsp;MVC에서&amp;nbsp;요청&amp;nbsp;데이터&amp;nbsp;처리를&amp;nbsp;유연하게&amp;nbsp;만들어주는&amp;nbsp;강력한&amp;nbsp;도구입니다.&amp;nbsp;이를&amp;nbsp;통해&amp;nbsp;코드의&amp;nbsp;재사용성을&amp;nbsp;높이고,&amp;nbsp;컨트롤러의&amp;nbsp;책임을&amp;nbsp;줄여&amp;nbsp;더&amp;nbsp;깔끔한&amp;nbsp;코드를&amp;nbsp;작성할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;복잡한&amp;nbsp;비즈니스&amp;nbsp;로직이나&amp;nbsp;공통&amp;nbsp;처리&amp;nbsp;로직을&amp;nbsp;Argument&amp;nbsp;Resolver로&amp;nbsp;분리함으로써,&amp;nbsp;개발자는&amp;nbsp;핵심&amp;nbsp;비즈니스&amp;nbsp;로직에&amp;nbsp;더&amp;nbsp;집중할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;됩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프레임워크/Spring</category>
      <category>argumentresolver</category>
      <category>HandlerMethodArgumentResolver</category>
      <category>Spring</category>
      <category>Spring MVC</category>
      <category>백엔드</category>
      <category>스프링</category>
      <category>스프링부트</category>
      <category>자바</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/40</guid>
      <comments>https://bigdwarf.tistory.com/40#entry40comment</comments>
      <pubDate>Tue, 18 Feb 2025 19:30:31 +0900</pubDate>
    </item>
    <item>
      <title>파워목업(PowerMockup)으로 화면 설계 &amp;amp; 리뷰 무료 라이센스 혜택</title>
      <link>https://bigdwarf.tistory.com/39</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;907&quot; data-origin-height=&quot;712&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PeSXH/btsMiE3hFz2/843u8pUjOiCjoISCV7lLh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PeSXH/btsMiE3hFz2/843u8pUjOiCjoISCV7lLh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PeSXH/btsMiE3hFz2/843u8pUjOiCjoISCV7lLh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPeSXH%2FbtsMiE3hFz2%2F843u8pUjOiCjoISCV7lLh1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;907&quot; height=&quot;712&quot; data-origin-width=&quot;907&quot; data-origin-height=&quot;712&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-end=&quot;348&quot; data-start=&quot;316&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 소개 (Power Mockup 소개)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-end=&quot;517&quot; data-start=&quot;350&quot; data-ke-size=&quot;size16&quot;&gt;Power Mockup은 UI/UX 디자인을 위해 설계된 뛰어난 프로토타이핑 툴입니다. 특히, PowerPoint와의 통합 덕분에 빠르고 직관적인 디자인 작업이 가능하다는 장점이 있습니다. 복잡한 툴을 배우지 않고도 쉽게 사용하며, 다양한 템플릿과 기능을 제공해 많은 디자이너들이 애용하는 툴입니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-end=&quot;545&quot; data-start=&quot;524&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 주요 기능과 장점&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1073&quot; data-start=&quot;547&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;711&quot; data-start=&quot;547&quot;&gt;&lt;b&gt;PowerPoint와의 호환성&lt;/b&gt;&lt;br /&gt;Power Mockup은 PowerPoint 내에서 바로 실행되기 때문에, 별도의 디자인 툴을 익히지 않고도 손쉽게 디자인을 시각화할 수 있습니다. PowerPoint의 기능을 그대로 활용할 수 있어, 기존 사용자가 익숙하게 사용할 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;837&quot; data-start=&quot;713&quot;&gt;&lt;b&gt;다양한 UI 요소 제공&lt;/b&gt;&lt;br /&gt;버튼, 네비게이션 바, 아이콘 등 다양한 UI 요소를 제공하여 빠르게 웹페이지나 앱 화면을 구성할 수 있습니다. 템플릿의 선택 폭도 넓어 다양한 디자인 스타일을 구현할 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;973&quot; data-start=&quot;839&quot;&gt;&lt;b&gt;직관적인 인터페이스&lt;/b&gt;&lt;br /&gt;사용자는 드래그 앤 드롭 방식으로 쉽게 요소를 배치하고 편집할 수 있어, 디자인을 만들면서 불편함 없이 작업할 수 있습니다. 또한, 고급 기능을 필요로 하지 않으면서도 뛰어난 결과물을 얻을 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;1073&quot; data-start=&quot;975&quot;&gt;&lt;b&gt;빠른 프로토타입 제작&lt;/b&gt;&lt;br /&gt;빠른 프로토타입을 만들 수 있어, 디자인 컨셉을 빠르게 시각화하고 피드백을 받을 수 있습니다. 이는 팀원 간 협업에도 큰 도움이 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 소개 영상&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=OrSxE0XnWLw&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/9o43F/hyYamknan9/FmC9tvJpKTkmmShXREwZNk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/maERw/hyYcfSYJz4/rROhzVG8owctSRDrAcR181/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;Short Intro to PowerMockup 4&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/OrSxE0XnWLw&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 설치 하기&lt;/b&gt;&lt;/h3&gt;
&lt;figure id=&quot;og_1739432989743&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;PowerPoint Wireframe and Prototyping Tool | PowerMockup&quot; data-og-description=&quot;Collaboration PowerPoint includes collaboration and sharing features that facilitate working in a team. You can share documents with others via OneDrive or SharePoint, leave comments on slides, and merge different versions of a document into a single file.&quot; data-og-host=&quot;www.powermockup.com&quot; data-og-source-url=&quot;https://www.powermockup.com/&quot; data-og-url=&quot;https://www.powermockup.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/p45dN/hyYcb39Obj/o8UGKY0vlxixpnm3V7MgSK/img.jpg?width=720&amp;amp;height=405&amp;amp;face=31_18_702_361,https://scrap.kakaocdn.net/dn/0xD8B/hyYfMVQUud/eJkz0eSDpQbzpKSolPCXhk/img.jpg?width=720&amp;amp;height=405&amp;amp;face=0_0_720_405,https://scrap.kakaocdn.net/dn/khG5K/hyYb6uYR29/TUL06v9XEbjlvxSCgEEKz0/img.jpg?width=720&amp;amp;height=405&amp;amp;face=0_0_720_405&quot;&gt;&lt;a href=&quot;https://www.powermockup.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.powermockup.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/p45dN/hyYcb39Obj/o8UGKY0vlxixpnm3V7MgSK/img.jpg?width=720&amp;amp;height=405&amp;amp;face=31_18_702_361,https://scrap.kakaocdn.net/dn/0xD8B/hyYfMVQUud/eJkz0eSDpQbzpKSolPCXhk/img.jpg?width=720&amp;amp;height=405&amp;amp;face=0_0_720_405,https://scrap.kakaocdn.net/dn/khG5K/hyYb6uYR29/TUL06v9XEbjlvxSCgEEKz0/img.jpg?width=720&amp;amp;height=405&amp;amp;face=0_0_720_405');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;PowerPoint Wireframe and Prototyping Tool | PowerMockup&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Collaboration PowerPoint includes collaboration and sharing features that facilitate working in a team. You can share documents with others via OneDrive or SharePoint, leave comments on slides, and merge different versions of a document into a single file.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.powermockup.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 링크를 통해서 설치 진행하시면 됩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-end=&quot;1099&quot; data-start=&quot;1080&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 내가 느낀 점&lt;/b&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1282&quot; data-start=&quot;1101&quot; data-ke-size=&quot;size16&quot;&gt;Power Mockup을 사용해본 후, 가장 큰 장점은 직관성과 시간 절약입니다. 특히, 기존에 PowerPoint를 사용해본 경험이 있다면 별다른 학습 없이 바로 사용할 수 있다는 점에서 매우 유용했습니다. 다양한 UI 요소를 제공하여, 디자인을 처음 시작하는 사람도 큰 부담 없이 퀄리티 높은 화면을 만들 수 있었습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-end=&quot;1282&quot; data-start=&quot;1101&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 무료 라이센스 취득 방법&lt;/b&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;885&quot; data-start=&quot;141&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;286&quot; data-start=&quot;141&quot;&gt;Power Mockup 공식 웹사이트 가입
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;286&quot; data-start=&quot;175&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;286&quot; data-start=&quot;175&quot;&gt;먼저 &lt;a href=&quot;https://www.powermockup.com/&quot; data-end=&quot;232&quot; data-start=&quot;180&quot;&gt;Power Mockup 공식 웹사이트&lt;/a&gt;에 접속하여 계정을 만듭니다. 가입 절차는 간단하며, 이메일과 비밀번호만으로 가입할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;430&quot; data-start=&quot;288&quot;&gt;Power Mockup 다운로드
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;430&quot; data-start=&quot;316&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;430&quot; data-start=&quot;316&quot;&gt;웹사이트에서 Power Mockup을 다운로드합니다. 설치 후 PowerPoint에서 Power Mockup을 실행할 수 있습니다. 설치 과정 중에 무료 체험 버전을 사용할 수 있는 기회도 제공됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;624&quot; data-start=&quot;432&quot;&gt;제품 사용 후 리뷰 작성
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;624&quot; data-start=&quot;456&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;509&quot; data-start=&quot;456&quot;&gt;Power Mockup을 실제로 사용해보고, 사용 경험을 바탕으로 솔직한 리뷰를 작성합니다.&lt;/li&gt;
&lt;li data-end=&quot;573&quot; data-start=&quot;513&quot;&gt;리뷰에는 제품의 장단점, 유용했던 기능, 디자인 작업에서 어떻게 도움이 되었는지 등을 포함하면 좋습니다.&lt;/li&gt;
&lt;li data-end=&quot;624&quot; data-start=&quot;577&quot;&gt;리뷰를 작성하는 페이지는 웹사이트에 접속 후 안내에 따라 쉽게 찾을 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;771&quot; data-start=&quot;626&quot;&gt;리뷰 제출 후 무료 라이센스 요청
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;771&quot; data-start=&quot;655&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;716&quot; data-start=&quot;655&quot;&gt;리뷰를 작성한 후 제출하면, Power Mockup 팀에서 리뷰를 확인하고, 무료 라이센스를 제공해줍니다.&lt;/li&gt;
&lt;li data-end=&quot;771&quot; data-start=&quot;720&quot;&gt;보통 라이센스는 이메일을 통해 제공되며, 라이센스 코드가 포함된 메일을 수령하게 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;885&quot; data-start=&quot;773&quot;&gt;무료 라이센스 활성화
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;885&quot; data-start=&quot;795&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;885&quot; data-start=&quot;795&quot;&gt;받은 라이센스 코드를 Power Mockup에 입력하면 무료 라이센스를 활성화할 수 있습니다. 이제 제한 없이 Power Mockup을 사용하실 수 있습니다!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>기타/일상</category>
      <category>power mockup</category>
      <category>파워목업</category>
      <category>파워포인트</category>
      <category>화면설계</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/39</guid>
      <comments>https://bigdwarf.tistory.com/39#entry39comment</comments>
      <pubDate>Thu, 13 Feb 2025 16:53:20 +0900</pubDate>
    </item>
    <item>
      <title>[Docker] Jenkins와 GitHub 연동하기: 지속적 배포(Continuous Deployment, CD)</title>
      <link>https://bigdwarf.tistory.com/38</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;다운로드.jpg&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;650&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHcgeQ/btsJ0bD7m1u/R007plsSE09ktdkkuvjdH1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHcgeQ/btsJ0bD7m1u/R007plsSE09ktdkkuvjdH1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHcgeQ/btsJ0bD7m1u/R007plsSE09ktdkkuvjdH1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHcgeQ%2FbtsJ0bD7m1u%2FR007plsSE09ktdkkuvjdH1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;866&quot; height=&quot;650&quot; data-filename=&quot;다운로드.jpg&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;650&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://bigdwarf.blog/37&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.10.05 - [데브옵스/CICD] - [Docker] Jenkins와 GitHub 연동하기: 지속적 통합(Continuous Integration, CI)&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figure id=&quot;og_1728614848451&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Docker] Jenkins와 GitHub 연동하기: 지속적 통합(Continuous Integration, CI)&quot; data-og-description=&quot;2024.10.04 - [데브옵스/CICD] - Docker로 Jenkins 설치하기: 단계별 가이드1.&amp;nbsp;들어가며지속적 통합(Continuous Integration, CI)은 현대 소프트웨어 개발에서 필수적인 프로세스입니다. CI를 통해 개발자들은 코&quot; data-og-host=&quot;bigdwarf.blog&quot; data-og-source-url=&quot;https://bigdwarf.blog/37&quot; data-og-url=&quot;https://bigdwarf.blog/37&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Ux0mX/hyXeetDtPj/K2TkQTAnPqDqBlupe86Eg0/img.jpg?width=800&amp;amp;height=600&amp;amp;face=372_92_518_250,https://scrap.kakaocdn.net/dn/mldCX/hyXeef9ggE/L2xHQieksWys8OiW55K13K/img.jpg?width=800&amp;amp;height=600&amp;amp;face=372_92_518_250&quot;&gt;&lt;a href=&quot;https://bigdwarf.blog/37&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://bigdwarf.blog/37&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Ux0mX/hyXeetDtPj/K2TkQTAnPqDqBlupe86Eg0/img.jpg?width=800&amp;amp;height=600&amp;amp;face=372_92_518_250,https://scrap.kakaocdn.net/dn/mldCX/hyXeef9ggE/L2xHQieksWys8OiW55K13K/img.jpg?width=800&amp;amp;height=600&amp;amp;face=372_92_518_250');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[Docker] Jenkins와 GitHub 연동하기: 지속적 통합(Continuous Integration, CI)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;2024.10.04 - [데브옵스/CICD] - Docker로 Jenkins 설치하기: 단계별 가이드1.&amp;nbsp;들어가며지속적 통합(Continuous Integration, CI)은 현대 소프트웨어 개발에서 필수적인 프로세스입니다. CI를 통해 개발자들은 코&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;bigdwarf.blog&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;Jenkins를&amp;nbsp;활용해&amp;nbsp;CI/CD&amp;nbsp;파이프라인을&amp;nbsp;구축할&amp;nbsp;때&amp;nbsp;Docker&amp;nbsp;이미지&amp;nbsp;빌드가&amp;nbsp;필요한&amp;nbsp;상황이&amp;nbsp;자주&amp;nbsp;발생합니다.&amp;nbsp;일반적인&amp;nbsp;환경에서는&amp;nbsp;Jenkins&amp;nbsp;사용자에게&amp;nbsp;Docker&amp;nbsp;권한을&amp;nbsp;부여하는&amp;nbsp;것으로&amp;nbsp;충분하지만,&amp;nbsp;Jenkins를&amp;nbsp;Docker&amp;nbsp;컨테이너로&amp;nbsp;실행하는&amp;nbsp;경우에는&amp;nbsp;호스트의&amp;nbsp;Docker&amp;nbsp;데몬을&amp;nbsp;사용해야&amp;nbsp;하는&amp;nbsp;특수한&amp;nbsp;설정이&amp;nbsp;필요합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;이 글에서는 Jenkins 컨테이너 내부에서 Docker를 설치하고, Docker 소켓을 공유하여 호스트의 Docker를 사용하는 방법을 다룹니다. 이는 컨테이너 내부에서 별도로 Docker 데몬을 실행하는 방법보다 안전하고 효율적인 방식입니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. Docker와&amp;nbsp;Jenkins의&amp;nbsp;연동&amp;nbsp;개요&lt;/b&gt;&lt;/h2&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;Jenkins와 Docker를 연동하여 CD 파이프라인을 구축하려면 Jenkins가 Docker 명령어를 실행할 수 있어야 합니다. 이를 위한 두 가지 방법이 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Docker&amp;nbsp;소켓&amp;nbsp;공유:&amp;nbsp;호스트의&amp;nbsp;Docker&amp;nbsp;소켓을&amp;nbsp;Jenkins&amp;nbsp;컨테이너와&amp;nbsp;공유하여&amp;nbsp;Jenkins가&amp;nbsp;Docker&amp;nbsp;명령을&amp;nbsp;실행할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;합니다.&amp;nbsp;(권장)&lt;/li&gt;
&lt;li&gt;컨테이너&amp;nbsp;내부에&amp;nbsp;Docker&amp;nbsp;설치:&amp;nbsp;Jenkins&amp;nbsp;컨테이너에&amp;nbsp;별도로&amp;nbsp;Docker를&amp;nbsp;설치하여&amp;nbsp;자체&amp;nbsp;데몬을&amp;nbsp;실행하는&amp;nbsp;방법&amp;nbsp;(비권장)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;이 글에서는 첫 번째 방법을 다루며, Docker 소켓 공유 설정에 대해 설명합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;2.1 Docker 소켓 공유란?&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;컨테이너는&amp;nbsp;기본적으로&amp;nbsp;호스트&amp;nbsp;시스템의&amp;nbsp;Docker&amp;nbsp;데몬에&amp;nbsp;접근할&amp;nbsp;수&amp;nbsp;없습니다.&amp;nbsp;따라서&amp;nbsp;Jenkins가&amp;nbsp;Docker&amp;nbsp;명령을&amp;nbsp;실행하려면&amp;nbsp;호스트의&amp;nbsp;Docker&amp;nbsp;소켓을&amp;nbsp;공유하여&amp;nbsp;Jenkins&amp;nbsp;컨테이너가&amp;nbsp;호스트에서&amp;nbsp;Docker&amp;nbsp;명령어를&amp;nbsp;실행할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;해야&amp;nbsp;합니다.&amp;nbsp;하지만&amp;nbsp;보안적인&amp;nbsp;고려가&amp;nbsp;필요하며,&amp;nbsp;이를&amp;nbsp;잘못&amp;nbsp;설정할&amp;nbsp;경우&amp;nbsp;시스템에&amp;nbsp;위험을&amp;nbsp;초래할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;2.2 Docker 소켓 공유 설정&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Docker 소켓을 Jenkins 컨테이너에 마운트하려면 아래와 같이 설정합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Docker 소켓을 Jenkins 컨테이너에 마운트하여 Jenkins가 호스트의 Docker 데몬에 접근할 수 있게 합니다. 이를 위해 Jenkins 컨테이너를 실행할 때 아래와 같이 &lt;/span&gt;&lt;code&gt;/var/run/docker.sock&lt;/code&gt;&lt;span&gt; 파일을 마운트합니다.&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Docker 명령어 방식&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1728616249782&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker run -d -p 8080:8080 -p 50000:50000 \
  -v /home/junu/docker_data/jenkins:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \ # 소켓 마운트
  --name jenkins jenkins/jenkins:lts&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Docker Compose 방식&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1728616597557&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;version: '3.9'
services:
  jenkins:
    image: jenkins/jenkins:lts
    container_name: jenkins # 컨테이너 이름을 명시적으로 표시하기 위해 추가
    ports:
      - &quot;8080:8080&quot;
      - &quot;50000:50000&quot;
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock # 소켓 마운트
      - /home/junu/docker_data/jenkins:/var/jenkins_home
  networks: {}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.3 Docker 소켓 공유 권한 문제&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;/var/run/docker.sock&lt;/code&gt;의 permission denied 발생했을 경우&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;/var/run/docker.sock&lt;/code&gt;&amp;nbsp;파일의&amp;nbsp;권한을&amp;nbsp;666으로&amp;nbsp;변경하여&amp;nbsp;그룹&amp;nbsp;내&amp;nbsp;다른&amp;nbsp;사용자도&amp;nbsp;접근&amp;nbsp;가능하게&amp;nbsp;변경&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1729435526165&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo chmod 666 /var/run/docker.sock&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-pm-slice=&quot;1 1 []&quot;&gt;또는 chown 으로 docker group 변경&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1729435547706&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;chown root:docker /var/run/docker.sock&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3.&amp;nbsp; Docker Engine 설치: Jenkins 컨테이너 내부에서 Docker 설치하기&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.1 Jenkins 컨테이너 내부에 직접 Docker 설치&lt;/b&gt;&lt;/h3&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Docker 컨테이너 내부에 별도로 Docker를 설치하기전 컨테이너 내 리눅스 환경 확인이 필요합니다. 이글에서 설치한 Jenkins 컨테이너는 Debian 계열의 리눅스로 이미지가 만들어져있습니다. 컨테이너 내에 Debian 패키지 관리자를 사용하여 Docker를 설치해야 합니다. Docker 공식 문서에서 제공하는 &lt;/span&gt;&lt;a href=&quot;https://docs.docker.com/engine/install/debian/&quot;&gt;&lt;span&gt;Install Docker Engine on Debian&lt;/span&gt;&lt;/a&gt;&lt;span&gt; 가이드를 참고 또는 아래 명령어를 입력해 설치를 진행합니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-pm-slice=&quot;1 1 []&quot;&gt;jenkins 컨테이너 내부 root로 접속&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1729436118784&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker exec -it --user root jenkins /bin/bash&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Docker&amp;nbsp;apt저장소를&amp;nbsp;설정합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1729436150511&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Add Docker's official GPG key:
apt-get update
apt-get install ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  &quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release &amp;amp;&amp;amp; echo &quot;$VERSION_CODENAME&quot;) stable&quot; | \
  tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null
apt-get update&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Docker&amp;nbsp;패키지를&amp;nbsp;설치합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1729436161633&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Docker Compose 설치 (선택사항)&lt;/li&gt;
&lt;li&gt;docker-compose 사용 시 설치 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1729468712036&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Docker Compose 설치
curl -L &quot;https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d '&quot;' -f 4)/docker-compose-$(uname -s)-$(uname -m)&quot; -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이미지를 실행하여 설치가 성공적으로 완료되었는지 확인하세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1729467561551&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker run hello-world&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&lt;b&gt;3.2 Dockerfile를 활용하여 Jenkins 컨테이너 내 Docker 설치하기&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Dockerfile을 이용한 Docker 명령어로 Jenkins 컨테이너 내 Docker 설치&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Dockerfile 작성 및 저장&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1729437218045&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Jenkins LTS 이미지를 베이스로 사용
FROM jenkins/jenkins:lts

USER root

# 필요한 패키지 설치 및 Docker 저장소 추가
RUN apt-get update &amp;amp;&amp;amp; \
    apt-get -y install apt-transport-https ca-certificates curl gnupg2 &amp;amp;&amp;amp; \
    curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg &amp;amp;&amp;amp; \
    echo &quot;deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(grep VERSION_CODENAME /etc/os-release | cut -d'=' -f2) stable&quot; &amp;gt; /etc/apt/sources.list.d/docker.list &amp;amp;&amp;amp; \
    apt-get update &amp;amp;&amp;amp; \
    apt-get -y install docker-ce-cli
    
# Docker Compose 설치
RUN curl -L &quot;https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-$(uname -s)-$(uname -m)&quot; -o /usr/local/bin/docker-compose &amp;amp;&amp;amp; \
    chmod +x /usr/local/bin/docker-compose
    
USER jenkins&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이미지&amp;nbsp;빌드&amp;nbsp;및&amp;nbsp;실행&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1729437702606&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker build -t jenkins-with-docker .
docker run -d -p 8080:8080 -p 50000:50000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /home/junu/docker_data/jenkins:/var/jenkins_home \
  --name jenkins jenkins-with-docker&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Dockerfile을 사용해 Docker CLI가 미리 설치된 Jenkins 이미지를 빌드한 후, 이를 Docker 명령어로 실행하여 Jenkins와 Docker를 함께 사용하는 환경을 구축합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Dockerfile을&amp;nbsp;이용한&amp;nbsp;Docker&amp;nbsp;Compose로&amp;nbsp;Jenkins&amp;nbsp;컨테이너&amp;nbsp;내&amp;nbsp;Docker&amp;nbsp;설치&lt;/b&gt;&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Dockerfile과 Docker Compose를 함께 사용해 Docker CLI가 설치된 Jenkins 이미지를 빌드하고 관리하는 방법입니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Dockerfile 작성 및 저장&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1729444865839&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Jenkins LTS 이미지를 베이스로 사용
FROM jenkins/jenkins:lts

USER root

# 필요한 패키지 설치 및 Docker 저장소 추가
RUN apt-get update &amp;amp;&amp;amp; \
    apt-get -y install apt-transport-https ca-certificates curl gnupg2 &amp;amp;&amp;amp; \
    curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg &amp;amp;&amp;amp; \
    echo &quot;deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(grep VERSION_CODENAME /etc/os-release | cut -d'=' -f2) stable&quot; &amp;gt; /etc/apt/sources.list.d/docker.list &amp;amp;&amp;amp; \
    apt-get update &amp;amp;&amp;amp; \
    apt-get -y install docker-ce-cli
    
# Docker Compose 설치
RUN curl -L &quot;https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-$(uname -s)-$(uname -m)&quot; -o /usr/local/bin/docker-compose &amp;amp;&amp;amp; \
    chmod +x /usr/local/bin/docker-compose
    
USER jenkins&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;docker-compose.yml 작성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1729442589864&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;version: '3.9'

services:
  jenkins:
    build: .
    container_name: jenkins
    ports:
      - &quot;8080:8080&quot;
      - &quot;50000:50000&quot;
    volumes:
      - /home/junu/docker_data/jenkins:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
networks: {}&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-pm-slice=&quot;1 1 []&quot;&gt;&lt;span&gt;이미지 빌드 및 Compose 실행&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1729442935267&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker-compose up --build -d&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Dockerfile을 사용하여 Docker가 설치된 Jenkins 이미지를 빌드하고 Docker Compose를 통해 Jenkins와 Docker를 함께 사용하는 환경을 구축하는 방법을 설명합니다. 이를 통해 Jenkins 컨테이너 내에서 Docker 명령어를 실행할 수 있게 설정합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. Jenkins와 GitHub 연동 및 JAR 파일 Docker 컨테이너에 배포&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;4.1 Dockerfile 사용하여 배포하는 방식&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Dockerfile을 소스에 미리 생성해 놓고 Jenkins 파이프라인에서 이를 활용하여 Docker 이미지를 빌드하고 배포하는 방식입니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-pm-slice=&quot;1 1 []&quot;&gt;Dockerfile (프로젝트 루트에 생성된 파일)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1729443463781&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;FROM openjdk:17-jdk-slim

WORKDIR /app
COPY build/libs/movie-search-app.jar app.jar

ENTRYPOINT [&quot;java&quot;, &quot;-jar&quot;, &quot;app.jar&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-10-21 015817.png&quot; data-origin-width=&quot;323&quot; data-origin-height=&quot;619&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crX1kV/btsKbMRHKxB/oqsAVoIihsFKmpyLKbpzBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crX1kV/btsKbMRHKxB/oqsAVoIihsFKmpyLKbpzBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crX1kV/btsKbMRHKxB/oqsAVoIihsFKmpyLKbpzBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrX1kV%2FbtsKbMRHKxB%2FoqsAVoIihsFKmpyLKbpzBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;323&quot; height=&quot;619&quot; data-filename=&quot;화면 캡처 2024-10-21 015817.png&quot; data-origin-width=&quot;323&quot; data-origin-height=&quot;619&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파이프라인 스크립트(Jenkinsfile) 작성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1728617781525&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pipeline {
    agent any

    stages {
        stage('Clone Repository') {
            steps {
                // 소스 코드 클론
                git url: 'https://github.com/ssongjunu/movie-search-app.git', branch: 'main'
            }
        }

        stage('Build') {
            steps {
                // Gradle 빌드를 위한 실행 권한 부여 및 빌드
                sh 'chmod +x ./gradlew'
                sh './gradlew clean build'
            }
        }
        
        stage('Test') {
            steps {
                // Gradle 테스트 실행
                sh './gradlew test'
            }
        }

        stage('Deploy Docker Container') {
            steps {
                script {
                    def imageName = &quot;movie-search-app-image&quot;
                    def containerName = &quot;movie-search-app-container&quot;

                    // 기존 Docker 컨테이너 삭제
                    sh &quot;docker rm -f ${containerName} || true&quot;

                    // 기존 Docker 이미지 삭제 후 다시 빌드
                    sh &quot;docker rmi ${imageName} || true&quot;

                    // Docker 이미지 빌드 (Dockerfile 사용)
                    sh &quot;docker build -t ${imageName} .&quot;

                    // 새로운 Docker 컨테이너 실행
                    sh &quot;docker run -d --name ${containerName} -p 8080:8080 ${imageName}&quot;
                }
            }
        }
    }

    post {
        success {
            echo 'Build, tests, and deployment were successful!'
        }
        failure {
            echo 'Build, tests, or deployment failed.'
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&lt;b&gt;&lt;span&gt;4.2&lt;span&gt; Docker&amp;nbsp;Compose를&amp;nbsp;사용한&amp;nbsp;배포&amp;nbsp;방식&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Docker Compose.yml 파일 (프로젝트 루트에 생성된 파일)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1729448811491&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;version: '3.9'

services:
  movie-search-app:
    image: openjdk:17-jdk-slim
    container_name: movie-search-app
    ports:
      - &quot;8081:8080&quot;
    volumes:
      - /home/junu/docker_data/jenkins/workspace/movie-search-app/build/libs/movie-search-app.jar:/app/app.jar # 절대경로
    working_dir: /app
    command: [&quot;java&quot;, &quot;-jar&quot;, &quot;app.jar&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-10-21 033048.png&quot; data-origin-width=&quot;362&quot; data-origin-height=&quot;626&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2ZwvD/btsKdFJ8qGt/Y2cSg8bKia7GuzzarrFRzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2ZwvD/btsKdFJ8qGt/Y2cSg8bKia7GuzzarrFRzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2ZwvD/btsKdFJ8qGt/Y2cSg8bKia7GuzzarrFRzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2ZwvD%2FbtsKdFJ8qGt%2FY2cSg8bKia7GuzzarrFRzk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;362&quot; height=&quot;626&quot; data-filename=&quot;화면 캡처 2024-10-21 033048.png&quot; data-origin-width=&quot;362&quot; data-origin-height=&quot;626&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파이프라인&amp;nbsp;스크립트(Jenkinsfile)&amp;nbsp;작성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1729449000523&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pipeline {
    agent any

    stages {
        stage('Clone Repository') {
            steps {
                // 소스 코드 클론
                git url: 'https://github.com/ssongjunu/movie-search-app.git', branch: 'main'
            }
        }

        stage('Build') {
            steps {
                // Gradle 빌드를 위한 실행 권한 부여 및 빌드
                sh 'chmod +x ./gradlew'
                sh './gradlew clean build'
            }
        }

        stage('Test') {
            steps {
                // Gradle 테스트 실행
                sh './gradlew test'
            }
        }

        stage('Deploy Docker Compose') {
            steps {
                script {
                    // Docker Compose를 사용해 컨테이너 배포
                    sh 'docker-compose down || true' // 기존 컨테이너 종료
                    sh 'docker-compose up --build -d' // 새로운 컨테이너 빌드 및 실행
                }
            }
        }
    }

    post {
        success {
            echo 'Build, tests, and deployment were successful!'
        }
        failure {
            echo 'Build, tests, or deployment failed.'
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 배포 확인&lt;/b&gt;&lt;/h2&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;배포가 성공적으로 완료되면, Jenkins 콘솔 출력을 통해 확인할 수 있으며 애플리케이션은 지정된 포트에서 정상적으로 동작해야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;715&quot; data-origin-height=&quot;626&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLigrw/btsKdOfXIYH/EDKpavGWoRYUwP08SgLq1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLigrw/btsKdOfXIYH/EDKpavGWoRYUwP08SgLq1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLigrw/btsKdOfXIYH/EDKpavGWoRYUwP08SgLq1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLigrw%2FbtsKdOfXIYH%2FEDKpavGWoRYUwP08SgLq1K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;715&quot; height=&quot;626&quot; data-origin-width=&quot;715&quot; data-origin-height=&quot;626&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2135&quot; data-origin-height=&quot;92&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBcniZ/btsKb27OIsC/FmfDLtIRY6cM9C1cbei3m0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBcniZ/btsKb27OIsC/FmfDLtIRY6cM9C1cbei3m0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBcniZ/btsKb27OIsC/FmfDLtIRY6cM9C1cbei3m0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBcniZ%2FbtsKb27OIsC%2FFmfDLtIRY6cM9C1cbei3m0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2135&quot; height=&quot;92&quot; data-origin-width=&quot;2135&quot; data-origin-height=&quot;92&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1436&quot; data-origin-height=&quot;225&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dW9qjL/btsKdFQWrBl/2nqtIJ9LSquyHXtsg41ZM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dW9qjL/btsKdFQWrBl/2nqtIJ9LSquyHXtsg41ZM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dW9qjL/btsKdFQWrBl/2nqtIJ9LSquyHXtsg41ZM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdW9qjL%2FbtsKdFQWrBl%2F2nqtIJ9LSquyHXtsg41ZM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1436&quot; height=&quot;225&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1436&quot; data-origin-height=&quot;225&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 마치며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이&amp;nbsp;글에서는&amp;nbsp;Jenkins와&amp;nbsp;GitHub을&amp;nbsp;연동하여&amp;nbsp;지속적&amp;nbsp;배포(CD)를&amp;nbsp;설정하고,&amp;nbsp;빌드된&amp;nbsp;애플리케이션을&amp;nbsp;Docker&amp;nbsp;컨테이너에&amp;nbsp;배포하는&amp;nbsp;방법을&amp;nbsp;다뤘습니다.&amp;nbsp;Docker&amp;nbsp;소켓을&amp;nbsp;공유하여&amp;nbsp;Jenkins가&amp;nbsp;Docker&amp;nbsp;명령어를&amp;nbsp;실행할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;설정하는&amp;nbsp;과정과,&amp;nbsp;Docker&amp;nbsp;Compose를&amp;nbsp;이용한&amp;nbsp;배포&amp;nbsp;방법을&amp;nbsp;설명했습니다.&amp;nbsp;Docker&amp;nbsp;Compose&amp;nbsp;파일은&amp;nbsp;프로젝트의&amp;nbsp;루트&amp;nbsp;디렉토리에&amp;nbsp;생성하고&amp;nbsp;GitHub&amp;nbsp;저장소에&amp;nbsp;포함시켜&amp;nbsp;팀원들과&amp;nbsp;공유하는&amp;nbsp;것이&amp;nbsp;좋습니다.&amp;nbsp;이를&amp;nbsp;통해&amp;nbsp;CI/CD&amp;nbsp;파이프라인을&amp;nbsp;더&amp;nbsp;효율적으로&amp;nbsp;관리할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>데브옵스/CICD</category>
      <category>CD</category>
      <category>cicd</category>
      <category>devops</category>
      <category>docker</category>
      <category>dockercompose</category>
      <category>GitHub</category>
      <category>jenkins</category>
      <category>Pipeline</category>
      <category>지속적배포</category>
      <category>파이프라인</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/38</guid>
      <comments>https://bigdwarf.tistory.com/38#entry38comment</comments>
      <pubDate>Mon, 21 Oct 2024 03:37:32 +0900</pubDate>
    </item>
    <item>
      <title>[Docker] Jenkins와 GitHub 연동하기: 지속적 통합(Continuous Integration, CI)</title>
      <link>https://bigdwarf.tistory.com/37</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;650&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ws3Ah/btsJVOaj9ed/YrAzZA1ybc1y89y1UCKuGk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ws3Ah/btsJVOaj9ed/YrAzZA1ybc1y89y1UCKuGk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ws3Ah/btsJVOaj9ed/YrAzZA1ybc1y89y1UCKuGk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWs3Ah%2FbtsJVOaj9ed%2FYrAzZA1ybc1y89y1UCKuGk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;866&quot; height=&quot;650&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;650&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://bigdwarf.blog/36&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.10.04 - [데브옵스/CICD] - Docker로 Jenkins 설치하기: 단계별 가이드&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figure id=&quot;og_1728615140276&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Docker로 Jenkins 설치하기: 단계별 가이드&quot; data-og-description=&quot;2024.09.30 - [데브옵스/Docker] - Ubuntu에 Docker 설치&amp;nbsp;Ubuntu에 Docker 설치1. 들어가며1.1 Docker 란?Docker는&amp;nbsp;애플리케이션을&amp;nbsp;개발,&amp;nbsp;배포,&amp;nbsp;실행하기&amp;nbsp;위한&amp;nbsp;오픈소스&amp;nbsp;플랫폼입니다.&amp;nbsp;컨테이너라는&amp;nbsp;격리된&amp;nbsp;&quot; data-og-host=&quot;bigdwarf.blog&quot; data-og-source-url=&quot;https://bigdwarf.blog/36&quot; data-og-url=&quot;https://bigdwarf.blog/36&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/qjQz0/hyXhLJ6D2a/US8NbSQcsTWdpBvQJlxzqK/img.jpg?width=800&amp;amp;height=600&amp;amp;face=378_92_524_250,https://scrap.kakaocdn.net/dn/bwTG9z/hyXhTuBvtF/F6ZGDpgqBThbPoc2Nut1B1/img.jpg?width=800&amp;amp;height=600&amp;amp;face=378_92_524_250,https://scrap.kakaocdn.net/dn/enGAAW/hyXhS3xyLW/qwrzOsvN8l3Cd8D9dyyrCK/img.png?width=3839&amp;amp;height=2075&amp;amp;face=0_0_3839_2075&quot;&gt;&lt;a href=&quot;https://bigdwarf.blog/36&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://bigdwarf.blog/36&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/qjQz0/hyXhLJ6D2a/US8NbSQcsTWdpBvQJlxzqK/img.jpg?width=800&amp;amp;height=600&amp;amp;face=378_92_524_250,https://scrap.kakaocdn.net/dn/bwTG9z/hyXhTuBvtF/F6ZGDpgqBThbPoc2Nut1B1/img.jpg?width=800&amp;amp;height=600&amp;amp;face=378_92_524_250,https://scrap.kakaocdn.net/dn/enGAAW/hyXhS3xyLW/qwrzOsvN8l3Cd8D9dyyrCK/img.png?width=3839&amp;amp;height=2075&amp;amp;face=0_0_3839_2075');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Docker로 Jenkins 설치하기: 단계별 가이드&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;2024.09.30 - [데브옵스/Docker] - Ubuntu에 Docker 설치&amp;nbsp;Ubuntu에 Docker 설치1. 들어가며1.1 Docker 란?Docker는&amp;nbsp;애플리케이션을&amp;nbsp;개발,&amp;nbsp;배포,&amp;nbsp;실행하기&amp;nbsp;위한&amp;nbsp;오픈소스&amp;nbsp;플랫폼입니다.&amp;nbsp;컨테이너라는&amp;nbsp;격리된&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;bigdwarf.blog&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지속적 통합(Continuous Integration, CI)은 현대 소프트웨어 개발에서 필수적인 프로세스입니다. CI를 통해 개발자들은 코드 변경사항을 주기적으로 통합하고 자동화된 빌드와 테스트를 수행하여 소프트웨어의 품질을 지속적으로 유지할 수 있습니다. 이번 글에서는 Jenkins와 GitHub을 연동하여 빌드까지 하는 방법을 설명합니다. 이를 통해 코드 변경 시 자동으로 빌드 및 테스트를 수행 할 수있어 개발 프로세스의 효율성을 크게 높일 수 있습니다.&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. Jenkins와 GitHub 연동 하기&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.1 GitHub 자격 증명 추가 GitHub&amp;nbsp;Repository에서&amp;nbsp;Token&amp;nbsp;발급&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Github &amp;rarr;&amp;nbsp; 우측 상단 유저 아이콘 &amp;rarr;&amp;nbsp; Settings &amp;rarr; Developer settings &amp;rarr; Personal access tokens &amp;rarr; Tokens (classic)&lt;/li&gt;
&lt;li&gt;아래 화면과 같은 페이지에서 Generate new token (Classic) 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3827&quot; data-origin-height=&quot;1837&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IEikp/btsJVFLumNf/PNFWLB7vxNuOTtOVOVppSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IEikp/btsJVFLumNf/PNFWLB7vxNuOTtOVOVppSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IEikp/btsJVFLumNf/PNFWLB7vxNuOTtOVOVppSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIEikp%2FbtsJVFLumNf%2FPNFWLB7vxNuOTtOVOVppSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3827&quot; height=&quot;1837&quot; data-origin-width=&quot;3827&quot; data-origin-height=&quot;1837&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;토큰 이름을 설정 후 repo, admin_hook 체크 후 Generate token 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1405&quot; data-origin-height=&quot;1823&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bG02Fc/btsJVTJhgp5/KwBlf1TtthWWuKlN0moGm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bG02Fc/btsJVTJhgp5/KwBlf1TtthWWuKlN0moGm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bG02Fc/btsJVTJhgp5/KwBlf1TtthWWuKlN0moGm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbG02Fc%2FbtsJVTJhgp5%2FKwBlf1TtthWWuKlN0moGm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1405&quot; height=&quot;1823&quot; data-origin-width=&quot;1405&quot; data-origin-height=&quot;1823&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아래 화면과 같이 토큰을 확인 하실 수 있습니다.&lt;/li&gt;
&lt;li&gt;발급 받은 token은 다시 볼 수 없기에 따로 보관 해두시길 바랍니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1424&quot; data-origin-height=&quot;404&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dK8ikX/btsJV9Zli8l/sQmOdHDQKhtZE1US9K0leK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dK8ikX/btsJV9Zli8l/sQmOdHDQKhtZE1US9K0leK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dK8ikX/btsJV9Zli8l/sQmOdHDQKhtZE1US9K0leK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdK8ikX%2FbtsJV9Zli8l%2FsQmOdHDQKhtZE1US9K0leK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1424&quot; height=&quot;404&quot; data-origin-width=&quot;1424&quot; data-origin-height=&quot;404&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.2 Jenkins Plugin 설치&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Dashboard &amp;rarr;&amp;nbsp; Jenkins 관리 &amp;rarr; Plugins &amp;rarr; Available plugins&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3834&quot; data-origin-height=&quot;1849&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dALiwT/btsJVsyGDev/jtjbq1unH32hAhtZNlTeK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dALiwT/btsJVsyGDev/jtjbq1unH32hAhtZNlTeK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dALiwT/btsJVsyGDev/jtjbq1unH32hAhtZNlTeK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdALiwT%2FbtsJVsyGDev%2Fjtjbq1unH32hAhtZNlTeK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3834&quot; height=&quot;1849&quot; data-origin-width=&quot;3834&quot; data-origin-height=&quot;1849&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;GitHub Integration Plugin 설치&lt;/li&gt;
&lt;li&gt;Generic Webhook Trigger Plugin&amp;nbsp;설치&lt;/li&gt;
&lt;li&gt;GitHub API Plugin 설치&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3188&quot; data-origin-height=&quot;409&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbgqjI/btsJWvVeqwq/lCZiyKk9aCNx58noGw9ao1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbgqjI/btsJWvVeqwq/lCZiyKk9aCNx58noGw9ao1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbgqjI/btsJWvVeqwq/lCZiyKk9aCNx58noGw9ao1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbgqjI%2FbtsJWvVeqwq%2FlCZiyKk9aCNx58noGw9ao1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3188&quot; height=&quot;409&quot; data-origin-width=&quot;3188&quot; data-origin-height=&quot;409&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3195&quot; data-origin-height=&quot;423&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVMvfz/btsJV8GberP/rrzzElUhn7ZPjMKCaFdypk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVMvfz/btsJV8GberP/rrzzElUhn7ZPjMKCaFdypk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVMvfz/btsJV8GberP/rrzzElUhn7ZPjMKCaFdypk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVMvfz%2FbtsJV8GberP%2FrrzzElUhn7ZPjMKCaFdypk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3195&quot; height=&quot;423&quot; data-origin-width=&quot;3195&quot; data-origin-height=&quot;423&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이 글에 선 GitHub API Plugin 미리 설치가 되어있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3820&quot; data-origin-height=&quot;652&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ICqjk/btsJWAhRVGi/2tWlUV9pqQ8fKZlYsgeKH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ICqjk/btsJWAhRVGi/2tWlUV9pqQ8fKZlYsgeKH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ICqjk/btsJWAhRVGi/2tWlUV9pqQ8fKZlYsgeKH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FICqjk%2FbtsJWAhRVGi%2F2tWlUV9pqQ8fKZlYsgeKH1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3820&quot; height=&quot;652&quot; data-origin-width=&quot;3820&quot; data-origin-height=&quot;652&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치가 진행되고 완료되면 Jenkins를 재시작 바랍니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1515&quot; data-origin-height=&quot;724&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zrVhS/btsJUOh5Lyh/8DD9lzXFepWe3kcda5Riy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zrVhS/btsJUOh5Lyh/8DD9lzXFepWe3kcda5Riy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zrVhS/btsJUOh5Lyh/8DD9lzXFepWe3kcda5Riy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzrVhS%2FbtsJUOh5Lyh%2F8DD9lzXFepWe3kcda5Riy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1515&quot; height=&quot;724&quot; data-origin-width=&quot;1515&quot; data-origin-height=&quot;724&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.3 Jenkins&amp;nbsp;Credentials&amp;nbsp;생성&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Dashboard &amp;rarr;&amp;nbsp; Jenkins 관리 &amp;rarr; Credentials&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3776&quot; data-origin-height=&quot;1478&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2jOqC/btsJWzJ2PCU/emduLyMaa0dCh9FttXf1n1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2jOqC/btsJWzJ2PCU/emduLyMaa0dCh9FttXf1n1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2jOqC/btsJWzJ2PCU/emduLyMaa0dCh9FttXf1n1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2jOqC%2FbtsJWzJ2PCU%2FemduLyMaa0dCh9FttXf1n1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3776&quot; height=&quot;1478&quot; data-origin-width=&quot;3776&quot; data-origin-height=&quot;1478&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Stores scoped to Jenkins &amp;rarr; Store (System) &amp;rarr; (global) 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3823&quot; data-origin-height=&quot;868&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bB7rZt/btsJWzQN8Mb/cGFbILgcqk1dCDZAAfQCEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bB7rZt/btsJWzQN8Mb/cGFbILgcqk1dCDZAAfQCEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bB7rZt/btsJWzQN8Mb/cGFbILgcqk1dCDZAAfQCEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbB7rZt%2FbtsJWzQN8Mb%2FcGFbILgcqk1dCDZAAfQCEk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3823&quot; height=&quot;868&quot; data-origin-width=&quot;3823&quot; data-origin-height=&quot;868&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Add Credentials 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3832&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bw3n1R/btsJWn38vBQ/L4jf5vZgiZsaYFnXG6Gjpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bw3n1R/btsJWn38vBQ/L4jf5vZgiZsaYFnXG6Gjpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bw3n1R/btsJWn38vBQ/L4jf5vZgiZsaYFnXG6Gjpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbw3n1R%2FbtsJWn38vBQ%2FL4jf5vZgiZsaYFnXG6Gjpk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3832&quot; height=&quot;700&quot; data-origin-width=&quot;3832&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Username&lt;/b&gt; : GitHub 아이디&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Password&lt;/b&gt; : 발급 받은 GitHub token&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ID&lt;/b&gt; : Credentials&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Description&lt;/b&gt; : 설명 (옵션)&lt;/li&gt;
&lt;li&gt;위내용을 작성 후 Create 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3825&quot; data-origin-height=&quot;1538&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHKPiI/btsJWtb1oPG/j0d4sKyO50XEfxfJDQy0Y0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHKPiI/btsJWtb1oPG/j0d4sKyO50XEfxfJDQy0Y0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHKPiI/btsJWtb1oPG/j0d4sKyO50XEfxfJDQy0Y0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHKPiI%2FbtsJWtb1oPG%2Fj0d4sKyO50XEfxfJDQy0Y0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3825&quot; height=&quot;1538&quot; data-origin-width=&quot;3825&quot; data-origin-height=&quot;1538&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.4 Jenkins Pipeline 설정&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Pipeline 생성 후 Pipeline 명 &amp;rarr; 구성(Configuration)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3823&quot; data-origin-height=&quot;1678&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oma48/btsJU0P70fA/GIrGn8h0M9v54LiFEo578k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oma48/btsJU0P70fA/GIrGn8h0M9v54LiFEo578k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oma48/btsJU0P70fA/GIrGn8h0M9v54LiFEo578k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Foma48%2FbtsJU0P70fA%2FGIrGn8h0M9v54LiFEo578k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3823&quot; height=&quot;1678&quot; data-origin-width=&quot;3823&quot; data-origin-height=&quot;1678&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;1095&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sqa0e/btsJVNP5PpG/bX2UwE2Zq2yuXDMzv2JmY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sqa0e/btsJVNP5PpG/bX2UwE2Zq2yuXDMzv2JmY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sqa0e/btsJVNP5PpG/bX2UwE2Zq2yuXDMzv2JmY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsqa0e%2FbtsJVNP5PpG%2FbX2UwE2Zq2yuXDMzv2JmY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;616&quot; height=&quot;1095&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;1095&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;General &amp;rarr; GitHub project &amp;rarr; Project url 작성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2570&quot; data-origin-height=&quot;1478&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baRtjM/btsJUWmJVU4/EZVtF04nNxhot9Q8aka971/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baRtjM/btsJUWmJVU4/EZVtF04nNxhot9Q8aka971/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baRtjM/btsJUWmJVU4/EZVtF04nNxhot9Q8aka971/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaRtjM%2FbtsJUWmJVU4%2FEZVtF04nNxhot9Q8aka971%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2570&quot; height=&quot;1478&quot; data-origin-width=&quot;2570&quot; data-origin-height=&quot;1478&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Build Triggers &amp;rarr; GitHub hook trigger for GITScm polling 체크&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2504&quot; data-origin-height=&quot;717&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYyopK/btsJUNcmF3a/o0bknBxA6aJSKMKTvXDml0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYyopK/btsJUNcmF3a/o0bknBxA6aJSKMKTvXDml0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYyopK/btsJUNcmF3a/o0bknBxA6aJSKMKTvXDml0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYyopK%2FbtsJUNcmF3a%2Fo0bknBxA6aJSKMKTvXDml0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2504&quot; height=&quot;717&quot; data-origin-width=&quot;2504&quot; data-origin-height=&quot;717&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Repository URL&lt;/b&gt; : 자동 배포하려는 GitHub Repository URL&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Credentials&lt;/b&gt; : Github의 Webhook을 통해 빌드하기 위해 생성한 Credentials 선택&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Branch Specifier&lt;/b&gt; : 가져오려는 프로젝트에 Branch&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Script Path&lt;/b&gt; : 프로젝트 루트 기준 Jenkinsfile의 위치&lt;/li&gt;
&lt;li&gt;위 내용을 작성 한 뒤 저장 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2574&quot; data-origin-height=&quot;1660&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/04ROE/btsJWxFr45I/LU2BrPKQKx6koxMqxFLya1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/04ROE/btsJWxFr45I/LU2BrPKQKx6koxMqxFLya1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/04ROE/btsJWxFr45I/LU2BrPKQKx6koxMqxFLya1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F04ROE%2FbtsJWxFr45I%2FLU2BrPKQKx6koxMqxFLya1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2574&quot; height=&quot;1660&quot; data-origin-width=&quot;2574&quot; data-origin-height=&quot;1660&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2539&quot; data-origin-height=&quot;929&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPB0CK/btsJUEzO2qc/KmcgNNAfxEIpoWYx9eIMvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPB0CK/btsJUEzO2qc/KmcgNNAfxEIpoWYx9eIMvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPB0CK/btsJUEzO2qc/KmcgNNAfxEIpoWYx9eIMvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPB0CK%2FbtsJUEzO2qc%2FKmcgNNAfxEIpoWYx9eIMvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2539&quot; height=&quot;929&quot; data-origin-width=&quot;2539&quot; data-origin-height=&quot;929&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.5 파이프라인 스크립트(Jenkinsfile) 작성&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로젝트 내 루트에 Jenkinsfile 생성 후 아래 내용 저장 (원하는 위치 지정 가능합니다.)&lt;/li&gt;
&lt;li&gt;이 글에서는 Spring Boot Gradle 프로젝트로 진행했습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;pipeline {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;agent any

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stages {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stage('Clone Repository') {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;steps {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;git url: 'https://github.com/ssongjunu/movie-search-app.git', branch: 'main'
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stage('Build') {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;steps {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// gradlew 파일에 실행 권한 부여 후 빌드
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sh 'chmod +x ./gradlew'
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sh './gradlew clean build'
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stage('Test') {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;steps {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Gradle 테스트 실행
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sh './gradlew test'
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;post {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;success {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo 'Build and tests were successful!'
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;failure {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo 'Build or tests failed.'
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.6 GitHub Repository Webhooks 설정&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;GitHub Repository &amp;rarr; Settings &amp;rarr; Webhooks &amp;rarr; Add webhook&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Payload&amp;nbsp;URL&lt;/b&gt; : http://JenkinsURL/github-webhook/&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Content&amp;nbsp;type&lt;/b&gt;&amp;nbsp;:&amp;nbsp;application/json&lt;/li&gt;
&lt;li&gt;위내용 입력 후 Add webhook 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3801&quot; data-origin-height=&quot;1837&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/v6fxW/btsJVNvLguz/E2iKUQuFIW1EvjTzxYak50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/v6fxW/btsJVNvLguz/E2iKUQuFIW1EvjTzxYak50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/v6fxW/btsJVNvLguz/E2iKUQuFIW1EvjTzxYak50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv6fxW%2FbtsJVNvLguz%2FE2iKUQuFIW1EvjTzxYak50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3801&quot; height=&quot;1837&quot; data-origin-width=&quot;3801&quot; data-origin-height=&quot;1837&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.7 빌드 테스트 진행&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;지금 빌드 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1818&quot; data-origin-height=&quot;1454&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/H9w5i/btsJWuWlCpw/Cu0ZPZPMGUz3j9Mcp6dkU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/H9w5i/btsJWuWlCpw/Cu0ZPZPMGUz3j9Mcp6dkU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/H9w5i/btsJWuWlCpw/Cu0ZPZPMGUz3j9Mcp6dkU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FH9w5i%2FbtsJWuWlCpw%2FCu0ZPZPMGUz3j9Mcp6dkU1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1818&quot; height=&quot;1454&quot; data-origin-width=&quot;1818&quot; data-origin-height=&quot;1454&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Build 콘솔 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3071&quot; data-origin-height=&quot;1268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oj85i/btsJUUPVLKO/OgNQ2gnnaGRKOO4DCM0Uh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oj85i/btsJUUPVLKO/OgNQ2gnnaGRKOO4DCM0Uh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oj85i/btsJUUPVLKO/OgNQ2gnnaGRKOO4DCM0Uh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Foj85i%2FbtsJUUPVLKO%2FOgNQ2gnnaGRKOO4DCM0Uh1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3071&quot; height=&quot;1268&quot; data-origin-width=&quot;3071&quot; data-origin-height=&quot;1268&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 마치며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Jenkins와 GitHub의 연동은 처음에는 복잡해 보일 수 있지만 일단 설정이 완료되면 개발 워크플로우를 크게 개선할 수 있습니다. 또한 Docker를 활용한 Jenkins 구축은 설치와 관리의 편의성을 높여줍니다. 앞으로 CI를 어 CD(Continuous Delivery 또는 Deployment)까지 확장하여 전체 개발 파이프라인을 자동화하는 것을 고려해볼 수 있습니다. 이는 소프트웨어 제공 속도를 더욱 높이고 운영 효율성을 개선하는 데 도움이 될 것입니다. CI/CD 도구와 방법론은 계속해서 발전하고 있으므로 최신 트렌드와 베스트 프랙티스를 지속적으로 학습하고 적용하는 것이 중요합니다. Jenkins와 GitHub을 시작으로 여러분의 개발 프로세스를 지속적으로 개선해 나가시기 바랍니다.&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>데브옵스/CICD</category>
      <category>CD</category>
      <category>CI</category>
      <category>CI/CD</category>
      <category>devops</category>
      <category>GitHub</category>
      <category>jenkins</category>
      <category>깃허브</category>
      <category>자동화</category>
      <category>젠킨스</category>
      <category>지속적인통합</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/37</guid>
      <comments>https://bigdwarf.tistory.com/37#entry37comment</comments>
      <pubDate>Sat, 5 Oct 2024 01:21:05 +0900</pubDate>
    </item>
    <item>
      <title>Docker로 Jenkins 설치하기: 단계별 가이드</title>
      <link>https://bigdwarf.tistory.com/36</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;jenkins8460.jpg&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;650&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZZUv1/btsJS7PngZ6/eLYH0XQORGpvkbsJiQ6qsk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZZUv1/btsJS7PngZ6/eLYH0XQORGpvkbsJiQ6qsk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZZUv1/btsJS7PngZ6/eLYH0XQORGpvkbsJiQ6qsk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZZUv1%2FbtsJS7PngZ6%2FeLYH0XQORGpvkbsJiQ6qsk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;866&quot; height=&quot;650&quot; data-filename=&quot;jenkins8460.jpg&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;650&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;a href=&quot;https://bigdwarf.blog/34&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.09.30 - [데브옵스/Docker] - Ubuntu에 Docker 설치&lt;/a&gt;&lt;/blockquote&gt;
&lt;figure id=&quot;og_1728614882600&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Ubuntu에 Docker 설치&quot; data-og-description=&quot;1. 들어가며1.1 Docker 란?Docker는&amp;nbsp;애플리케이션을&amp;nbsp;개발,&amp;nbsp;배포,&amp;nbsp;실행하기&amp;nbsp;위한&amp;nbsp;오픈소스&amp;nbsp;플랫폼입니다.&amp;nbsp;컨테이너라는&amp;nbsp;격리된&amp;nbsp;환경에서&amp;nbsp;애플리케이션을&amp;nbsp;패키징하고&amp;nbsp;실행할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;해 줍&quot; data-og-host=&quot;bigdwarf.blog&quot; data-og-source-url=&quot;https://bigdwarf.blog/34&quot; data-og-url=&quot;https://bigdwarf.blog/34&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/biPxDS/hyXeaENwei/12cKjPdUI6cKkTrRy76DUK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bo69AX/hyXebwVV7L/Arcym4kHZzblfo3hVrcVu1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bXAafl/hyXebRdjnf/WKIfqNFC7xMSWy8kShME81/img.png?width=1080&amp;amp;height=1080&amp;amp;face=0_0_1080_1080&quot;&gt;&lt;a href=&quot;https://bigdwarf.blog/34&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://bigdwarf.blog/34&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/biPxDS/hyXeaENwei/12cKjPdUI6cKkTrRy76DUK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bo69AX/hyXebwVV7L/Arcym4kHZzblfo3hVrcVu1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bXAafl/hyXebRdjnf/WKIfqNFC7xMSWy8kShME81/img.png?width=1080&amp;amp;height=1080&amp;amp;face=0_0_1080_1080');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Ubuntu에 Docker 설치&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. 들어가며1.1 Docker 란?Docker는&amp;nbsp;애플리케이션을&amp;nbsp;개발,&amp;nbsp;배포,&amp;nbsp;실행하기&amp;nbsp;위한&amp;nbsp;오픈소스&amp;nbsp;플랫폼입니다.&amp;nbsp;컨테이너라는&amp;nbsp;격리된&amp;nbsp;환경에서&amp;nbsp;애플리케이션을&amp;nbsp;패키징하고&amp;nbsp;실행할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;해 줍&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;bigdwarf.blog&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.1 Jenkins와&amp;nbsp;Docker의&amp;nbsp;개요&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt; Jenkins&lt;/b&gt; : 소프트웨어 개발에서 지속적 통합 및 지속적 배포(CI/CD)를 자동화하는 강력한 오픈소스 도구&lt;/li&gt;
&lt;li&gt;&lt;b&gt; Docker&lt;/b&gt; :&amp;nbsp; 애플리케이션을&amp;nbsp;컨테이너 화하여&amp;nbsp;일관된&amp;nbsp;환경에서&amp;nbsp;실행할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;해주는&amp;nbsp;플랫폼&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서는 Ubuntu 24.04 LTS 환경에서 Docker를 사용하여 Jenkins를 설치하고 설정하는 방법을 단계별로 안내합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.2 왜&amp;nbsp;Docker로&amp;nbsp;Jenkins를&amp;nbsp;설치하는가?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Docker를 사용하여 Jenkins를 설치하면 환경 일관성, 쉬운 업그레이드, 빠른 배포 및 확장성 등 여러 이점을 얻을 수 있습니다. 또한, 호스트 시스템에 직접 설치하는 것보다 격리된 환경에서 Jenkins를 실행할 수 있어 보안성도 향상됩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 사전&amp;nbsp;준비&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.1 시스템&amp;nbsp;요구사항&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최소&amp;nbsp;2GB&amp;nbsp;RAM&amp;nbsp;(4GB&amp;nbsp;이상&amp;nbsp;권장)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;10GB&amp;nbsp;이상의&amp;nbsp;여유&amp;nbsp;디스크&amp;nbsp;공간&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.2 Docker&amp;nbsp;및&amp;nbsp;Docker&amp;nbsp;Compose&amp;nbsp;설치&amp;nbsp;확인&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다음&amp;nbsp;명령어로&amp;nbsp;Docker가&amp;nbsp;정상적으로&amp;nbsp;설치되었는지&amp;nbsp;확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1727967077981&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker --version
docker run hello-world&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;805&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVwMUA/btsJUvIbu6F/9dNJ4C660IFBEf75gTlTiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVwMUA/btsJUvIbu6F/9dNJ4C660IFBEf75gTlTiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVwMUA/btsJUvIbu6F/9dNJ4C660IFBEf75gTlTiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVwMUA%2FbtsJUvIbu6F%2F9dNJ4C660IFBEf75gTlTiK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;805&quot; height=&quot;600&quot; data-origin-width=&quot;805&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Docker&amp;nbsp;Compose도&amp;nbsp;설치되어&amp;nbsp;있는지&amp;nbsp;확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1727967100945&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker-compose --version&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;505&quot; data-origin-height=&quot;71&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Oife3/btsJU1GDcXP/ELayFEhDdCtMcFoNPHKHgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Oife3/btsJU1GDcXP/ELayFEhDdCtMcFoNPHKHgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Oife3/btsJU1GDcXP/ELayFEhDdCtMcFoNPHKHgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOife3%2FbtsJU1GDcXP%2FELayFEhDdCtMcFoNPHKHgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;505&quot; height=&quot;71&quot; data-origin-width=&quot;505&quot; data-origin-height=&quot;71&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Dokcer Compose가 설치가 안되어있을 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. Docker Compose 최신 버전 다운로드&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727967361670&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;curl -L &quot;https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)&quot; -o /usr/local/bin/docker-compose&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. Docker Compose 파일에 실행 권한 부여&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727967440548&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;chmod +x /usr/local/bin/docker-compose&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 심볼릭 링크 생성 (선택 사항)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;caret-color: auto; letter-spacing: 0px;&quot;&gt;만약 docker-compose 명령어가 /usr/local/bin에 없을 경우, 심볼릭 링크를 만들어줄 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727967562689&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. Host 시스템에 컨테이너 데이터 디렉토리 생성&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.1 디렉토리&amp;nbsp;생성&amp;nbsp;및&amp;nbsp;권한&amp;nbsp;설정&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Jenkins 데이터 디렉토리 생성 (원하는 폴더 위치에 생성해주시면 됩니다.)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1727970543614&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mkdir -p /home/user/jenkins_home&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이글에선 아래와 같이 생성하였습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1727970678988&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mkdir -p /home/junu/docker_data/jenkins
chown -R junu:junu /home/junu/docker_data&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. Jenkins 설치 방법 1: Docker 명령어 사용&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.1 Jenkins Docker 이미지 다운로드&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Java 버전에 따라 버전을 선택해서 설치해주시길 바랍니다.&lt;/li&gt;
&lt;li&gt;다음 명령어로 Jenkins LTS 이미지를 다운로드&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1727966175119&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker pull jenkins/jenkins:lts&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;820&quot; data-origin-height=&quot;428&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmZutj/btsJVhvIvnf/E5ytwzXOKNsMCv55acwEY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmZutj/btsJVhvIvnf/E5ytwzXOKNsMCv55acwEY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmZutj/btsJVhvIvnf/E5ytwzXOKNsMCv55acwEY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmZutj%2FbtsJVhvIvnf%2FE5ytwzXOKNsMCv55acwEY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;820&quot; height=&quot;428&quot; data-origin-width=&quot;820&quot; data-origin-height=&quot;428&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.2 Jenkins 컨테이너 실행&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1727970936524&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker run -d \
  --name jenkins \
  -p 8080:8080 \
  -p 50000:50000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /home/junu/docker_data/jenkins:/var/jenkins_home \
  jenkins/jenkins:lts&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.3 포트 매핑 및 볼륨 설정 설명&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;-p 8080:8080: Jenkins 웹 인터페이스용 포트&lt;/li&gt;
&lt;li&gt;-p 50000:50000: Jenkins 에이전트 통신용 포트&lt;/li&gt;
&lt;li&gt;-v /home/junu/docker_data/jenkins:/var/jenkins_home: 호스트의 Jenkins 데이터 디렉토리를 컨테이너에 마운트&lt;/li&gt;
&lt;li&gt;-v /var/run/docker.sock:/var/run/docker.sock: 호스트의 Docker 소켓을 컨테이너에 마운트 (선택사항)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 구성하면 Jenkins 데이터의 안전한 보관과 효율적인 관리가 가능해지며 Docker의 이점을 최대한 활용할 수 있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.4 Jenkins 웹 접속&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;http://IP:8080 접속 (위에서 설정한 포트)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3839&quot; data-origin-height=&quot;2075&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/COrZC/btsJUbpKXvW/BDcAPCz6j2wDfkJGVzRZ7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/COrZC/btsJUbpKXvW/BDcAPCz6j2wDfkJGVzRZ7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/COrZC/btsJUbpKXvW/BDcAPCz6j2wDfkJGVzRZ7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCOrZC%2FbtsJUbpKXvW%2FBDcAPCz6j2wDfkJGVzRZ7K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3839&quot; height=&quot;2075&quot; data-origin-width=&quot;3839&quot; data-origin-height=&quot;2075&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. Jenkins 설치 방법 2: Docker Compose 사용&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Docker&amp;nbsp;Compose를&amp;nbsp;사용하면&amp;nbsp;여러&amp;nbsp;컨테이너를&amp;nbsp;쉽게&amp;nbsp;관리할&amp;nbsp;수&amp;nbsp;있으며,&amp;nbsp;설정을&amp;nbsp;파일로&amp;nbsp;버전&amp;nbsp;관리할&amp;nbsp;수&amp;nbsp;있습니다.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.1 docker-compose.yml 파일 작성&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;docker-compose.yml&lt;/code&gt; 작성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1727971446863&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vi docker-compose.yml&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1727971819582&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;version: '3.9'
services:
  jenkins:
    image: jenkins/jenkins:lts
    container_name: jenkins # 컨테이너 이름을 명시적으로 표시하기 위해 추가
    ports:
      - &quot;8080:8080&quot;
      - &quot;50000:50000&quot;
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /home/junu/docker_data/jenkins:/var/jenkins_home&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.2&amp;nbsp;Docker&amp;nbsp;Compose로&amp;nbsp;Jenkins&amp;nbsp;실행&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다음&amp;nbsp;명령어로&amp;nbsp;Jenkins를&amp;nbsp;실행&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1727972186471&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker-compose up -d&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Docker Compose Down 명령&lt;/li&gt;
&lt;/ul&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Docker Compose Down 명령&lt;/p&gt;
&lt;pre id=&quot;code_1727972653695&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker-compose down&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Docker Compose Down 추가 옵션&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;--volumes&lt;/b&gt;: 정의된 볼륨도 함께 삭제하고 싶을 때 사용합니다. (주의: 데이터가 삭제될 수 있으므로 중요 데이터는 백업하는 것이 좋습니다.)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1727972693642&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker-compose down --volumes&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt; --rmi&lt;/b&gt;: 사용한 이미지를 제거하고 싶을 때 사용할 수 있습니다.
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;b&gt; local&lt;/b&gt;: 프로젝트에서 생성한 이미지만 삭제&lt;/li&gt;
&lt;li&gt;&lt;b&gt; all&lt;/b&gt;: 모든 이미지를 삭제&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1727972757477&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker-compose down --rmi all&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;caret-color: auto; letter-spacing: 0px;&quot;&gt;이렇게 하면 docker-compose up으로 올린 서비스를 안전하게 중지할 수 있습니다.&lt;/span&gt;&lt;span style=&quot;caret-color: auto; letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.3 Jenkins 웹 접속&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;http://IP:8080 접속 (위에서 설정한 포트)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3839&quot; data-origin-height=&quot;2075&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/COrZC/btsJUbpKXvW/BDcAPCz6j2wDfkJGVzRZ7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/COrZC/btsJUbpKXvW/BDcAPCz6j2wDfkJGVzRZ7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/COrZC/btsJUbpKXvW/BDcAPCz6j2wDfkJGVzRZ7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCOrZC%2FbtsJUbpKXvW%2FBDcAPCz6j2wDfkJGVzRZ7K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3839&quot; height=&quot;2075&quot; data-origin-width=&quot;3839&quot; data-origin-height=&quot;2075&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. Jenkins 초기 설정&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6.1 관리자 비밀번호 확인&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다음&amp;nbsp;명령어로&amp;nbsp;초기&amp;nbsp;관리자&amp;nbsp;비밀번호를&amp;nbsp;확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1727972910498&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아래에 콘솔 화면에 초기 비밀번호를 확인하실 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;871&quot; data-origin-height=&quot;71&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUo87V/btsJUZhKRGC/LfNcj9CMGWv2PSmfRu6Ae0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUo87V/btsJUZhKRGC/LfNcj9CMGWv2PSmfRu6Ae0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUo87V/btsJUZhKRGC/LfNcj9CMGWv2PSmfRu6Ae0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUo87V%2FbtsJUZhKRGC%2FLfNcj9CMGWv2PSmfRu6Ae0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;871&quot; height=&quot;71&quot; data-origin-width=&quot;871&quot; data-origin-height=&quot;71&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-10-04 012948.png&quot; data-origin-width=&quot;1751&quot; data-origin-height=&quot;1828&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLY2Uc/btsJU0Vgnr4/enMu7L9PTlC3aFWCtNo1v1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLY2Uc/btsJU0Vgnr4/enMu7L9PTlC3aFWCtNo1v1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLY2Uc/btsJU0Vgnr4/enMu7L9PTlC3aFWCtNo1v1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLY2Uc%2FbtsJU0Vgnr4%2FenMu7L9PTlC3aFWCtNo1v1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1751&quot; height=&quot;1828&quot; data-filename=&quot;화면 캡처 2024-10-04 012948.png&quot; data-origin-width=&quot;1751&quot; data-origin-height=&quot;1828&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6.2 플러그인 설치 옵션&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Install suggested plugins 클릭 (추후 필요한 플러그인은 따로 설치하실 수 있습니다.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-10-04 013213.png&quot; data-origin-width=&quot;1755&quot; data-origin-height=&quot;1825&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1FIhm/btsJU8r6vK6/A8PFi9kLLDe0dkK0Yf0Ns1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1FIhm/btsJU8r6vK6/A8PFi9kLLDe0dkK0Yf0Ns1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1FIhm/btsJU8r6vK6/A8PFi9kLLDe0dkK0Yf0Ns1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1FIhm%2FbtsJU8r6vK6%2FA8PFi9kLLDe0dkK0Yf0Ns1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1755&quot; height=&quot;1825&quot; data-filename=&quot;화면 캡처 2024-10-04 013213.png&quot; data-origin-width=&quot;1755&quot; data-origin-height=&quot;1825&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1764&quot; data-origin-height=&quot;1821&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bI631V/btsJU86Ic8F/VEi3EIC58ULpxbF6LKxboK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bI631V/btsJU86Ic8F/VEi3EIC58ULpxbF6LKxboK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bI631V/btsJU86Ic8F/VEi3EIC58ULpxbF6LKxboK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbI631V%2FbtsJU86Ic8F%2FVEi3EIC58ULpxbF6LKxboK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1764&quot; height=&quot;1821&quot; data-origin-width=&quot;1764&quot; data-origin-height=&quot;1821&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6.3 관리자 계정 생성 및 Jenkins&amp;nbsp;URL을&amp;nbsp;설정&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-10-04 014619.png&quot; data-origin-width=&quot;1753&quot; data-origin-height=&quot;1814&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9zdDM/btsJSOPZAVH/pktN1MxAYMxMw6iIDbK7W0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9zdDM/btsJSOPZAVH/pktN1MxAYMxMw6iIDbK7W0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9zdDM/btsJSOPZAVH/pktN1MxAYMxMw6iIDbK7W0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9zdDM%2FbtsJSOPZAVH%2FpktN1MxAYMxMw6iIDbK7W0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1753&quot; height=&quot;1814&quot; data-filename=&quot;화면 캡처 2024-10-04 014619.png&quot; data-origin-width=&quot;1753&quot; data-origin-height=&quot;1814&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-10-04 014757.png&quot; data-origin-width=&quot;1757&quot; data-origin-height=&quot;1823&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n4di1/btsJTLdZQNk/ElJzCIzJ7CaMa79RdFrZNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n4di1/btsJTLdZQNk/ElJzCIzJ7CaMa79RdFrZNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n4di1/btsJTLdZQNk/ElJzCIzJ7CaMa79RdFrZNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn4di1%2FbtsJTLdZQNk%2FElJzCIzJ7CaMa79RdFrZNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1757&quot; height=&quot;1823&quot; data-filename=&quot;화면 캡처 2024-10-04 014757.png&quot; data-origin-width=&quot;1757&quot; data-origin-height=&quot;1823&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6.4 계정 생성 및 설치 완료&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3832&quot; data-origin-height=&quot;1856&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCXsiH/btsJTpbdZdB/QsFJKDkyKVgJzpi5bO5Ks1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCXsiH/btsJTpbdZdB/QsFJKDkyKVgJzpi5bO5Ks1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCXsiH/btsJTpbdZdB/QsFJKDkyKVgJzpi5bO5Ks1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCXsiH%2FbtsJTpbdZdB%2FQsFJKDkyKVgJzpi5bO5Ks1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3832&quot; height=&quot;1856&quot; data-origin-width=&quot;3832&quot; data-origin-height=&quot;1856&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 마치며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이&amp;nbsp;가이드를&amp;nbsp;통해&amp;nbsp;Ubuntu&amp;nbsp;24.04&amp;nbsp;LTS에서&amp;nbsp;Docker를&amp;nbsp;사용하여&amp;nbsp;Jenkins를&amp;nbsp;설치하고&amp;nbsp;기본적인&amp;nbsp;설정을&amp;nbsp;완료할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;추가적인&amp;nbsp;설정이나&amp;nbsp;고급&amp;nbsp;기능은&amp;nbsp;프로젝트의&amp;nbsp;요구사항에&amp;nbsp;따라&amp;nbsp;적용하시기&amp;nbsp;바랍니다.&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;008&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/008.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/008.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>데브옵스/CICD</category>
      <category>CI/CD</category>
      <category>devops</category>
      <category>docker</category>
      <category>jenkins</category>
      <category>개발 환경 구축</category>
      <category>도커</category>
      <category>배포 자동화</category>
      <category>젠킨스</category>
      <category>파이프라인 자동화</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/36</guid>
      <comments>https://bigdwarf.tistory.com/36#entry36comment</comments>
      <pubDate>Fri, 4 Oct 2024 01:49:51 +0900</pubDate>
    </item>
    <item>
      <title>Ubuntu에 Docker 관리툴 Dockge 설치</title>
      <link>https://bigdwarf.tistory.com/35</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0GIE1/btsJSmR9xob/WFVKAU4ylsEur7iqPeBp3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0GIE1/btsJSmR9xob/WFVKAU4ylsEur7iqPeBp3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0GIE1/btsJSmR9xob/WFVKAU4ylsEur7iqPeBp3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0GIE1%2FbtsJSmR9xob%2FWFVKAU4ylsEur7iqPeBp3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1080&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;a href=&quot;https://bigdwarf.blog/34&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;2024.09.30 - [데브옵스/Docker] - Ubuntu에 Docker 설치&lt;/span&gt;&lt;/a&gt;&lt;/blockquote&gt;
&lt;figure id=&quot;og_1728614891391&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Ubuntu에 Docker 설치&quot; data-og-description=&quot;1. 들어가며1.1 Docker 란?Docker는&amp;nbsp;애플리케이션을&amp;nbsp;개발,&amp;nbsp;배포,&amp;nbsp;실행하기&amp;nbsp;위한&amp;nbsp;오픈소스&amp;nbsp;플랫폼입니다.&amp;nbsp;컨테이너라는&amp;nbsp;격리된&amp;nbsp;환경에서&amp;nbsp;애플리케이션을&amp;nbsp;패키징하고&amp;nbsp;실행할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;해 줍&quot; data-og-host=&quot;bigdwarf.blog&quot; data-og-source-url=&quot;https://bigdwarf.blog/34&quot; data-og-url=&quot;https://bigdwarf.blog/34&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/biPxDS/hyXeaENwei/12cKjPdUI6cKkTrRy76DUK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bo69AX/hyXebwVV7L/Arcym4kHZzblfo3hVrcVu1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bXAafl/hyXebRdjnf/WKIfqNFC7xMSWy8kShME81/img.png?width=1080&amp;amp;height=1080&amp;amp;face=0_0_1080_1080&quot;&gt;&lt;a href=&quot;https://bigdwarf.blog/34&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://bigdwarf.blog/34&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/biPxDS/hyXeaENwei/12cKjPdUI6cKkTrRy76DUK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bo69AX/hyXebwVV7L/Arcym4kHZzblfo3hVrcVu1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bXAafl/hyXebRdjnf/WKIfqNFC7xMSWy8kShME81/img.png?width=1080&amp;amp;height=1080&amp;amp;face=0_0_1080_1080');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Ubuntu에 Docker 설치&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. 들어가며1.1 Docker 란?Docker는&amp;nbsp;애플리케이션을&amp;nbsp;개발,&amp;nbsp;배포,&amp;nbsp;실행하기&amp;nbsp;위한&amp;nbsp;오픈소스&amp;nbsp;플랫폼입니다.&amp;nbsp;컨테이너라는&amp;nbsp;격리된&amp;nbsp;환경에서&amp;nbsp;애플리케이션을&amp;nbsp;패키징하고&amp;nbsp;실행할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;해 줍&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;bigdwarf.blog&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.1 Dockge 란?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Dockge는&amp;nbsp;Docker&amp;nbsp;컨테이너와&amp;nbsp;스택을&amp;nbsp;관리하기&amp;nbsp;위한&amp;nbsp;웹&amp;nbsp;기반&amp;nbsp;GUI&amp;nbsp;도구입니다.&amp;nbsp;사용자&amp;nbsp;친화적인&amp;nbsp;인터페이스를&amp;nbsp;통해&amp;nbsp;Docker&amp;nbsp;컨테이너를&amp;nbsp;쉽게&amp;nbsp;관리할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;해 줍니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.2 Dockge를 선택한 이유&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Portainer와 같은 다른 Docker 관리 도구도 있지만, Dockge를 선택한 이유 아래와 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;경량화: Dockge는 Portainer보다 더 가볍고 리소스 사용이 적습니다.&lt;/li&gt;
&lt;li&gt;단순성: 사용자 인터페이스가 직관적이고 간단하여 학습 곡선이 낮습니다.&lt;/li&gt;
&lt;li&gt;스택 중심 관리: Docker Compose 파일을 기반으로 한 스택 관리에 특화되어 있습니다.&lt;/li&gt;
&lt;li&gt;오픈소스: 활발한 커뮤니티 지원과 지속적인 업데이트가 이루어집니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 사전 준비&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.1 시스템 요구사항&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Docker가&amp;nbsp;설치된&amp;nbsp;환경&lt;/li&gt;
&lt;li&gt;최소 1GB의 여유 RAM&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.2 Docker 설치 확인&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;docker --version&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;530&quot; data-origin-height=&quot;75&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vPFA7/btsJROoazIz/hw5qZYCXa32sCALBEnnkXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vPFA7/btsJROoazIz/hw5qZYCXa32sCALBEnnkXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vPFA7/btsJROoazIz/hw5qZYCXa32sCALBEnnkXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvPFA7%2FbtsJROoazIz%2Fhw5qZYCXa32sCALBEnnkXk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;530&quot; height=&quot;75&quot; data-origin-width=&quot;530&quot; data-origin-height=&quot;75&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. Dockge 설치 과정&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.1 Dockge 디렉터리 생성&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;mkdir -p /opt/stacks /opt/dockge&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.2&amp;nbsp;Dockge&amp;nbsp;디렉터리로&amp;nbsp;이동&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;cd /opt/dockge&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.3 Docker&amp;nbsp;Compose&amp;nbsp;파일&amp;nbsp;다운로드&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;curl -fsSL https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml -o compose.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.4 Dockge 실행&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;docker compose up -d&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2542&quot; data-origin-height=&quot;372&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfLy4j/btsJSe0Z22v/rRhrBat9HcFkY1XJnaXfJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfLy4j/btsJSe0Z22v/rRhrBat9HcFkY1XJnaXfJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfLy4j/btsJSe0Z22v/rRhrBat9HcFkY1XJnaXfJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfLy4j%2FbtsJSe0Z22v%2FrRhrBat9HcFkY1XJnaXfJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2542&quot; height=&quot;372&quot; data-origin-width=&quot;2542&quot; data-origin-height=&quot;372&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2549&quot; data-origin-height=&quot;395&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KPmni/btsJQVByKP7/nCkOID8faOzBpFHeCGlLnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KPmni/btsJQVByKP7/nCkOID8faOzBpFHeCGlLnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KPmni/btsJQVByKP7/nCkOID8faOzBpFHeCGlLnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKPmni%2FbtsJQVByKP7%2FnCkOID8faOzBpFHeCGlLnk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2549&quot; height=&quot;395&quot; data-origin-width=&quot;2549&quot; data-origin-height=&quot;395&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. Dockge 초기 설정&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.1 Dockge 웹 인터페이스 접속&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;브라우저에서&amp;nbsp;http://localhost:5001&amp;nbsp;접속&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.2 Dockge 언어설정 및 계정 생성&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;언어 설정 및 계정 생성 해주시면 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3839&quot; data-origin-height=&quot;2075&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qAfKp/btsJQCPDpBs/22eP7JOx8ROaWe9XqlWVqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qAfKp/btsJQCPDpBs/22eP7JOx8ROaWe9XqlWVqK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qAfKp/btsJQCPDpBs/22eP7JOx8ROaWe9XqlWVqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqAfKp%2FbtsJQCPDpBs%2F22eP7JOx8ROaWe9XqlWVqK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3839&quot; height=&quot;2075&quot; data-origin-width=&quot;3839&quot; data-origin-height=&quot;2075&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설정 후 아래 Dockge 메인대시보드를 보실 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3839&quot; data-origin-height=&quot;2075&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eA2QOT/btsJSkmvObq/cJzh2H0DlYjBrzFcKHsGr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eA2QOT/btsJSkmvObq/cJzh2H0DlYjBrzFcKHsGr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eA2QOT/btsJSkmvObq/cJzh2H0DlYjBrzFcKHsGr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeA2QOT%2FbtsJSkmvObq%2FcJzh2H0DlYjBrzFcKHsGr1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3839&quot; height=&quot;2075&quot; data-origin-width=&quot;3839&quot; data-origin-height=&quot;2075&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 마무리&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Dockge는&amp;nbsp;Ubuntu&amp;nbsp;24.04&amp;nbsp;LTS&amp;nbsp;환경에서&amp;nbsp;Docker&amp;nbsp;컨테이너와&amp;nbsp;스택을&amp;nbsp;관리하기&amp;nbsp;위한&amp;nbsp;강력하고&amp;nbsp;사용자&amp;nbsp;친화적인&amp;nbsp;도구입니다.&amp;nbsp;이&amp;nbsp;가이드를&amp;nbsp;통해&amp;nbsp;Dockge를&amp;nbsp;성공적으로&amp;nbsp;설치하고&amp;nbsp;초기&amp;nbsp;설정을&amp;nbsp;완료했습니다.&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>데브옵스/Docker</category>
      <category>Container</category>
      <category>docker</category>
      <category>dockge</category>
      <category>도커</category>
      <category>도커관리툴</category>
      <category>도커컨테이너</category>
      <category>독지</category>
      <category>컨테이너</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/35</guid>
      <comments>https://bigdwarf.tistory.com/35#entry35comment</comments>
      <pubDate>Tue, 1 Oct 2024 01:18:31 +0900</pubDate>
    </item>
    <item>
      <title>Ubuntu에 Docker 설치</title>
      <link>https://bigdwarf.tistory.com/34</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;002.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Y77bh/btsJSPsDtlj/P9hg6wZZSXTRADLfIpe510/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Y77bh/btsJSPsDtlj/P9hg6wZZSXTRADLfIpe510/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Y77bh/btsJSPsDtlj/P9hg6wZZSXTRADLfIpe510/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FY77bh%2FbtsJSPsDtlj%2FP9hg6wZZSXTRADLfIpe510%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1080&quot; data-filename=&quot;002.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.1 Docker 란?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Docker는&amp;nbsp;애플리케이션을&amp;nbsp;개발,&amp;nbsp;배포,&amp;nbsp;실행하기&amp;nbsp;위한&amp;nbsp;오픈소스&amp;nbsp;플랫폼입니다.&amp;nbsp;컨테이너라는&amp;nbsp;격리된&amp;nbsp;환경에서&amp;nbsp;애플리케이션을&amp;nbsp;패키징하고&amp;nbsp;실행할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;해 줍니다.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.2 Docker를 사용하는 이유&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;일관된&amp;nbsp;환경:&amp;nbsp;개발,&amp;nbsp;테스트,&amp;nbsp;프로덕션&amp;nbsp;환경을&amp;nbsp;동일하게&amp;nbsp;유지&lt;/li&gt;
&lt;li&gt;리소스&amp;nbsp;효율성:&amp;nbsp;가상&amp;nbsp;머신보다&amp;nbsp;더&amp;nbsp;가볍고&amp;nbsp;빠름&lt;/li&gt;
&lt;li&gt;확장성:&amp;nbsp;쉽게&amp;nbsp;애플리케이션을&amp;nbsp;확장하고&amp;nbsp;배포할&amp;nbsp;수&amp;nbsp;있음&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 사전준비&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.1 시스템 요구사항&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Linux, Window, Mac 운영체제&lt;/li&gt;
&lt;li&gt;64비트 아키텍처&lt;/li&gt;
&lt;li&gt;Virtualization 지원&lt;/li&gt;
&lt;li&gt;최소 2GB RAM 이상 필요 4GB 이상 권장&lt;/li&gt;
&lt;li&gt;디스크 공간 최소 10GB&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.2 필요한 권한&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;sudo&amp;nbsp;권한이&amp;nbsp;있는&amp;nbsp;사용자&amp;nbsp;계정&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.3 실행 환경 확인&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1727708048921&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 24.04.1 LTS
Release:        24.04
Codename:       noble&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;551&quot; data-origin-height=&quot;211&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cuhd1t/btsJRCuxz6D/livCdSHXpV41uzX1KHiU6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cuhd1t/btsJRCuxz6D/livCdSHXpV41uzX1KHiU6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cuhd1t/btsJRCuxz6D/livCdSHXpV41uzX1KHiU6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcuhd1t%2FbtsJRCuxz6D%2FlivCdSHXpV41uzX1KHiU6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;551&quot; height=&quot;211&quot; data-origin-width=&quot;551&quot; data-origin-height=&quot;211&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. Docker 설치 과정&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.1 시스템 업데이트&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1727708128140&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apt update &amp;amp;&amp;amp; apt upgrade -y&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.2 필수 패키지 설치&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1727708146021&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apt install apt-transport-https ca-certificates curl software-properties-common&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.3 Docker&amp;nbsp;GPG&amp;nbsp;키&amp;nbsp;추가&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1727708176450&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.4&lt;span&gt;&amp;nbsp;&lt;/span&gt;Docker 리포지토리&amp;nbsp;추가&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1727708213376&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;echo &quot;deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable&quot; | tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.5&lt;span&gt;&amp;nbsp;&lt;/span&gt;Docker&lt;span&gt; 설치&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1727708252992&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apt update
apt install docker-ce docker-ce-cli containerd.io&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.5&lt;span&gt; Docker&amp;nbsp;서비스&amp;nbsp;시작&amp;nbsp;및&amp;nbsp;활성화&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1727708274361&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl start docker
systemctl enable docker&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.6 설치 확인 및 실행&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1727709998793&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker --version
docker run hello-world&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;859&quot; data-origin-height=&quot;689&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfJobT/btsJQ5KMrxD/F7SOYJiuHCBTrpERkM038k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfJobT/btsJQ5KMrxD/F7SOYJiuHCBTrpERkM038k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfJobT/btsJQ5KMrxD/F7SOYJiuHCBTrpERkM038k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfJobT%2FbtsJQ5KMrxD%2FF7SOYJiuHCBTrpERkM038k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;859&quot; height=&quot;689&quot; data-origin-width=&quot;859&quot; data-origin-height=&quot;689&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 사용자 Docker 그룹에 추가&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1727709948340&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;usermod -aG docker $USER&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이&amp;nbsp;명령&amp;nbsp;후&amp;nbsp;로그아웃&amp;nbsp;후&amp;nbsp;다시&amp;nbsp;로그인하세요.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 마무리&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Docker를&amp;nbsp;성공적으로&amp;nbsp;설치하고&amp;nbsp;기본&amp;nbsp;사용법을&amp;nbsp;익혔습니다.&amp;nbsp;이제&amp;nbsp;컨테이너화된&amp;nbsp;애플리케이션을&amp;nbsp;개발하고&amp;nbsp;배포할&amp;nbsp;준비가&amp;nbsp;되었습니다.&amp;nbsp;Docker의&amp;nbsp;강력한&amp;nbsp;기능을&amp;nbsp;활용하여&amp;nbsp;개발&amp;nbsp;workflow를&amp;nbsp;개선하고&amp;nbsp;애플리케이션&amp;nbsp;배포를&amp;nbsp;간소화할&amp;nbsp;수&amp;nbsp;있습니다.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>데브옵스/Docker</category>
      <category>Container</category>
      <category>docker</category>
      <category>도커</category>
      <category>도커설치</category>
      <category>설치</category>
      <category>컨테이너</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/34</guid>
      <comments>https://bigdwarf.tistory.com/34#entry34comment</comments>
      <pubDate>Mon, 30 Sep 2024 23:59:03 +0900</pubDate>
    </item>
    <item>
      <title>Promox VM 생성 및 설치</title>
      <link>https://bigdwarf.tistory.com/33</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;img.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmgUSM/btsJQfr6ysI/397uHrZ0H0OZtlpC9UdmH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmgUSM/btsJQfr6ysI/397uHrZ0H0OZtlpC9UdmH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmgUSM/btsJQfr6ysI/397uHrZ0H0OZtlpC9UdmH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmgUSM%2FbtsJQfr6ysI%2F397uHrZ0H0OZtlpC9UdmH1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;640&quot; data-filename=&quot;img.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;a href=&quot;https://bigdwarf.blog/27&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.09.12 - [서버/Hypervisor] - Proxmox 설치 및 초기 설정&lt;/a&gt;&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 사전 준비&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.1 Proxmox VM에 올릴 ISO 파일 다운로드&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;저는 Ubuntu를 VM에 올리겠습니다. Ubuntu 24.04 아래 링크 통해서 다운로드 바랍니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;[&lt;a href=&quot;https://ubuntu.com/download/server&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;다운로드 링크&lt;/span&gt;&lt;/a&gt;]&lt;/p&gt;
&lt;figure id=&quot;og_1727500007153&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;https://ubuntu.com/download/server&quot; data-og-description=&quot;&quot; data-og-host=&quot;ubuntu.com&quot; data-og-source-url=&quot;https://ubuntu.com/download/server&quot; data-og-url=&quot;https://ubuntu.com/download/server&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://ubuntu.com/download/server&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ubuntu.com/download/server&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;https://ubuntu.com/download/server&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ubuntu.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;text-align: left;&quot;&gt;저는 서버용으로 설치 할 거라 Ubuntu 24.04 LTS Server로 설치 &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;text-align: left;&quot;&gt;필요에 따라 Desktop 버전으로 설치도 진행하셔도됩니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-28 140813.png&quot; data-origin-width=&quot;2052&quot; data-origin-height=&quot;1659&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjlA4o/btsJQ2MadjG/1GXbCVPcVtDnw3eMNEPfmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjlA4o/btsJQ2MadjG/1GXbCVPcVtDnw3eMNEPfmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjlA4o/btsJQ2MadjG/1GXbCVPcVtDnw3eMNEPfmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjlA4o%2FbtsJQ2MadjG%2F1GXbCVPcVtDnw3eMNEPfmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2052&quot; height=&quot;1659&quot; data-filename=&quot;화면 캡처 2024-09-28 140813.png&quot; data-origin-width=&quot;2052&quot; data-origin-height=&quot;1659&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-28 140859.png&quot; data-origin-width=&quot;2026&quot; data-origin-height=&quot;904&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cIrAkz/btsJPCayzJy/W9eyElb3McZFR0yGXCB4n1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cIrAkz/btsJPCayzJy/W9eyElb3McZFR0yGXCB4n1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cIrAkz/btsJPCayzJy/W9eyElb3McZFR0yGXCB4n1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIrAkz%2FbtsJPCayzJy%2FW9eyElb3McZFR0yGXCB4n1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2026&quot; height=&quot;904&quot; data-filename=&quot;화면 캡처 2024-09-28 140859.png&quot; data-origin-width=&quot;2026&quot; data-origin-height=&quot;904&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1261&quot; data-origin-height=&quot;52&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kNpj2/btsJPPtG5Ar/kaK5WQ9PgHmolQETTSGYD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kNpj2/btsJPPtG5Ar/kaK5WQ9PgHmolQETTSGYD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kNpj2/btsJPPtG5Ar/kaK5WQ9PgHmolQETTSGYD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkNpj2%2FbtsJPPtG5Ar%2FkaK5WQ9PgHmolQETTSGYD1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1261&quot; height=&quot;52&quot; data-origin-width=&quot;1261&quot; data-origin-height=&quot;52&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.2 Proxmox VE에 ISO 파일 업로드&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Promox 관리 콘솔 로그인하셔서 아래 화면 처럼 iso 이미지를 업로드&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-28 141438.png&quot; data-origin-width=&quot;3834&quot; data-origin-height=&quot;1480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqwEqy/btsJQduiilU/tR9Iw3tuMJQ8kSSgIoaT80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqwEqy/btsJQduiilU/tR9Iw3tuMJQ8kSSgIoaT80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqwEqy/btsJQduiilU/tR9Iw3tuMJQ8kSSgIoaT80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqwEqy%2FbtsJQduiilU%2FtR9Iw3tuMJQ8kSSgIoaT80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3834&quot; height=&quot;1480&quot; data-filename=&quot;화면 캡처 2024-09-28 141438.png&quot; data-origin-width=&quot;3834&quot; data-origin-height=&quot;1480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;703&quot; data-origin-height=&quot;491&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxiIxt/btsJPPmZqNL/nSndBCqPvkkzH0oTJUr2u0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxiIxt/btsJPPmZqNL/nSndBCqPvkkzH0oTJUr2u0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxiIxt/btsJPPmZqNL/nSndBCqPvkkzH0oTJUr2u0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxiIxt%2FbtsJPPmZqNL%2FnSndBCqPvkkzH0oTJUr2u0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;703&quot; height=&quot;491&quot; data-origin-width=&quot;703&quot; data-origin-height=&quot;491&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아래 화면 같이 TASK OK 까지 뜨면 업로드가 완료&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1403&quot; data-origin-height=&quot;880&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsUa35/btsJRdGRzfj/0TM1DqR6OSLhM17c3DvbM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsUa35/btsJRdGRzfj/0TM1DqR6OSLhM17c3DvbM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsUa35/btsJRdGRzfj/0TM1DqR6OSLhM17c3DvbM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsUa35%2FbtsJRdGRzfj%2F0TM1DqR6OSLhM17c3DvbM1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1403&quot; height=&quot;880&quot; data-origin-width=&quot;1403&quot; data-origin-height=&quot;880&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. Proxmox VM 생성 및 설치&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.1 Proxmox VM 생성&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Promox 관리 콘솔 우측 상단 VM 생성 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-28 143345.png&quot; data-origin-width=&quot;778&quot; data-origin-height=&quot;126&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZjYed/btsJO9s66xH/OYfFaB9VRztXkSSrBiKkS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZjYed/btsJO9s66xH/OYfFaB9VRztXkSSrBiKkS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZjYed/btsJO9s66xH/OYfFaB9VRztXkSSrBiKkS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZjYed%2FbtsJO9s66xH%2FOYfFaB9VRztXkSSrBiKkS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;778&quot; height=&quot;126&quot; data-filename=&quot;화면 캡처 2024-09-28 143345.png&quot; data-origin-width=&quot;778&quot; data-origin-height=&quot;126&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여기서 VM 이름을 정해주시고 다음 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-28 143612.png&quot; data-origin-width=&quot;1261&quot; data-origin-height=&quot;950&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zAJY8/btsJPQF5YAm/flUOKUeBj4kKaJ5ODxt5w1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zAJY8/btsJPQF5YAm/flUOKUeBj4kKaJ5ODxt5w1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zAJY8/btsJPQF5YAm/flUOKUeBj4kKaJ5ODxt5w1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzAJY8%2FbtsJPQF5YAm%2FflUOKUeBj4kKaJ5ODxt5w1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1261&quot; height=&quot;950&quot; data-filename=&quot;화면 캡처 2024-09-28 143612.png&quot; data-origin-width=&quot;1261&quot; data-origin-height=&quot;950&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치 할 업로드된 이미지 파일을 선택 후 다음&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-28 143729.png&quot; data-origin-width=&quot;1389&quot; data-origin-height=&quot;946&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKBkZF/btsJQ3jZOmx/QqNmnyWZd10d0KGoLmpytk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKBkZF/btsJQ3jZOmx/QqNmnyWZd10d0KGoLmpytk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKBkZF/btsJQ3jZOmx/QqNmnyWZd10d0KGoLmpytk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKBkZF%2FbtsJQ3jZOmx%2FQqNmnyWZd10d0KGoLmpytk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1389&quot; height=&quot;946&quot; data-filename=&quot;화면 캡처 2024-09-28 143729.png&quot; data-origin-width=&quot;1389&quot; data-origin-height=&quot;946&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시스템 설정은 디폴트로 진행 다음 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-28 144028.png&quot; data-origin-width=&quot;1258&quot; data-origin-height=&quot;943&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zYGbf/btsJQyxZZer/pRY6VCBIyMskKCPW2SpEFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zYGbf/btsJQyxZZer/pRY6VCBIyMskKCPW2SpEFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zYGbf/btsJQyxZZer/pRY6VCBIyMskKCPW2SpEFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzYGbf%2FbtsJQyxZZer%2FpRY6VCBIyMskKCPW2SpEFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1258&quot; height=&quot;943&quot; data-filename=&quot;화면 캡처 2024-09-28 144028.png&quot; data-origin-width=&quot;1258&quot; data-origin-height=&quot;943&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;스토리지/디스크 크기 지정 후 캐시는 Write back으로 진행 다음 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-28 144152.png&quot; data-origin-width=&quot;1260&quot; data-origin-height=&quot;946&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wYegf/btsJPBvXYzh/6YG0X8Ag2mgeQWDHao5Ns1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wYegf/btsJPBvXYzh/6YG0X8Ag2mgeQWDHao5Ns1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wYegf/btsJPBvXYzh/6YG0X8Ag2mgeQWDHao5Ns1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwYegf%2FbtsJPBvXYzh%2F6YG0X8Ag2mgeQWDHao5Ns1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1260&quot; height=&quot;946&quot; data-filename=&quot;화면 캡처 2024-09-28 144152.png&quot; data-origin-width=&quot;1260&quot; data-origin-height=&quot;946&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CPU 코어수 지정 후 다음 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-28 144512.png&quot; data-origin-width=&quot;1253&quot; data-origin-height=&quot;941&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m0NkR/btsJQINVUwY/TFAda7wZtyPLuNp4i2UFs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m0NkR/btsJQINVUwY/TFAda7wZtyPLuNp4i2UFs1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m0NkR/btsJQINVUwY/TFAda7wZtyPLuNp4i2UFs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm0NkR%2FbtsJQINVUwY%2FTFAda7wZtyPLuNp4i2UFs1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1253&quot; height=&quot;941&quot; data-filename=&quot;화면 캡처 2024-09-28 144512.png&quot; data-origin-width=&quot;1253&quot; data-origin-height=&quot;941&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;메모리 지정 후 저는 8GB 지정 후 다음 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-28 144728.png&quot; data-origin-width=&quot;1246&quot; data-origin-height=&quot;941&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SXXEE/btsJReltp2g/ymOegYTD0HpFa2fyaMzQ5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SXXEE/btsJReltp2g/ymOegYTD0HpFa2fyaMzQ5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SXXEE/btsJReltp2g/ymOegYTD0HpFa2fyaMzQ5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSXXEE%2FbtsJReltp2g%2FymOegYTD0HpFa2fyaMzQ5k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1246&quot; height=&quot;941&quot; data-filename=&quot;화면 캡처 2024-09-28 144728.png&quot; data-origin-width=&quot;1246&quot; data-origin-height=&quot;941&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;네트워크 부분은 디폴트 값으로 진행 다음 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-28 144929.png&quot; data-origin-width=&quot;1251&quot; data-origin-height=&quot;946&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FiURd/btsJPl00inZ/QD9WOm7bhSmFeLyteMEXmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FiURd/btsJPl00inZ/QD9WOm7bhSmFeLyteMEXmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FiURd/btsJPl00inZ/QD9WOm7bhSmFeLyteMEXmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFiURd%2FbtsJPl00inZ%2FQD9WOm7bhSmFeLyteMEXmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1251&quot; height=&quot;946&quot; data-filename=&quot;화면 캡처 2024-09-28 144929.png&quot; data-origin-width=&quot;1251&quot; data-origin-height=&quot;946&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;마지막으로 설정했던 부분 확인 후 마침 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-28 145041.png&quot; data-origin-width=&quot;1256&quot; data-origin-height=&quot;938&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QkYRt/btsJPAqjsUQ/81fPCoRbMkSQQxn1RFO9rK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QkYRt/btsJPAqjsUQ/81fPCoRbMkSQQxn1RFO9rK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QkYRt/btsJPAqjsUQ/81fPCoRbMkSQQxn1RFO9rK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQkYRt%2FbtsJPAqjsUQ%2F81fPCoRbMkSQQxn1RFO9rK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1256&quot; height=&quot;938&quot; data-filename=&quot;화면 캡처 2024-09-28 145041.png&quot; data-origin-width=&quot;1256&quot; data-origin-height=&quot;938&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;완료되면 오른쪽 데이터센터 부분을 보시면 생성된 VM 100(Ubuntu-SV)를 확인해보실수있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;528&quot; data-origin-height=&quot;115&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjTXey/btsJQTu6h7A/XBgeg7ZyAQIQFBpQ6kk9zK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjTXey/btsJQTu6h7A/XBgeg7ZyAQIQFBpQ6kk9zK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjTXey/btsJQTu6h7A/XBgeg7ZyAQIQFBpQ6kk9zK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjTXey%2FbtsJQTu6h7A%2FXBgeg7ZyAQIQFBpQ6kk9zK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;528&quot; height=&quot;115&quot; data-origin-width=&quot;528&quot; data-origin-height=&quot;115&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;VM 시작하시고 Ubuntu 설치를 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-28 145709.png&quot; data-origin-width=&quot;3813&quot; data-origin-height=&quot;1506&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbVYKM/btsJQdHQl1U/Toj4fbmFHQN3s0Gsk2S2e1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbVYKM/btsJQdHQl1U/Toj4fbmFHQN3s0Gsk2S2e1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbVYKM/btsJQdHQl1U/Toj4fbmFHQN3s0Gsk2S2e1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbVYKM%2FbtsJQdHQl1U%2FToj4fbmFHQN3s0Gsk2S2e1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3813&quot; height=&quot;1506&quot; data-filename=&quot;화면 캡처 2024-09-28 145709.png&quot; data-origin-width=&quot;3813&quot; data-origin-height=&quot;1506&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.2 &lt;/b&gt;&lt;b&gt;Proxmox&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;VM 설치&lt;/b&gt;&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;a href=&quot;https://bigdwarf.blog/12&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.09.09 - [운영체제/Linux] - 우분투(Ubuntu) 22.04 LTS Server 설치&lt;/a&gt;&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>서버/Hypervisor</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/33</guid>
      <comments>https://bigdwarf.tistory.com/33#entry33comment</comments>
      <pubDate>Sun, 29 Sep 2024 00:10:26 +0900</pubDate>
    </item>
    <item>
      <title>XSS(Cross-Site Scripting) : 공격 유형, 예상 시나리오,  방어 기법</title>
      <link>https://bigdwarf.tistory.com/32</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목을-입력해주세요_-001.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctpMeh/btsMOwkwlHj/EJPhiTaO6XyA09qwvojaD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctpMeh/btsMOwkwlHj/EJPhiTaO6XyA09qwvojaD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctpMeh/btsMOwkwlHj/EJPhiTaO6XyA09qwvojaD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FctpMeh%2FbtsMOwkwlHj%2FEJPhiTaO6XyA09qwvojaD1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1080&quot; data-filename=&quot;제목을-입력해주세요_-001.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. XSS(Cross-Site Scripting) 란?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;XSS는 웹 애플리케이션의 취약점을 이용해 악성 스크립트를 삽입하는 공격 기법입니다. 공격자가 삽입한 스크립트가 다른 사용자의 브라우저에서 실행되어 사용자의 정보를 탈취하거나 악의적인 행동을 수행할 수 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. XSS(Cross-Site Scripting) 주요 특징&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹사이트 관리자가 아닌 공격자가 웹 페이지에 스크립트를 삽입합니다.&lt;/li&gt;
&lt;li&gt;주로 사용자 입력값을 제대로 검증하지 않고 사용할 때 발생합니다.&lt;/li&gt;
&lt;li&gt;공격자는 사용자의 쿠키, 세션 등 중요 정보를 탈취하거나 비정상적인 기능을 수행하게 할 수 있습니다.&lt;/li&gt;
&lt;li&gt;SQL injection과 함께 가장 기초적인 웹 취약점 공격 방법 중 하나입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. XSS(Cross-Site Scripting) 공격 유형 및 시나리오&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.1 Stored&amp;nbsp;XSS&amp;nbsp;(저장형)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버에 악성 스크립트를 저장하여 지속적으로 공격하는 방식입니다. 주로 게시판, 댓글 등에서 발생합니다.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;예상 시나리오&lt;/b&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;공격자는&amp;nbsp;웹사이트의&amp;nbsp;게시판이나&amp;nbsp;댓글&amp;nbsp;기능을&amp;nbsp;통해&amp;nbsp;위와&amp;nbsp;같은&amp;nbsp;스크립트를&amp;nbsp;삽입합니다.&amp;nbsp;이&amp;nbsp;스크립트는&amp;nbsp;서버에&amp;nbsp;저장됩니다.&lt;/li&gt;
&lt;li&gt;이후&amp;nbsp;해당&amp;nbsp;게시글이나&amp;nbsp;댓글을&amp;nbsp;방문하는&amp;nbsp;모든&amp;nbsp;사용자는&amp;nbsp;페이지가&amp;nbsp;로드될&amp;nbsp;때마다&amp;nbsp;자동으로&amp;nbsp;window.location.href를&amp;nbsp;통해&amp;nbsp;네이버(https://naver.com)로&amp;nbsp;리디렉션 됩니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1727451076737&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script&amp;gt;
  window.onload = function() {
    window.location.href = &quot;https://naver.com&quot;;
  };
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-28 002907.png&quot; data-origin-width=&quot;2117&quot; data-origin-height=&quot;1657&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rX9PT/btsJPDmB7pX/b5oVbH2rk0qzCTeqzrcDF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rX9PT/btsJPDmB7pX/b5oVbH2rk0qzCTeqzrcDF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rX9PT/btsJPDmB7pX/b5oVbH2rk0qzCTeqzrcDF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrX9PT%2FbtsJPDmB7pX%2Fb5oVbH2rk0qzCTeqzrcDF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2117&quot; height=&quot;1657&quot; data-filename=&quot;화면 캡처 2024-09-28 002907.png&quot; data-origin-width=&quot;2117&quot; data-origin-height=&quot;1657&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.2 Reflected&amp;nbsp;XSS&amp;nbsp;(반사형)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;URL 파라미터 등을 통해 전달된 악성 스크립트가 즉시 실행되는 방식입니다.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;예상 시나리오&lt;/b&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;사용자가 특정 링크(예: http://bigdwarf.blog/search?param=&amp;lt;script&amp;gt;alert('안녕하세요.')&amp;lt;/script&amp;gt;)를 클릭하면, 서버는 param 파라미터의 값을 응답 페이지에 반사하여 사용자의 브라우저에서 악성 스크립트를 실행합니다.&lt;/li&gt;
&lt;li&gt;결과적으로, alert(' 안녕하세요.')가 실행되어 브라우저에 경고창이 뜨게 됩니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1727451712927&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;http://bigdwarf.blog/search?param=&amp;lt;script&amp;gt;alert('안녕하세요.')&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1155&quot; data-origin-height=&quot;145&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XneDv/btsJQdnnAn4/YnDhohCzCLVI8aIQAGnTl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XneDv/btsJQdnnAn4/YnDhohCzCLVI8aIQAGnTl0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XneDv/btsJQdnnAn4/YnDhohCzCLVI8aIQAGnTl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXneDv%2FbtsJQdnnAn4%2FYnDhohCzCLVI8aIQAGnTl0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1155&quot; height=&quot;145&quot; data-origin-width=&quot;1155&quot; data-origin-height=&quot;145&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.3 DOM-based&amp;nbsp;XSS&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DOM-based XSS는 서버가 아닌 클라이언트 측 즉 브라우저에서 동적으로 생성된 DOM(Document Object Model) 요소에 의해 발생하는 XSS 공격입니다. 이 유형의 XSS는 서버와 상관없이 클라이언트 측 자바스크립트 코드가 잘못된 사용자 입력을 DOM에 직접 반영하면서 발생합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt; 예상 시나리오&lt;/b&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;사용자가 아래와 같은 URL을 방문합니다.&lt;/li&gt;
&lt;li&gt;페이지&amp;nbsp;로드&amp;nbsp;시&amp;nbsp;클라이언트&amp;nbsp;측&amp;nbsp;자바스크립트&amp;nbsp;코드가&amp;nbsp;URL의&amp;nbsp;해시&amp;nbsp;값(#user=...)을&amp;nbsp;읽어&amp;nbsp;DOM에&amp;nbsp;반영하도록&amp;nbsp;되어&amp;nbsp;있다고&amp;nbsp;가정합니다.&lt;/li&gt;
&lt;li&gt;자바스크립트 코드가 URL 해시 값에 포함된 &amp;lt;script&amp;gt; 태그를 DOM에 추가하면서 악성 스크립트가 브라우저에서 실행됩니다.&lt;/li&gt;
&lt;li&gt;결과적으로 alert('DOM XSS')가 실행되어 경고창이 뜨게 됩니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1727452031229&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;URL: http://bigdwarf.blog#user=&amp;lt;script&amp;gt;alert('DOM 안녕하세요.')&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1727452873145&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script&amp;gt;
  window.onload = function() {
    // URL의 해시(#) 부분을 가져와서 userName이라는 ID를 가진 요소에 삽입
    var userInput = window.location.hash.substring(1);
    document.getElementById(&quot;userName&quot;).innerHTML = userInput;
  };
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. XSS(Cross-Site Scripting) 방어 기법&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.1 입력 검증 및 필터링&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자 입력을 받는 모든 곳에서 입력값을 철저히 검증하고 필터링해야 합니다. 필터링에는 화이트리스트 기반 접근 방식이 가장 효과적입니다. 예를 들어 사용자 이름에는 알파벳과 숫자만 허용하는 정규 표현식을 사용할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1727452238466&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function validateInput(input) {
  // 사용자 이름은 알파벳과 숫자만 허용
  var regex = /^[a-zA-Z0-9]+$/;
  if(!regex.test(input)) {
    throw new Error('Invalid input');
  }
  return input;
}&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;또한,&amp;nbsp;HTML&amp;nbsp;특수&amp;nbsp;문자를&amp;nbsp;이스케이프 하여&amp;nbsp;스크립트가&amp;nbsp;실행되지&amp;nbsp;않도록&amp;nbsp;해야&amp;nbsp;합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1727452486666&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function escapeHTML(str) {
  return str.replace(/[&amp;amp;&amp;lt;&amp;gt;&quot;']/g, function(match) {
    return {
      '&amp;amp;': '&amp;amp;amp;',
      '&amp;lt;': '&amp;amp;lt;',
      '&amp;gt;': '&amp;amp;gt;',
      '&quot;': '&amp;amp;quot;',
      &quot;'&quot;: '&amp;amp;#39;'
    }[match];
  });
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.2 출력 인코딩&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버에서 동적으로 생성된 콘텐츠를 클라이언트에 출력할 때는 반드시 적절한 인코딩을 적용해야 합니다. 예를 들어 HTML 콘텐츠를 출력할 때는 아래와 같은 방식으로 인코딩할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1727452507413&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function encodeForHTML(content) {
  return content.replace(/&amp;amp;/g, '&amp;amp;amp;')
                .replace(/&amp;lt;/g, '&amp;amp;lt;')
                .replace(/&amp;gt;/g, '&amp;amp;gt;')
                .replace(/&quot;/g, '&amp;amp;quot;')
                .replace(/'/g, '&amp;amp;#39;');
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이와 같은 방식으로 자바스크립트, CSS, URL 등의 다른 컨텍스트에서도 각각 적절한 인코딩 방식을 적용해야 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.3 Content&amp;nbsp;Security&amp;nbsp;Policy&amp;nbsp;(CSP)&amp;nbsp;사용&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CSP는 스크립트 소스, 스타일시트 소스, 이미지 소스 등을 제어하여 XSS 공격을 방지할 수 있는 강력한 도구입니다. 기본적으로 신뢰할 수 있는 소스만 실행하도록 제한할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1727452316915&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Content-Security-Policy: default-src 'self'; script-src 'self' https://bigdwarf.blog;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 정책은 스크립트가 'self' (현재 도메인)와 https://bigdwarf.blog에서만 로드될 수 있도록 허용합니다.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.4 &lt;b&gt;HttpOnly 쿠키 사용&lt;/b&gt; &lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;쿠키에&amp;nbsp;HttpOnly&amp;nbsp;속성을&amp;nbsp;추가하면&amp;nbsp;클라이언트&amp;nbsp;측&amp;nbsp;스크립트에서&amp;nbsp;쿠키에&amp;nbsp;접근할&amp;nbsp;수&amp;nbsp;없게&amp;nbsp;됩니다.&amp;nbsp;이로&amp;nbsp;인해&amp;nbsp;XSS&amp;nbsp;공격으로부터&amp;nbsp;세션&amp;nbsp;쿠키가&amp;nbsp;보호됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1727452585948&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Set-Cookie: sessionId=abc123; HttpOnly; Secure; SameSite=Strict;&lt;/code&gt;&lt;/pre&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;HttpOnly&lt;/b&gt;: 자바스크립트에서 쿠키 접근을 차단합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Secure&lt;/b&gt;: HTTPS를 통해서만 쿠키가 전송됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;SameSite=Strict&lt;/b&gt;: 동일한 사이트에서만 쿠키가 전송되도록 제한합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.5 그 외 여러 방법&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;템플릿&amp;nbsp;엔진&amp;nbsp;사용&lt;/b&gt;:&amp;nbsp;템플릿&amp;nbsp;엔진(예:&amp;nbsp;Thymeleaf,&amp;nbsp;Handlebars&amp;nbsp;등)을&amp;nbsp;사용할&amp;nbsp;때&amp;nbsp;기본적으로&amp;nbsp;XSS&amp;nbsp;공격을&amp;nbsp;예방하는&amp;nbsp;메커니즘이&amp;nbsp;적용되는&amp;nbsp;점을&amp;nbsp;설명할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;프레임워크&amp;nbsp;레벨&amp;nbsp;보안&amp;nbsp;기능&lt;/b&gt;:&amp;nbsp;다양한&amp;nbsp;웹&amp;nbsp;프레임워크(Spring,&amp;nbsp;Django&amp;nbsp;등)에서&amp;nbsp;제공하는&amp;nbsp;기본적인&amp;nbsp;XSS&amp;nbsp;방어&amp;nbsp;기능에&amp;nbsp;대해&amp;nbsp;설명하고,&amp;nbsp;이러한&amp;nbsp;기능을&amp;nbsp;활성화하는&amp;nbsp;방법을&amp;nbsp;다룰&amp;nbsp;수&amp;nbsp;있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;도구를&amp;nbsp;사용한&amp;nbsp;정적&amp;nbsp;분석&lt;/b&gt;:&amp;nbsp;SonarQube,&amp;nbsp;Fortify&amp;nbsp;같은&amp;nbsp;정적&amp;nbsp;분석&amp;nbsp;도구를&amp;nbsp;사용하여&amp;nbsp;코드에서&amp;nbsp;잠재적인&amp;nbsp;XSS&amp;nbsp;취약점을&amp;nbsp;탐지하는&amp;nbsp;방법을&amp;nbsp;소개할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;보안&amp;nbsp;테스트&lt;/b&gt;:&amp;nbsp;OWASP&amp;nbsp;ZAP,&amp;nbsp;Burp&amp;nbsp;Suite와&amp;nbsp;같은&amp;nbsp;도구를&amp;nbsp;사용해&amp;nbsp;XSS&amp;nbsp;취약점을&amp;nbsp;스캔하고&amp;nbsp;제거하는&amp;nbsp;방법을&amp;nbsp;설명할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 마무리&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서&amp;nbsp;설명한&amp;nbsp;방법들은&amp;nbsp;XSS&amp;nbsp;공격을&amp;nbsp;방지하는&amp;nbsp;데&amp;nbsp;있어&amp;nbsp;강력한&amp;nbsp;방어&amp;nbsp;수단이&amp;nbsp;될&amp;nbsp;수&amp;nbsp;있으며,&amp;nbsp;이를&amp;nbsp;통해&amp;nbsp;여러분의&amp;nbsp;웹&amp;nbsp;애플리케이션을&amp;nbsp;보다&amp;nbsp;안전하게&amp;nbsp;보호할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;하지만&amp;nbsp;보안은&amp;nbsp;한&amp;nbsp;번의&amp;nbsp;조치로&amp;nbsp;끝나는&amp;nbsp;것이&amp;nbsp;아니라,&amp;nbsp;지속적인&amp;nbsp;점검과&amp;nbsp;개선이&amp;nbsp;필요한&amp;nbsp;과정입니다.&amp;nbsp;따라서&amp;nbsp;정기적으로&amp;nbsp;보안&amp;nbsp;테스트를&amp;nbsp;실시하고,&amp;nbsp;최신&amp;nbsp;보안&amp;nbsp;동향을&amp;nbsp;파악하여&amp;nbsp;꾸준히&amp;nbsp;웹&amp;nbsp;애플리케이션의&amp;nbsp;보안을&amp;nbsp;강화하는&amp;nbsp;노력이&amp;nbsp;필요합니다.&amp;nbsp;XSS&amp;nbsp;공격에&amp;nbsp;대한&amp;nbsp;철저한&amp;nbsp;대비를&amp;nbsp;통해,&amp;nbsp;신뢰할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;안전한&amp;nbsp;웹&amp;nbsp;환경을&amp;nbsp;구축하시기&amp;nbsp;바랍니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>지식/Web</category>
      <category>Cross-Site Scripting</category>
      <category>XSS</category>
      <category>웹 취약점</category>
      <category>웹보안</category>
      <category>자바스크립트 보안</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/32</guid>
      <comments>https://bigdwarf.tistory.com/32#entry32comment</comments>
      <pubDate>Sat, 28 Sep 2024 01:09:06 +0900</pubDate>
    </item>
    <item>
      <title>나의 홈서버 구축 후 현재까지</title>
      <link>https://bigdwarf.tistory.com/31</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;2~3년 전, 결혼한 지 얼마 되지 않고 용돈으로 생활할 시기에 평소 서버와 개발공부할 겸 홈서버용 PC를 가지고 싶다는 생각을 가지고 있었다. 당시에 서버용도로 PC를 하나 살까 고민하던 찰나에 집 한구석에 자리 잡고 있던 시놀로지 NAS가 생각났다. 그렇게 NAS를 바라보며 고민에 빠지며 &amp;lsquo;이걸로 활용해 볼까?&amp;rsquo; 생각했지만 NAS의 사양은 그리 좋지 않았고 무엇보다도 중요한 자료들이 잔뜩 들어 있어 함부로 실험대상으로 삼기엔 너무나도 아까웠다. 그렇게 고민하던 중 1개월 채 되지도 않던 어느 날 우연히 유튜브를 보다가 마치 운명처럼 한 테크 유튜버의 새 영상을 보게 되는데...?&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=ZNC8XBda3qI&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/NYQig/hyW6Ai58cK/66YfNUK0AGX5krN7KNLR01/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;15만원짜리 16코어 CPU로 자작 나스 만들었습니다. 영상 올려주실 분?&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/ZNC8XBda3qI&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;뻘짓연구소 자작나스 영상&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;그렇게 운명처럼 보게 된 영상은 한 줄기 빛이었다. 영상 초반, 메인보드, CPU, 그리고 램을 포함해 겨우 15만 원이라는 가격이 눈에 들어왔고 더욱 놀라운 건 이 CPU가 비록 14nm 브로드웰 아키텍처로 당시에도 다소 오래된 모델이었지만 무려 16 코어 32 스레드를 자랑하는 것이었다. 당시 돈이 없던 내게 이 영상은 마치 어두운 터널 끝에서 반짝이는 희망의 빛처럼 느껴졌고 결국 타오바오를 통해 이 부품을 직구를 했고 그렇게 부품을 차곡차곡 모으다 보니 얼마 지나지 않아 아래의 표처럼 홈서버용 PC의 모든 부품을 모으는 데 성공했다. 대략 40만 원 정도 들인 것 같다.&lt;/p&gt;
&lt;figure data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;007&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/007.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/007.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 108px;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt;내용&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;CPU&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;Intel Xeon D-1581&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;메인보드&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;HSGM- D1581_R3 (제조사 : 중국)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;램&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;64GB RAM DDR3L 16GB x2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;파워&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;MegaMax 500W 80PLUS STANDARD ATX ZM500-TX2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;SSD&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;SSD : 500GB x 1 / HDD : 4TB x 1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;마침내 모든 부품이 배송되었고 기쁜 마음으로 조립을 시작 홈서버용 PC를 조립하고 16 코어 32 스레드나 되는 자원을 나눠 사용할 수 있도록 ESXi 6.7을 설치를 진행했다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;그러나....&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDTDQa/btsJMiPNAGW/ICmkNxEoQ0q3fFT4LmjT8K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDTDQa/btsJMiPNAGW/ICmkNxEoQ0q3fFT4LmjT8K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDTDQa/btsJMiPNAGW/ICmkNxEoQ0q3fFT4LmjT8K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDTDQa%2FbtsJMiPNAGW%2FICmkNxEoQ0q3fFT4LmjT8K%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1440&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제가 발생했다. 설치 과정 중 화면은 그대로 프리징 현상처럼 멈춰버린 것!&amp;nbsp; 혹시나 하는 마음에 윈도우&amp;nbsp;설치도 시도해 봤지만 똑같이 설치 과정에서 멈춰버리는 것이다. 문제를 해결하기 위해 메인보드에 Q-CODE도 확인해 보고 재조립도 해보고 램을 다른 것으로 교체해 보고 HDD도 다른 것을 사용해 보는 등 여러 가지 방법을 시도했지만 문제는 해결되지 않았다. 바이오스에서는 램 SSD, HDD, USB 모두 잘 인식되었지만 OS 설치 시마다 프리징 현상이 발생하는 문제는 끝내 해결되지 않았다. 결국 문제를 해결하지 못한 채 포기했다. 내 생각에는 메인보드에 문제가 있지 않았나 싶다. 그렇게 구매한 부품들은 창고행이 돼버릴 뻔했지만 며칠 안 돼서 마침 아버지가 집에 데스크탑이 필요하다고 컴퓨터 좀 알아봐 달라고 연락이 왔다. 아버지께 집에 남는 부품이 있으니 조립해서 드린다고 말씀드리고 당근마켓에서 CPU와 메인보드 세트를 구매하고 조립해서 윈도우까지 설치해서 아버지께 드렸다. 그 과정에서 수고비로 용돈 하라고 하시면서 30만 원을 받았다. 근데 30만 원이 생기니까. 다시 홈서버용 PC를 구매하기 위해 다시 검색을 했다. ㅋㅋㅋㅋ 그렇게 찾던 중에 컴퓨존에서 핫딜로 나온 사무용 PC를 발견!!!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZBNLe/btsJM5I9iD4/ERw7U6ki35lcO48XCaqBa1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZBNLe/btsJM5I9iD4/ERw7U6ki35lcO48XCaqBa1/img.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;856&quot; style=&quot;width: 43.8634%;&quot; data-is-animation=&quot;false&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZBNLe/btsJM5I9iD4/ERw7U6ki35lcO48XCaqBa1/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZBNLe%2FbtsJM5I9iD4%2FERw7U6ki35lcO48XCaqBa1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;856&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqK25w/btsJNvniiEU/XE7yiCs06rhJe8NfYOBFn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqK25w/btsJNvniiEU/XE7yiCs06rhJe8NfYOBFn0/img.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;683&quot; style=&quot;width: 54.9738%;&quot; data-is-animation=&quot;false&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqK25w/btsJNvniiEU/XE7yiCs06rhJe8NfYOBFn0/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqK25w%2FbtsJNvniiEU%2FXE7yiCs06rhJe8NfYOBFn0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;683&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이 사양은 서버용으로도 충분히 적합하다고 판단돼서 30만 원과 추가적인 지출을 합쳐 PC를 바로 구매했고 PC가 도착하자마자 집에 있던 RAM과 SSD, HDD를 추가했다. 램은 64GB로 증설했고 SSD는 1TB와 2TB를 그리고 HDD 4TB 각각 하나씩 추가해 저장 공간을 넉넉하게 업그레이드했고 후에 조립된 홈서버 PC에 ESXi 대신 오픈소스 가상화 플랫폼인 Proxmox를 설치하기로 결정했다. Proxmox는 무료이면서도 강력한 기능을 제공해 홈서버를 운영하는 데 최적의 선택이었고 설치 과정은 문제없었고 드디어 첫 홈서버 컴퓨터가 완성되었다!!!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wymAr/btsJMy5V0XF/ZHY39kVUY6FjV3WjcBAj21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wymAr/btsJMy5V0XF/ZHY39kVUY6FjV3WjcBAj21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wymAr/btsJMy5V0XF/ZHY39kVUY6FjV3WjcBAj21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwymAr%2FbtsJMy5V0XF%2FZHY39kVUY6FjV3WjcBAj21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;674&quot; height=&quot;964&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 꿈꿨던 홈서버와 서버 및 개발 공부를 다양한 프로젝트들을 실현하면서 데이터 백업부터 가상 머신 관리 그리고 개발 환경 구축까지 이 서버를 통해 다양한 실험과 학습을 진행할 수 있게 되었다.&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇게 첫 홈서버 컴퓨터를 완성한 이후, 2년의 시간이 흘렀다. 이 기간 동안 서버는 워드프레스와 라이믹스 블로그 서버가 되고 또 게임서버가 되면서 다양한 프로젝트와 실험을 뒷받침하며 충실히 서버의 역할을 다해주었다. 하지만 어느 날 서버에서 이상한 소리가 들리기 시작했다. 고주파음이 들려왔고 그 원인은 다름 아닌 HDD 였다. 어차피 2년 정도 됐기도 했고 컴퓨터 내부 청소와 HDD 교체할 겸 서버 백업 하고 난 뒤 안전하게 종료하고 컴퓨터를 꺼냈다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NC3ow/btsJLQsXvBW/CQHIeGpPvCEfYrBNVniZik/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NC3ow/btsJLQsXvBW/CQHIeGpPvCEfYrBNVniZik/img.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot; style=&quot;width: 49.4186%;&quot; data-is-animation=&quot;false&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NC3ow/btsJLQsXvBW/CQHIeGpPvCEfYrBNVniZik/img.jpg&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNC3ow%2FbtsJLQsXvBW%2FCQHIeGpPvCEfYrBNVniZik%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DYr74/btsJMjupVvK/WIxtrkGoTBkEvZK46oef50/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DYr74/btsJMjupVvK/WIxtrkGoTBkEvZK46oef50/img.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot; style=&quot;width: 49.4186%;&quot; data-is-animation=&quot;false&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DYr74/btsJMjupVvK/WIxtrkGoTBkEvZK46oef50/img.jpg&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDYr74%2FbtsJMjupVvK%2FWIxtrkGoTBkEvZK46oef50%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;사진으로 봤을때 먼지가 많이 없어 보이는데 정말 많았다. 고주파 소리가 나던 HDD 탈거하고 대신 SSD를 2TB로 업그레이드해줬다. 그리고 먼지 청소를 위해 부모님 댁으로 가서 컴프레서를 사용해 먼지를 털어냈고 집에 와서 Promox를 재설치해주었다. 백업한 데이터는 현재로선 티스토리 블로그로 옮겼기 때문에 굳이 복구시키지 않았다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://bigdwarf.blog/27&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.09.12 - [서버/Hypervisor] - Proxmox 설치 및 초기 설정&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figure id=&quot;og_1728615114414&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Proxmox 설치 및 초기 설정&quot; data-og-description=&quot;1. 들어가며 개인 서버 및 공부 용도로 현재 사용 중인 가상화 서비스이며 서버 재설치 겸 다시 정리하는 글1.1 Proxmox 란?데비안을&amp;nbsp;베이스로 하는&amp;nbsp;오픈소스&amp;nbsp;Type1&amp;nbsp;하이퍼바이저&amp;nbsp;운영체제로,&amp;nbsp;&quot; data-og-host=&quot;bigdwarf.blog&quot; data-og-source-url=&quot;https://bigdwarf.blog/27&quot; data-og-url=&quot;https://bigdwarf.blog/27&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cHDYbf/hyXd3ZW67p/nkS9ArmrGDktTRgK2XeHe1/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640,https://scrap.kakaocdn.net/dn/b61wbC/hyXd3r6OPx/qjheYMJkKhemc5KIJsnm5K/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640,https://scrap.kakaocdn.net/dn/eA6bn/hyXhWLDNE1/mXDSOKnDX6mK6MKtM8kKlk/img.png?width=1275&amp;amp;height=798&amp;amp;face=0_0_1275_798&quot;&gt;&lt;a href=&quot;https://bigdwarf.blog/27&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://bigdwarf.blog/27&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cHDYbf/hyXd3ZW67p/nkS9ArmrGDktTRgK2XeHe1/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640,https://scrap.kakaocdn.net/dn/b61wbC/hyXd3r6OPx/qjheYMJkKhemc5KIJsnm5K/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640,https://scrap.kakaocdn.net/dn/eA6bn/hyXhWLDNE1/mXDSOKnDX6mK6MKtM8kKlk/img.png?width=1275&amp;amp;height=798&amp;amp;face=0_0_1275_798');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Proxmox 설치 및 초기 설정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. 들어가며 개인 서버 및 공부 용도로 현재 사용 중인 가상화 서비스이며 서버 재설치 겸 다시 정리하는 글1.1 Proxmox 란?데비안을&amp;nbsp;베이스로 하는&amp;nbsp;오픈소스&amp;nbsp;Type1&amp;nbsp;하이퍼바이저&amp;nbsp;운영체제로,&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;bigdwarf.blog&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 매년 여름 한두번 정전 일어나는 경우가 있어 NAS에 중요한 데이터가 날아가지 않도록 UPS까지 설치해서 정전 시 자동으로 종료되도록 설정도 해놨다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1209&quot; data-origin-height=&quot;1555&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfaDdZ/btsJMw1qk75/gj4H3pEN3BbM3r8zdAG8KK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfaDdZ/btsJMw1qk75/gj4H3pEN3BbM3r8zdAG8KK/img.png&quot; data-alt=&quot;모델 Back-UPS ES 550&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfaDdZ/btsJMw1qk75/gj4H3pEN3BbM3r8zdAG8KK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfaDdZ%2FbtsJMw1qk75%2Fgj4H3pEN3BbM3r8zdAG8KK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1209&quot; height=&quot;1555&quot; data-origin-width=&quot;1209&quot; data-origin-height=&quot;1555&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;모델 Back-UPS ES 550&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재까지 홈 네트워크 구성도이며, 여기서 변한 부분도 있다. 다음에 해야될 일은 Proxmox Backup 처리할 예정이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1501&quot; data-origin-height=&quot;821&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b63GCj/btsJLXFnKuH/ATpYppSAwMkwck0XGJ59V1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b63GCj/btsJLXFnKuH/ATpYppSAwMkwck0XGJ59V1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b63GCj/btsJLXFnKuH/ATpYppSAwMkwck0XGJ59V1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb63GCj%2FbtsJLXFnKuH%2FATpYppSAwMkwck0XGJ59V1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1501&quot; height=&quot;821&quot; data-origin-width=&quot;1501&quot; data-origin-height=&quot;821&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기타/일상</category>
      <category>HomeServer</category>
      <category>PROXMOX</category>
      <category>server</category>
      <category>서버</category>
      <category>프록시모스</category>
      <category>홈서버</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/31</guid>
      <comments>https://bigdwarf.tistory.com/31#entry31comment</comments>
      <pubDate>Thu, 26 Sep 2024 03:41:05 +0900</pubDate>
    </item>
    <item>
      <title>Linux에서 CUBRID 10.1 HA 구성</title>
      <link>https://bigdwarf.tistory.com/25</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목을-입력해주세요_-002.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnIfGR/btsJwWN3dgF/h7k9KSaUzXqugJO5HEkIQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnIfGR/btsJwWN3dgF/h7k9KSaUzXqugJO5HEkIQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnIfGR/btsJwWN3dgF/h7k9KSaUzXqugJO5HEkIQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnIfGR%2FbtsJwWN3dgF%2Fh7k9KSaUzXqugJO5HEkIQK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;640&quot; data-filename=&quot;제목을-입력해주세요_-002.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;a href=&quot;https://bigdwarf.blog/24&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.09.11 - [DBMS/Cubrid] - Linux에서 CUBRID 10.1 설치&lt;/a&gt;&lt;/blockquote&gt;
&lt;figure id=&quot;og_1728615059573&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Linux에서 CUBRID 10.1 설치&quot; data-og-description=&quot;1. 들어가며 CUBRID는&amp;nbsp;관계형&amp;nbsp;데이터베이스&amp;nbsp;관리&amp;nbsp;시스템의&amp;nbsp;이름이며,&amp;nbsp;오픈&amp;nbsp;소스&amp;nbsp;소프트웨어이다.&amp;nbsp;DBMS&amp;nbsp;엔진&amp;nbsp;부분은&amp;nbsp;아파치&amp;nbsp;라이선스&amp;nbsp;2.0&amp;nbsp;라이선스가&amp;nbsp;적용되고&amp;nbsp;인터페이스&amp;nbsp;부분은&amp;nbsp;BSD&quot; data-og-host=&quot;bigdwarf.blog&quot; data-og-source-url=&quot;https://bigdwarf.blog/24&quot; data-og-url=&quot;https://bigdwarf.blog/24&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/exvLSl/hyXd7BgJ3b/DOOIbyWZdHKftoobEzFuVk/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640,https://scrap.kakaocdn.net/dn/En3Io/hyXeco4CRs/nL5cPnG6zYzKuxiloXIRU1/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640,https://scrap.kakaocdn.net/dn/mxtKG/hyXd873EAJ/GPmTKJFuUmFOCKulkamjgK/img.png?width=670&amp;amp;height=710&amp;amp;face=0_0_670_710&quot;&gt;&lt;a href=&quot;https://bigdwarf.blog/24&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://bigdwarf.blog/24&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/exvLSl/hyXd7BgJ3b/DOOIbyWZdHKftoobEzFuVk/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640,https://scrap.kakaocdn.net/dn/En3Io/hyXeco4CRs/nL5cPnG6zYzKuxiloXIRU1/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640,https://scrap.kakaocdn.net/dn/mxtKG/hyXd873EAJ/GPmTKJFuUmFOCKulkamjgK/img.png?width=670&amp;amp;height=710&amp;amp;face=0_0_670_710');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Linux에서 CUBRID 10.1 설치&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. 들어가며 CUBRID는&amp;nbsp;관계형&amp;nbsp;데이터베이스&amp;nbsp;관리&amp;nbsp;시스템의&amp;nbsp;이름이며,&amp;nbsp;오픈&amp;nbsp;소스&amp;nbsp;소프트웨어이다.&amp;nbsp;DBMS&amp;nbsp;엔진&amp;nbsp;부분은&amp;nbsp;아파치&amp;nbsp;라이선스&amp;nbsp;2.0&amp;nbsp;라이선스가&amp;nbsp;적용되고&amp;nbsp;인터페이스&amp;nbsp;부분은&amp;nbsp;BSD&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;bigdwarf.blog&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; High Availability(HA)란, 하드웨어, 소프트웨어, 네트워크 등에 장애가 발생해도 지속적인 서비스를 제공하는 기능이다. 이 기능은 하루 24시간 1년 내내 서비스를 제공해야 하는 네트워킹 컴퓨팅 부분에서 필수적인 요소이다. HA 시스템은 두 대 이상의 서버 시스템으로 구성하여 시스템 구성 요소 중의 한 요소에 장애가 발생해 서비스를 중단 없이 제공할 수 있다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 큐브리드 설치&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://bigdwarf.blog/24&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.09.11 - [DBMS/Cubrid] - Linux에서 CUBRID 10.1 설치&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;2개의 서버를 준비해 주시고 위 링크 목차 3번까지 동일하게 진행하시고 오시면 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. HA 구성 전 주의사항 및 호스트 등록&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.1 HA 구성 전 주의사항&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;복제가 정상적으로 수행되기 위해서는 테이블을 생성할 때 기본키(primary key)가 반드시 존재해야 한다는 점을 주의&lt;/li&gt;
&lt;li&gt;파라미터에서 명시한 멤버 노드들의 호스트 이름은 IP로 대체할 수 없으며, 사용자는 반드시&lt;code&gt;/etc/hosts&lt;/code&gt;에 등록되어 있는 것을 사용&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.2 호스트 등록 작업&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1번 Master 서버 호스트명(master)&amp;nbsp;(IP : 192.168.0.2) / 2번 Slave 서버 호스트명(slave)&amp;nbsp;(IP : 192.168.0.3)&lt;span&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;1번 Master 호스트명 등록&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725988893730&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#호스트네임 확인
hostname
master&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725988900555&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# root 계정으로 변경 후 아래 내용에 호스트 이름을 등록해준다.
su -
vi /etc/hosts&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725988907732&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.2 master
192.168.0.3 slave&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;2번 Slave 서버 호스트명 등록&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725988985744&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#호스트네임 확인
hostname
slave&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725988992847&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# root 계정으로 변경 후 아래 내용에 호스트 이름을 등록해준다.
su -
vi /etc/hosts&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725989001764&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.2 master
192.168.0.3 slave&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 데이터베이스 생성&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CUBRID HA에 포함할 데이터베이스를 모든 CUBRID HA 노드에서 동일하게 생성한다. 데이터베이스 생성 옵션은 필요에 따라 적절히 변경&lt;/li&gt;
&lt;li&gt;아래 내용 1번&amp;nbsp;Master&amp;nbsp;서버와&amp;nbsp;2번&amp;nbsp;Slave&amp;nbsp;서버&amp;nbsp;동일한&amp;nbsp;DB&amp;nbsp;생성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725989070257&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cd&amp;nbsp;$CUBRID_DATABASES
mkdir&amp;nbsp;testdb
cd&amp;nbsp;testdb
mkdir&amp;nbsp;log
cubrid&amp;nbsp;createdb&amp;nbsp;-L&amp;nbsp;./log&amp;nbsp;testdb&amp;nbsp;en_US
Creating&amp;nbsp;database&amp;nbsp;with&amp;nbsp;512.0M&amp;nbsp;size&amp;nbsp;using&amp;nbsp;locale&amp;nbsp;en_US.&amp;nbsp;The&amp;nbsp;total&amp;nbsp;amount&amp;nbsp;of&amp;nbsp;disk&amp;nbsp;space&amp;nbsp;needed&amp;nbsp;is&amp;nbsp;1.5G.

CUBRID&amp;nbsp;10.1&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 큐브리드 서버 설정&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.1 큐브리드 cubrid.conf 수정&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;$CUBRID/conf/cubrid.conf&lt;/code&gt;의&amp;nbsp;&lt;code&gt;ha_mode&lt;/code&gt;를 모든 HA 노드에 동일하게 설정한다. 특히, 로깅 관련 파라미터인&amp;nbsp;&lt;code&gt;log_max_archives&lt;/code&gt;와&lt;code&gt;force_remove_log_archives&lt;/code&gt;, HA 관련 파라미터인&lt;code&gt;ha_mode&lt;/code&gt;의 설정에 주의한다.&lt;/li&gt;
&lt;li&gt;아래 내용을 1번 Master 서버와 2번 Slave 서버 동일하게 수정&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725989162953&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vi $CUBRID/conf/cubrid.conf&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725989170386&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Service parameters
[service]
service=server,broker,manager

# Common section
[common]
service=server,broker,manager

# Server parameters
server=testdb
data_buffer_size=512M
log_buffer_size=4M
sort_buffer_size=2M
max_clients=100
cubrid_port_id=1523
db_volume_size=512M
log_volume_size=512M

# HA 구성 시 추가 (Logging parameters)
log_max_archives=100
force_remove_log_archives=no

# HA 구성 시 추가 (HA 모드)
ha_mode=on&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;만약 Master / Slave 구성을 해야 될 DB가 더 존재할 경우&amp;nbsp;&lt;code&gt;$CUBRID/conf/cubrid.conf&lt;/code&gt;&amp;nbsp;에서 아래 내용 수정&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725989210259&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#기본으로 설정되어있어여됨
ha_mode=on

# HA 구성 시 추가 (HA 모드)
[@이중화할 DB명1]
ha_mode=on
[@이중화할 DB명2]
ha_mode=on

#예시
[@master]
ha_mode=on
[@slave]
ha_mode=on&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.2 큐브리드 cubrid_ha.conf 수정&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;$CUBRID/conf/cubrid_ha.conf&lt;/code&gt;의&lt;code&gt;ha_port_id&lt;/code&gt;,&amp;nbsp;&lt;code&gt;ha_node_list&lt;/code&gt;,&amp;nbsp;&lt;code&gt;ha_db_list&lt;/code&gt;를 모든 HA 노드에 동일하게 설정한다. 다음 위에서 설정한 마스터 노드의 호스트 이름(master), 슬레이브 노드의 호스트 이름(slave)으로 설정&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;아래 내용을 1번&amp;nbsp;Master&amp;nbsp;서버와&amp;nbsp;2번&amp;nbsp;Slave&amp;nbsp;서버&amp;nbsp;동일하게 수정&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725989281144&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vi $CUBRID/conf/cubrid_ha.conf&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725989287384&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# ha_node_list=(서버계정명)@(마스터서버호스트명):(슬레이브서버호스트명)
[common]
ha_port_id=59901
ha_node_list=cubrid@master:slave
ha_db_list=testdb
ha_copy_sync_mode=sync:sync
ha_apply_max_mem_size=500&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.2 큐브리드 databases.txt 수정&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;$CUBRID_DATABASES/databases.txt&lt;/code&gt;(&lt;code&gt;$CUBRID_DATABASES&lt;/code&gt;가 설정 안 된 경우&lt;code&gt;$CUBRID/databases/databases.txt&lt;/code&gt;)의 db-host에 마스터 노드와 슬레이브 노드의 호스트 이름을 설정(master:slave)한다.&lt;/li&gt;
&lt;li&gt;아래 내용을 1번&amp;nbsp;Master&amp;nbsp;서버와&amp;nbsp;2번&amp;nbsp;Slave&amp;nbsp;서버&amp;nbsp;동일하게 수정&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725989442197&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vi $CUBRID_DATABASES/databases.txt
# 이중화 시킬 db의 db-host 명을 localhost -&amp;gt; master:slave 변경&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725989448835&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#db-name vol-path db-host log-path lob-base-path
testdb          /home/cubrid/CUBRID/databases/testdb    master:slave       /home/cubrid/CUBRID/databases/testdb/log        file:/home/cubrid/CUBRID/databases/testdb/lob&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. CUBRID HA 시작 및 확인&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6.1 CUBRID HA 시작&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CUBRID HA 그룹 내의 각 노드에서&amp;nbsp;&lt;code&gt;cubrid heartbeat start&lt;/code&gt;를 수행한다.&amp;nbsp;&lt;code&gt;cubrid heartbeat start&lt;/code&gt;&amp;nbsp;를 가장 먼저 수행한 노드가 마스터 노드가 되므로 유의해야 한다. 이하의 예에서 마스터 노드의 호스트 이름은 &lt;i&gt;master,&lt;/i&gt;&amp;nbsp;슬레이브 노드의 호스트 이름은 &lt;i&gt;slave&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 마스터 노드&lt;/p&gt;
&lt;pre id=&quot;code_1725989516517&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cubrid&amp;nbsp;heartbeat&amp;nbsp;start&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 슬레이브 노드&lt;/p&gt;
&lt;pre id=&quot;code_1725989557760&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cubrid heartbeat start&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6.2 CUBRID HA 상태 확인&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CUBRID HA 그룹 내의 각 노드에서&amp;nbsp;&lt;code&gt;cubrid heartbeat status&lt;/code&gt;를 수행하여 구성 상태를 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 마스터 서버 확인&lt;/p&gt;
&lt;pre id=&quot;code_1725989599957&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cubrid heartbeat status&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725989608890&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@ cubrid heartbeat list
 HA-Node Info (current master, state master)
   Node slave (priority 2, state slave)
   Node master (priority 1, state master)

 HA-Process Info (master 1844, state slave)
 Applylogdb testdb@localhost:/home/cubrid/CUBRID/databases/testdb_slave (pid 9423, state registered)
 Copylogdb testdb@slave:/home/cubrid/CUBRID/databases/testdb_slave (pid 9418, state registered)
 Server testdb (pid 9306, state registered_and_active)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 슬레이브 서버 확인&lt;/p&gt;
&lt;pre id=&quot;code_1725989620516&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cubrid heartbeat status&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725989627663&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@ cubrid heartbeat list
 HA-Node Info (current slave, state slave)
   Node slave (priority 2, state slave)
   Node master (priority 1, state master)

 HA-Process Info (master 1844, state slave)
 Applylogdb testdb@localhost:/home/cubrid/CUBRID/databases/testdb_master (pid 2428, state registered)
 Copylogdb testdb@master:/home/cubrid/CUBRID/databases/testdb_master (pid 2424, state registered)
 Server testdb (pid 2137, state registered_and_standby)&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CUBRID HA 그룹 내의 각 노드에서&amp;nbsp;&lt;code&gt;cubrid changemode&lt;/code&gt;&amp;nbsp;유틸리티를 이용하여 서버의 상태를 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 마스터 서버 확인&lt;/p&gt;
&lt;pre id=&quot;code_1725989673999&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cubrid changemode testdb@localhost
The server 'testdb@localhost''s current HA running mode is active.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 슬레이브 서버 확인&lt;/p&gt;
&lt;pre id=&quot;code_1725989692923&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cubrid&amp;nbsp;changemode&amp;nbsp;testdb@localhost
The server 'testdb@localhost''s current HA running mode is standby.&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6.3 CUBRID HA 동작 여부 확인&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;마스터 노드의 액티브 서버에서 쓰기를 수행한 후 슬레이브 노드의 스탠바이 서버에 정상적으로 반영되었는지 확인&lt;/li&gt;
&lt;li&gt;&amp;nbsp;HA 환경에서 CSQL 인터프리터로 각 노드에 접속하려면, 데이터베이스 이름 뒤에 접속 대상 호스트 이름을 반드시 지정해야 한다(&amp;ldquo;@&amp;lt;호스트 이름&amp;gt;&amp;rdquo;). 호스트 이름을 localhost로 지정하면, 로컬 노드에 접속&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 마스터 서버&lt;/p&gt;
&lt;pre id=&quot;code_1725989734813&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;csql -u dba testdb@localhost -c &quot;create table abc(a int, b int, c int, primary key(a));&quot;
csql -u dba testdb@localhost -c &quot;insert into abc values (1,1,1);&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 슬레이브 서버&lt;/p&gt;
&lt;pre id=&quot;code_1725989746100&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;csql -u dba testdb@localhost -l -c &quot;select * from abc;&quot;
=== &amp;lt;Result of SELECT Command in Line 1&amp;gt; ===
&amp;lt;00001&amp;gt; a: 1
        b: 1
        c: 1&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 브로커 시작 및 확인&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;브로커는 JDBC나 CCI, PHP 등의 응용에서 접근하기 위해 사용하는 것이다. 따라서 간단한 서버 이중화 동작을 시험하고 싶다면 브로커를 시작할 필요 없이 서버 프로세스에 직접 접속하는 CSQL 인터프리터만 실행해서 확인할 수 있다. 브로커는&amp;nbsp;&lt;code&gt;cubrid broker start&lt;/code&gt;&amp;nbsp;를 실행하여 시작하고&amp;nbsp;&lt;code&gt;cubrid broker stop&lt;/code&gt;&amp;nbsp;을 실행하여 정지한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 마스터 서버&lt;/p&gt;
&lt;pre id=&quot;code_1725990053064&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cubrid broker start&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 슬레이브 서버&lt;/p&gt;
&lt;pre id=&quot;code_1725990070675&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cubrid broker start&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 응용 프로그램 설정(JDBC 연결)&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다양한 응용프로그램 설정이 존재한다. 큐브리드 공식 문서 통해서 확인&lt;/li&gt;
&lt;li&gt;필자는 JDBC 프로그램 예제로 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725990094585&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# DB 접근 방법
jdbc:CUBRID:192.168.0.2:33000:testdb:::?altHosts=192.168.0.3:33000&amp;amp;amp;rcTime=600&amp;amp;amp;charSet=utf-8
jdbc:CUBRID:[마스터IP]:[브로커포트]:[DB명]:::?altHosts=[슬래이브IP]:[브로커포트]&amp;amp;amp;rcTime=600&amp;amp;amp;charSet=utf-8&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725990102970&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 자바 스프링 log4j DB 설정
Globals.Url=jdbc:log4jdbc:cubrid:192.168.0.2:33000:testdb:::?altHosts=192.168.0.3:33000&amp;amp;amp;rcTime=600&amp;amp;amp;charSet=utf-8&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 마치며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더 궁금한 내용이 있으시면 CUBRID 공식 문서 확인하세요 :)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;[&lt;a style=&quot;color: #0070d1; text-align: center;&quot; title=&quot;CUBRID 공식 문서&quot; href=&quot;https://www.cubrid.org/manual/ko/10.1/&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;CUBRID 공식 문서&lt;/span&gt;&lt;/a&gt;]&lt;/p&gt;
&lt;figure id=&quot;og_1725990190460&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;CUBRID 10.1 사용자 매뉴얼 &amp;mdash; CUBRID 10.1.0 documentation&quot; data-og-description=&quot;CUBRID 10.1 사용자 매뉴얼 &amp;mdash; CUBRID 10.1.0 documentation. Quick Reference Table and Table of Contents.&quot; data-og-host=&quot;www.cubrid.org&quot; data-og-source-url=&quot;https://www.cubrid.org/manual/ko/10.1/&quot; data-og-url=&quot;https://www.cubrid.org/manual/ko/10.1/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.cubrid.org/manual/ko/10.1/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.cubrid.org/manual/ko/10.1/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;CUBRID 10.1 사용자 매뉴얼 &amp;mdash; CUBRID 10.1.0 documentation&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;CUBRID 10.1 사용자 매뉴얼 &amp;mdash; CUBRID 10.1.0 documentation. Quick Reference Table and Table of Contents.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.cubrid.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>데이터베이스/Cubrid</category>
      <category>cubrid</category>
      <category>db</category>
      <category>DBMS</category>
      <category>큐브리드</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/25</guid>
      <comments>https://bigdwarf.tistory.com/25#entry25comment</comments>
      <pubDate>Tue, 24 Sep 2024 03:44:35 +0900</pubDate>
    </item>
    <item>
      <title>Linux에서 CUBRID 10.1 설치</title>
      <link>https://bigdwarf.tistory.com/24</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목을-입력해주세요_-002.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQ4JDk/btsJxndizLc/drgwsAbVOvKRhOoD5bygEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQ4JDk/btsJxndizLc/drgwsAbVOvKRhOoD5bygEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQ4JDk/btsJxndizLc/drgwsAbVOvKRhOoD5bygEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQ4JDk%2FbtsJxndizLc%2FdrgwsAbVOvKRhOoD5bygEk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;640&quot; data-filename=&quot;제목을-입력해주세요_-002.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; CUBRID는&amp;nbsp;관계형&amp;nbsp;데이터베이스&amp;nbsp;관리&amp;nbsp;시스템의&amp;nbsp;이름이며,&amp;nbsp;오픈&amp;nbsp;소스&amp;nbsp;소프트웨어이다.&amp;nbsp;DBMS&amp;nbsp;엔진&amp;nbsp;부분은&amp;nbsp;아파치&amp;nbsp;라이선스&amp;nbsp;2.0&amp;nbsp;라이선스가&amp;nbsp;적용되고&amp;nbsp;인터페이스&amp;nbsp;부분은&amp;nbsp;BSD&amp;nbsp;라이선스가&amp;nbsp;적용되었으며,&amp;nbsp;국제&amp;nbsp;표준화&amp;nbsp;기구의&amp;nbsp;표준&amp;nbsp;구조화&amp;nbsp;조회&amp;nbsp;언어를&amp;nbsp;지원한다.&amp;nbsp;2008년&amp;nbsp;11월&amp;nbsp;CUBRID&amp;nbsp;2008&amp;nbsp;(CUBRID&amp;nbsp;8)이&amp;nbsp;출시되면서&amp;nbsp;오픈소스&amp;nbsp;DBMS로&amp;nbsp;전환되었으며,&amp;nbsp;최신&amp;nbsp;안정화&amp;nbsp;버전은&amp;nbsp;CUBRID&amp;nbsp;11.0이다.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. CUBRID 설치하기&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.1 설치 전 사전 점검&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;JRE 또는 JDK 1.6 이상 및&amp;nbsp;Linux 계열 64 Bit(Linux kernel 2.4 및 glibc 2.3.4 이상)&lt;/li&gt;
&lt;li&gt;glibc 버전&amp;nbsp;&lt;br /&gt;glibc 2.3.4 버전 이상만 지원한다. glibc 버전은 다음과 같은 방법으로 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725986628362&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;rpm -q glibc&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;32비트 또는 64비트&lt;br /&gt;10.0 이후 CUBRID는 64비트 버전만 지원한다. Linux버전은 다음과 같은 방법으로 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725986651524&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;uname -a
Linux host_name 2.6.18-53.1.14.el5xen #1 SMP Wed Mar 5 12:08:17 EST 2008 x86_64 x86_64 x86_64 GNU/Linux&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;추가로 설치할 라이브러리&lt;/li&gt;
&lt;li&gt;1.&amp;nbsp;Curses Library (rpm -q ncurses)&lt;br /&gt;2.&amp;nbsp;gcrypt Library (rpm -q libgcrypt)&lt;br /&gt;3.&amp;nbsp;stdc++ Library (rpm -q libstdc++)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/etc/hosts&lt;/code&gt; 파일에 호스트 이름과 IP 주소 매핑이 정상인지 확인하기&lt;br /&gt;호스트 이름과 이에 맞는 IP 주소가 비정상적으로 매핑되어 있으면 DB 서버를 구동할 수 없으므로, 정상적으로 매핑되어 있는지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725986735985&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vi /etc/hosts&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버 호스트명을 확인 후 호스트 이름을 등록 해줍니다. 차후 HA (Master,Slave)&amp;nbsp; 구성 시 설정할때 필요합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725986751774&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;hostname
cubrid&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725986758553&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.179 cubrid&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;java8 설치 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725986771304&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;yum list java*jdk-devel // 자바 패키지 목록 확인
java-1.8.0-openjdk-devel.x86_64                        1:1.8.0.402.b06-2.el9                        appstream
java-11-openjdk-devel.x86_64                           1:11.0.22.0.7-2.el9                          appstream 
java-17-openjdk-devel.x86_64                           1:17.0.10.0.7-2.el9                          appstream 
java-21-openjdk-devel.x86_64                           1:21.0.2.0.13-1.el9                          appstream

yum install java-1.8.0-openjdk-devel.x86_64 // 자바 1.8 설치&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.2 큐브리드 다운로드 및 설치&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;a style=&quot;color: #009a87;&quot; href=&quot;https://ftp.cubrid.org/CUBRID_Engine/&quot;&gt;https://ftp.cubrid.org/CUBRID_Engine/&lt;/a&gt;&amp;nbsp;&lt;/span&gt;다운로드 링크로 가서 자신이 설치 할 버전에 맞는 CUBRID를 다운로드&lt;/li&gt;
&lt;li&gt;설치하는 방법은 다양하게 있지만 쉘스크립트를 통해 설치 진행 궁금한사항은 큐브리드 매뉴얼 참고&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ftp.cubrid.org/CUBRID_Engine/10.1.8/CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64.sh&quot; data-cke-saved-href=&quot;https://ftp.cubrid.org/CUBRID_Engine/10.1.8/CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64.sh&quot;&gt;&lt;span style=&quot;color: #1abc9c;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64.sh&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&amp;nbsp;로 다운로드&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;710&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zhdpc/btsJx54jO9J/nlcnl9etwbcUUMN4oDNn2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zhdpc/btsJx54jO9J/nlcnl9etwbcUUMN4oDNn2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zhdpc/btsJx54jO9J/nlcnl9etwbcUUMN4oDNn2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fzhdpc%2FbtsJx54jO9J%2Fnlcnl9etwbcUUMN4oDNn2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;670&quot; height=&quot;710&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;710&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;저는 wget을 이용해 직접 서버에 다운로드&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725986871884&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;wget https://ftp.cubrid.org/CUBRID_Engine/10.1_latest/CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64.sh

# 파일 위치 (리눅스계정 : cubrid)
/home/cubrid/CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64.sh&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64.sh&lt;/code&gt; 파일 실행 권한 부여 및 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725986917365&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# .sh 파일 실행 권한 부여
chmod 755 CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64.sh

# .sh 실행
/home/cubrid/CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64.sh&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실행 후 아래 내용 확인 후 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725986929486&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 라이센스 동의
Do you accept the license? [yN]: y

# 설치될 디렉토리 선택 Y 선택 시 &quot;/home/cubrid/CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64&quot; 위치에 설치, N 선택 시 &quot;/home/cubrid&quot; 위치에 설치하게된다.
By default the CUBRID will be installed in:
  &quot;/home/cubrid/CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64&quot;
Do you want to include the subdirectory CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64?
Saying no will install in: &quot;/home/cubrid&quot; [Yn]: Y

Using target directory: /home/cubrid/CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64
# 동의하기
Since CUBRID broker and server versions should match, please make sure that you are running the same version if you operate them in separate machines.
Do you want to continue? [Yn] : Y&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치가 완료되면&amp;nbsp;&lt;code&gt;/home/cubrid/CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64&lt;/code&gt; 경로에 폴더에 설치됨&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 2.3 큐브리드 환경변수 설정&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치가 완료됬다면 &lt;code&gt;/home/cubrid&lt;/code&gt; 내에 &lt;code&gt;.cubrid.sh&lt;/code&gt; 파일이 생성됬는지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725987011674&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cd $HOME
ls -al
-rw-r--r--.  1 cubrid cubrid      339 Mar 19 11:27 .cubrid.csh
-rw-r--r--.  1 cubrid cubrid      370 Mar 19 12:35 .cubrid.sh&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64&lt;/code&gt; 폴더명을&amp;nbsp;&lt;code&gt;CUBRID&lt;/code&gt; 로 변경&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725987061596&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mv CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64 CUBRID&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;폴더명 변경으로&amp;nbsp;&lt;code&gt;.cubrid.sh&lt;/code&gt; 텍스트 편집기로 열어 아래 내용 수정&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725987123317&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vi /home/cubrid/.cubrid.sh&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725987130434&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 아래 CUBRID 경로 수정
#CUBRID=/home/cubrid/CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64
CUBRID=/home/cubrid/CUBRID
CUBRID_DATABASES=$CUBRID/databases
if [ &quot;x${LD_LIBRARY_PATH}x&quot; = xx ]; then
  LD_LIBRARY_PATH=$CUBRID/lib
else
  LD_LIBRARY_PATH=$CUBRID/lib:$LD_LIBRARY_PATH
fi
SHLIB_PATH=$LD_LIBRARY_PATH
LIBPATH=$LD_LIBRARY_PATH
PATH=$CUBRID/bin:$PATH
export CUBRID
export CUBRID_DATABASES
export LD_LIBRARY_PATH
export SHLIB_PATH
export LIBPATH
export PATH&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;cubrid.sh&lt;/code&gt; 수정이 완료 되고&amp;nbsp;설치 계정의 셸 로그인 스크립트에서 자동으로 호출하도록 &lt;code&gt;.bash_profile&lt;/code&gt;를 수정&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725987166602&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vi /home/cubrid/.bash_profile&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725987173659&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs
# 맨 아래에 추가
. /home/cubrid/.cubrid.sh&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;source 명령어를통해&amp;nbsp;수정된 내용을 적용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725987184475&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;source ~/.bash_profile&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;echo 명령어를 이용해 적용됬는지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725987195335&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;echo&amp;nbsp;$CUBRID
/home/cubrid/CUBRID&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. CUBRID 실행하기&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.1 큐브리드 실행&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;큐브리드를 실행 해준다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725987232635&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cubrid service start
@ cubrid master start
++ cubrid master start: success
@ cubrid broker start
++ cubrid broker start: success
@ cubrid manager server start
++ cubrid manager server start: success&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정상적으로 실행되는지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725987245948&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cubrid service status&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;cubrid service를 구동시킨 후 정상적으로 구동되었는지 grep으로 cub_* 프로세스들이 구동되어 있는지를 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725987269356&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ps -ef | grep cub_
cubrid     33239       1  0 09:30 pts/0    00:00:00 cub_master
cubrid     33242       1  0 09:30 ?        00:00:00 cub_broker
cubrid     33243       1  0 09:30 ?        00:00:00 query_editor_cub_cas_1
cubrid     33244       1  0 09:30 ?        00:00:00 query_editor_cub_cas_2
cubrid     33245       1  0 09:30 ?        00:00:00 query_editor_cub_cas_3
cubrid     33246       1  0 09:30 ?        00:00:00 query_editor_cub_cas_4
cubrid     33247       1  0 09:30 ?        00:00:00 query_editor_cub_cas_5
cubrid     33253       1  0 09:30 ?        00:00:00 cub_broker
cubrid     33254       1  0 09:30 ?        00:00:00 broker1_cub_cas_1
cubrid     33255       1  0 09:30 ?        00:00:00 broker1_cub_cas_2
cubrid     33256       1  0 09:30 ?        00:00:00 broker1_cub_cas_3
cubrid     33257       1  0 09:30 ?        00:00:00 broker1_cub_cas_4
cubrid     33258       1  0 09:30 ?        00:00:00 broker1_cub_cas_5
cubrid     33267       1  0 09:30 ?        00:00:00 cub_manager start
cubrid     33297   33145  0 09:30 pts/0    00:00:00 grep --color=auto cub_&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DB 별 큐브리드 실행/종료&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725987286765&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#실행
cubrid server start [디비명]
#종료
cubrid server stop [디비명]&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.2 큐브리드 오류 발생 시&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;큐브리드 실행 시 &quot;cubrid: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory&quot; 메세지가 뜨면 오류가 날 경우&lt;br /&gt;1. CUBRID는 ncurses library를 필요로하고 현재 빌드 환경에서 ncurses5를 사용하기 때문에 ncurses6를 사용하는 시스템에서는 &lt;b&gt;symbolic link&lt;/b&gt;를 생성 필요&lt;br /&gt;2.&amp;nbsp;보통은 &lt;code&gt;$CUBRID/lib&lt;/code&gt;에 &lt;b&gt;symbolic link&lt;/b&gt;를 만듭니다. 아래 명령어를 사용해&amp;nbsp;&lt;code&gt;$CUBRID/lib&lt;/code&gt; 폴더에&amp;nbsp;&lt;b&gt;symbolic link&lt;/b&gt; 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725987573284&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ln -s /lib64/libncurses.so.6 $CUBRID/lib/libncurses.so.5
ln -s /lib64/libform.so.6 $CUBRID/lib/libform.so.5
ln -s /lib64/libtinfo.so.6 $CUBRID/lib/libtinfo.so.5&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;$CUBRID/lib&lt;/code&gt; 폴더에 심볼릭 링크가 제대로 만들어졌는지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725987605483&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cd $CUBRID/lib
ls -al
lrwxrwxrwx.  1 cubrid cubrid       19 Mar 19 14:05 libform.so.5 -&amp;gt; /lib64/libform.so.6
lrwxrwxrwx.  1 cubrid cubrid       22 Mar 19 14:05 libncurses.so.5 -&amp;gt; /lib64/libncurses.so.6
lrwxrwxrwx.  1 cubrid cubrid       20 Mar 19 14:05 libtinfo.so.5 -&amp;gt; /lib64/libtinfo.so.6&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.3 큐브리드 사용 포트&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;큐브리드 외부 접근 시 포트 개방 필요&lt;/li&gt;
&lt;li&gt;큐브리드 사용 포트 표&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 179px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 22.6745%; height: 20px;&quot;&gt;&lt;b&gt; 구분 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.2325%; height: 20px;&quot;&gt;&lt;b&gt; 대상 장비 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 19.0697%; height: 20px;&quot;&gt;&lt;b&gt; Linux 포트 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 21.5117%; height: 20px;&quot;&gt;&lt;b&gt; Window 포트 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 16.5116%; height: 20px;&quot;&gt;&lt;b&gt; 방화벽 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 22.6745%; height: 51px;&quot; rowspan=&quot;3&quot;&gt;Single DB&lt;/td&gt;
&lt;td style=&quot;width: 20.2325%; height: 17px;&quot;&gt;WEB/WAS Server&lt;/td&gt;
&lt;td style=&quot;width: 19.0697%; height: 17px;&quot;&gt;33000(TCP)&lt;/td&gt;
&lt;td style=&quot;width: 21.5117%; height: 17px;&quot;&gt;33000~33040(TCP)&lt;/td&gt;
&lt;td style=&quot;width: 16.5116%; height: 17px;&quot;&gt;개방&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 20.2325%; height: 17px;&quot;&gt;CUBRID Manager&lt;/td&gt;
&lt;td style=&quot;width: 19.0697%; height: 17px;&quot;&gt;30000(TCP) &lt;br /&gt;8001(TCP)&lt;/td&gt;
&lt;td style=&quot;width: 21.5117%; height: 17px;&quot;&gt;30000~30040(TCP)&lt;br /&gt;8001(TCP)&lt;/td&gt;
&lt;td style=&quot;width: 16.5116%; height: 17px;&quot;&gt;개방&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 20.2325%; height: 17px;&quot;&gt;CUBRID CMT&lt;/td&gt;
&lt;td style=&quot;width: 19.0697%; height: 17px;&quot;&gt;30000(TCP)&lt;/td&gt;
&lt;td style=&quot;width: 21.5117%; height: 17px;&quot;&gt;30000~30040(TCP)&lt;/td&gt;
&lt;td style=&quot;width: 16.5116%; height: 17px;&quot;&gt;개방&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 22.6745%; height: 74px;&quot; rowspan=&quot;4&quot;&gt;CUBRID HA&lt;/td&gt;
&lt;td style=&quot;width: 20.2325%; height: 17px;&quot;&gt;WEB/WAS Server&lt;/td&gt;
&lt;td style=&quot;width: 19.0697%; height: 17px;&quot;&gt;33000(TCP)&lt;/td&gt;
&lt;td style=&quot;width: 21.5117%; height: 17px;&quot;&gt;33000~33040(TCP)&lt;/td&gt;
&lt;td style=&quot;width: 16.5116%; height: 17px;&quot;&gt;개방&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 20.2325%; height: 17px;&quot;&gt;CUBRID Manager&lt;/td&gt;
&lt;td style=&quot;width: 19.0697%; height: 17px;&quot;&gt;30000(TCP)&lt;br /&gt;8001(TCP)&lt;/td&gt;
&lt;td style=&quot;width: 21.5117%; height: 17px;&quot;&gt;30000~30040(TCP)&lt;br /&gt;8001(TCP)&lt;/td&gt;
&lt;td style=&quot;width: 16.5116%; height: 17px;&quot;&gt;개방&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 23px;&quot;&gt;
&lt;td style=&quot;width: 20.2325%; height: 23px;&quot;&gt;CUBRID CMT&lt;/td&gt;
&lt;td style=&quot;width: 19.0697%; height: 23px;&quot;&gt;30000(TCP)&lt;/td&gt;
&lt;td style=&quot;width: 21.5117%; height: 23px;&quot;&gt;30000~30040(TCP)&lt;/td&gt;
&lt;td style=&quot;width: 16.5116%; height: 23px;&quot;&gt;개방&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 20.2325%; height: 17px;&quot;&gt;Master/Slave&lt;br /&gt;Server 양방향&lt;/td&gt;
&lt;td style=&quot;width: 19.0697%; height: 17px;&quot;&gt;1523(TCP)&lt;br /&gt;7(TCP)&lt;br /&gt;59901(UDP)&lt;/td&gt;
&lt;td style=&quot;width: 21.5117%; height: 17px;&quot;&gt;HA 기능 미지원&lt;/td&gt;
&lt;td style=&quot;width: 16.5116%; height: 17px;&quot;&gt;Linux : 개방&lt;br /&gt;Window : 불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 22.6745%; height: 17px;&quot;&gt;CUBRID Manager&lt;br /&gt;사용자/관리자 PC&lt;/td&gt;
&lt;td style=&quot;width: 20.2325%; height: 17px;&quot;&gt;CUBRID Manager&lt;/td&gt;
&lt;td style=&quot;width: 19.0697%; height: 17px;&quot;&gt;30000(TCP)&lt;br /&gt;8001(TCP)&lt;/td&gt;
&lt;td style=&quot;width: 21.5117%; height: 17px;&quot;&gt;30000~30040(TCP)&lt;br /&gt;8001(TCP)&lt;/td&gt;
&lt;td style=&quot;width: 16.5116%; height: 17px;&quot;&gt;개방&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 22.6745%; height: 17px;&quot;&gt;CUBRID Migration Toolkit&lt;br /&gt;사용자/관리자 PC&lt;/td&gt;
&lt;td style=&quot;width: 20.2325%; height: 17px;&quot;&gt;CUBRID CMT&lt;/td&gt;
&lt;td style=&quot;width: 19.0697%; height: 17px;&quot;&gt;30000(TCP)&lt;/td&gt;
&lt;td style=&quot;width: 21.5117%; height: 17px;&quot;&gt;30000~30040(TCP)&lt;/td&gt;
&lt;td style=&quot;width: 16.5116%; height: 17px;&quot;&gt;개방&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. CUBRID DB 생성&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.1 큐브리드 DB 생성&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;nbsp;DB를 생성할 디렉터리로 이동해서 DB를 직접 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725988047485&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cd $CUBRID_DATABASES
mkdir testdb
cd testdb
cubrid createdb --db-volume-size=128M --log-volume-size=128M testdb en_US&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;생성하게되면 해당 디렉토리에 파일이 생성되고 &lt;code&gt;databasess.txt&lt;/code&gt; 파일 내용에 추가 됨&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725988092863&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cd $CUBRID_DATABASES/testdb
ls -al
drwxr-xr-x. 2 cubrid cubrid         6 Mar 20 12:31 lob
-rw-------. 1 cubrid cubrid 134217728 Mar 20 12:31 testdb
-rw-------. 1 cubrid cubrid 134217728 Mar 20 12:31 testdb_lgar_t
-rw-------. 1 cubrid cubrid 134217728 Mar 20 12:31 testdb_lgat
-rw-------. 1 cubrid cubrid       209 Mar 20 12:31 testdb_lginf
-rw-------. 1 cubrid cubrid       268 Mar 20 12:31 testdb_vinf

vi $CUBRID_DATABASES/databases.txt
#db-name        vol-path                db-host         log-path                lob-base-path
testdb          /home/cubrid/CUBRID/databases/testdb    localhost       /home/cubrid/CUBRID/databases/testdb    file:/home/cubrid/CUBRID/databases/testdb/lob&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. DB 자동 구동 및 큐브리드 자동 시작&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.1 DB 자동 구동&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;부팅 시 생성한 DB가 구동되게 하려면&amp;nbsp;&lt;code&gt;$CUBRID/conf/cubrid.conf&lt;/code&gt;&amp;nbsp;에서 다음을 수정&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725988147112&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[service]
service=server, broker, manager
server=testdb #DB명&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.2 큐브리드 rc.local 자동 실행 설정&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;부팅 시 rc.local로 자동 실행 설정&lt;/li&gt;
&lt;li&gt;rc-local 데몬이&amp;nbsp;실행되어있는지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725988182828&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl status rc-local.service
○ rc-local.service - /etc/rc.d/rc.local Compatibility
     Loaded: loaded (/usr/lib/systemd/system/rc-local.service; static)
     Active: inactive (dead)
       Docs: man:systemd-rc-local-generator(8)&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다음 2개(&lt;code&gt;/etc/rc.local&lt;/code&gt;,&lt;code&gt;/etc/rc.d/rc.local&lt;/code&gt;)의 파일 실행 권한 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725988225872&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 권한 확인
ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 Jan 23 19:22 /etc/rc.local -&amp;gt; rc.d/rc.local
ll /etc/rc.d/rc.local
-rw-r--r--. 1 root root 474 Jan 23 19:22 /etc/rc.d/rc.local

# 권한 설정
chmod 777 /etc/rc.d/rc.local
ll /etc/rc.d/rc.local
-rwxrwxrwx. 1 root root 474 Jan 23 19:22 /etc/rc.d/rc.local&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;rc-local 데몬 enable&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725988238473&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl enable rc-local.service&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;WantedBy 설정이 안되있어 아래 내용과 함께 실행이 되지 않습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725988252565&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;e unit files have no installation config (WantedBy=, RequiredBy=, Also=,
Alias= settings in the [Install] section, and DefaultInstance= for template
units). This means they are not meant to be enabled or disabled using systemctl.
 
Possible reasons for having this kind of units are:
&amp;bull; A unit may be statically enabled by being symlinked from another unit's
  .wants/ or .requires/ directory.
&amp;bull; A unit's purpose may be to act as a helper for some other unit which has
  a requirement dependency on it.
&amp;bull; A unit may be started when needed via activation (socket, path, timer,
  D-Bus, udev, scripted systemctl call, ...).
&amp;bull; In case of template units, the unit is meant to be enabled with some
  instance name specified.&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;vi 텍스트 편집기를 이용해&lt;code&gt;/usr/lib/systemd/system/rc-local.service&lt;/code&gt;아래 내용을 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725988283624&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 추가할 내용
[Install]
WantedBy=multi-user.target

# vi 텍스트 편집기 통해서 수정해줍니다.
vi /usr/lib/systemd/system/rc-local.service&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725988290014&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#  SPDX-License-Identifier: LGPL-2.1-or-later
#
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.d/rc.local is executable.
[Unit]
Description=/etc/rc.d/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.d/rc.local
After=network-online.target
Wants=network-online.target

[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=infinity
RemainAfterExit=yes
GuessMainPID=no

# 추가 내용
[Install]
WantedBy=multi-user.target&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다시 rc-local 데몬 enable&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725988305322&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl enable rc-local.service
Created symlink /etc/systemd/system/multi-user.target.wants/rc-local.service &amp;rarr; /usr/lib/systemd/system/rc-local.service.

systemctl list-unit-files |grep rc.local
rc-local.service                             enabled         disabled&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정상적으로 등록되어 재부팅 시&amp;nbsp;rc.local 파일에 등록된 스크립트가 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.3 자동 실행 될 수 있도록 rc.local 등록할 스크립트 작성&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;큐브리드가 부팅 후 자동 실행 될 수 있도록 스크립트를 작성 스크립트파일을 생성해 작성해도되지만 저는 rc.local에 직접 작성&lt;/li&gt;
&lt;li&gt;큐브리드가 설치된&amp;nbsp;계정을 통해 실행 스크립트 작성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725988339996&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vi /etc/rc.d/rc.local

#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local

# cubrid 자동 실행
# su - [큐브리드 설치된 계정]
su - cubrid &amp;lt;&amp;lt; EOF
cubrid service start&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설정이 완료되면 재부팅 후 제대로 실행됬는지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725988353272&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cubrid service status
@ cubrid master status
++ cubrid master is running.
@ cubrid server status
 Server testdb (rel 10.1, pid 1476)
@ cubrid broker status
  NAME                   PID  PORT    AS   JQ                  TPS                  QPS   SELECT   INSERT   UPDATE   DELETE   OTHERS     LONG-T     LONG-Q         ERR-Q  UNIQUE-ERR-Q  #CONNECT   #REJECT 
===========================================================================================================================================================================================================
* query_editor          1747 30000     5    0                    0                    0        0        0        0        0        0     0/60.0     0/60.0             0             0         0         0 
* broker1               1758 33000     5    0                    0                    0        0        0        0        0        0     0/60.0     0/60.0             0             0         0         0 
@ cubrid manager server status
++ cubrid manager server is running.&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 마치며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;큐브리드 자동 실행 공식 문서보고 했지만 잘안되는 부분이있어 재부팅 시 스크립트로 자동실행되게 작업 했습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;[&lt;a title=&quot;CUBRID 공식 문서&quot; href=&quot;https://www.cubrid.org/manual/ko/10.1/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;CUBRID 공식 문서&lt;/span&gt;&lt;/a&gt;]&lt;/p&gt;
&lt;figure id=&quot;og_1725988400024&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;CUBRID 10.1 사용자 매뉴얼 &amp;mdash; CUBRID 10.1.0 documentation&quot; data-og-description=&quot;CUBRID 10.1 사용자 매뉴얼 &amp;mdash; CUBRID 10.1.0 documentation. Quick Reference Table and Table of Contents.&quot; data-og-host=&quot;www.cubrid.org&quot; data-og-source-url=&quot;https://www.cubrid.org/manual/ko/10.1/&quot; data-og-url=&quot;https://www.cubrid.org/manual/ko/10.1/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.cubrid.org/manual/ko/10.1/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.cubrid.org/manual/ko/10.1/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;CUBRID 10.1 사용자 매뉴얼 &amp;mdash; CUBRID 10.1.0 documentation&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;CUBRID 10.1 사용자 매뉴얼 &amp;mdash; CUBRID 10.1.0 documentation. Quick Reference Table and Table of Contents.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.cubrid.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>데이터베이스/Cubrid</category>
      <category>cubrid</category>
      <category>db</category>
      <category>DBMS</category>
      <category>큐브리드</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/24</guid>
      <comments>https://bigdwarf.tistory.com/24#entry24comment</comments>
      <pubDate>Mon, 23 Sep 2024 03:15:16 +0900</pubDate>
    </item>
    <item>
      <title>Ubuntu Linux Oracle XE 11g 설치 및 DB, 계정 생성</title>
      <link>https://bigdwarf.tistory.com/23</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;e55373f127243ae65829a1d7a85dce38.jpg&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;411&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qyDYy/btsJyEkvqdM/4hpC4AtO4kq90vDYWMkzWk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qyDYy/btsJyEkvqdM/4hpC4AtO4kq90vDYWMkzWk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qyDYy/btsJyEkvqdM/4hpC4AtO4kq90vDYWMkzWk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqyDYy%2FbtsJyEkvqdM%2F4hpC4AtO4kq90vDYWMkzWk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;548&quot; height=&quot;411&quot; data-filename=&quot;e55373f127243ae65829a1d7a85dce38.jpg&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;411&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✅&amp;nbsp;Ubuntu&amp;nbsp;22.04&amp;nbsp;64bit&amp;nbsp;환경에서&amp;nbsp;Oracle&amp;nbsp;11g&amp;nbsp;설치하기&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. Oracle&amp;nbsp;XE&amp;nbsp;다운로드하기&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;[&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;a style=&quot;color: #009a87;&quot; title=&quot;다운로드 링크&quot; href=&quot;https://www.oracle.com/database/technologies/xe-prior-release-downloads.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;다운로드 링크&lt;/a&gt;&lt;/span&gt;]&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1725950947688&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;XE Prior Release Archive&quot; data-og-description=&quot;Getting Started: Support Oracle Database Express Edition (XE) is a community supported edition of the Oracle Database family. Please go to the Oracle Database XE Community Support Forum for help, feedback, and enhancement requests. Note: Oracle Support Ser&quot; data-og-host=&quot;www.oracle.com&quot; data-og-source-url=&quot;https://www.oracle.com/database/technologies/xe-prior-release-downloads.html&quot; data-og-url=&quot;https://www.oracle.com/database/technologies/xe-prior-release-downloads.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.oracle.com/database/technologies/xe-prior-release-downloads.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.oracle.com/database/technologies/xe-prior-release-downloads.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;XE Prior Release Archive&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Getting Started: Support Oracle Database Express Edition (XE) is a community supported edition of the Oracle Database family. Please go to the Oracle Database XE Community Support Forum for help, feedback, and enhancement requests. Note: Oracle Support Ser&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.oracle.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Linux 버전을 다운로드한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;36c437d44e87211c22ba9a541d3b39f6.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cp566F/btsJw5cuTLm/myaZzpyZNMkPOTkn0YmQ9k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cp566F/btsJw5cuTLm/myaZzpyZNMkPOTkn0YmQ9k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cp566F/btsJw5cuTLm/myaZzpyZNMkPOTkn0YmQ9k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcp566F%2FbtsJw5cuTLm%2FmyaZzpyZNMkPOTkn0YmQ9k%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;350&quot; data-filename=&quot;36c437d44e87211c22ba9a541d3b39f6.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;350&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt; 3. Oracle XE&amp;nbsp;파일 업로드 및 압축 해제&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;wget을 이용해 파일 다운로드&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725951034541&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;wget https://download.oracle.com/otn/linux/oracle11g/xe/oracle-xe-11.2.0-1.0.x86_64.rpm.zip&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;wget 실행 안될 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;wget 패키지 설치&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725951082505&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo&amp;nbsp;apt-get&amp;nbsp;install&amp;nbsp;wget&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;zip 파일 압축 해제&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725951139516&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;b&gt;4. Oracle XE&lt;/b&gt;&lt;/b&gt;&amp;nbsp;&lt;b&gt;설치 시 필요한 패키지 설치&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ubuntu에서는 rpm 파일을 사용하여 패키지 설치를 할 수 없으므로, RPM을 Debian의 deb 패키지로 변경이 필요하다. 변경 및 설치를 위해 필요한 패키지는 아래와 같다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;alien : RPM 패키지를 Debian 패키지로 변환&lt;/li&gt;
&lt;li&gt;libaio1 : Linux 커널 AIOAsynchronous I/O 액세스 라이브러리&lt;/li&gt;
&lt;li&gt;unixodbc : ODBC (Open Database Connectivity ) 라이브러리&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725951185770&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt-get install -y alien libaio1 unixodbc&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;b&gt;4. Oracle XE&lt;/b&gt;&lt;/b&gt; &lt;b&gt;RPM &amp;rarr; DEB 변환&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다운로드한 rpm 파일을 alien을 이용해 deb 파일로 변환&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725951209839&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;alien --scripts -d  oracle-database-xe-18c_1.0-2_amd64.rpm&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. Oracle XE&amp;nbsp;환경설정&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;경로 &lt;code&gt;/sbin/chkconfig&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Redhat 패키지들은 설치 시 &lt;code&gt;/sbin/chkconfig&lt;/code&gt;를 시용해야 하지만, Ubuntu에는 해당 파일이 없기 때문에 &lt;code&gt;/bin/chkconfig&lt;/code&gt; 파일을 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725951298018&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo vi /sbin/chkconfig&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725951306464&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#!/bin/bash 
    # Oracle 11gR2 XE installer chkconfig hack for Ubuntu 
      file=/etc/init.d/oracle-xe 
      if [[ ! `tail -n1 $file | grep INIT` ]]; then 
        echo &amp;gt;&amp;gt; $file 
        echo '### BEGIN INIT INFO' &amp;gt;&amp;gt; $file 
        echo '# Provides: OracleXE' &amp;gt;&amp;gt; $file 
        echo '# Required-Start: $remote_fs $syslog' &amp;gt;&amp;gt; $file 
        echo '# Required-Stop: $remote_fs $syslog' &amp;gt;&amp;gt; $file 
        echo '# Default-Start: 2 3 4 5' &amp;gt;&amp;gt; $file 
        echo '# Default-Stop: 0 1 6' &amp;gt;&amp;gt; $file 
        echo '# Short-Description: Oracle 11g Express Edition' &amp;gt;&amp;gt; $file
        echo '### END INIT INFO' &amp;gt;&amp;gt; $file 
      fi 
      update-rc.d oracle-xe defaults 80 01 
    #EOF&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 생성 후 실행할 수 있도록 755 권한 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725951323580&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo chmod 755 /sbin/chkconfig&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. Kernel 파라미터 설정&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Oracle이 Linux 커널의 파라미터를 사용하여 운영되기 때문에 Oracle 서버를 운영하기 우해서는 커널 파라미터 설정이 필요하다. 시스템 컨트롤 데몬에 시스템 파라미터 설정을 저장하여 등록한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;file.file-max&lt;/b&gt;&amp;nbsp;: 오픈하는 파일의 수를 지정하는 커널 파라미터(각 오라클 인스턴스는 512 * Process만큼 file descriptor를 가짐.)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;net.ipv4.iplocalport_range&lt;/b&gt;&amp;nbsp;: TCP와 UDP 트랙픽을 위한 범위를 설정하는 커널 파라미터&lt;/li&gt;
&lt;li&gt;&lt;b&gt;kernel.sem&lt;/b&gt;&amp;nbsp;: 세마포를 지정하는 커널 파라미터&lt;/li&gt;
&lt;li&gt;&lt;b&gt;kernel.shmmax&lt;/b&gt;&amp;nbsp;: 공유 메모리 페이지를 지정하는 커널 파라미터&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725951388286&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo vi /etc/sysctl.d/60-oracle.conf&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725951395044&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Oracle 11g XE kernel parameters 
     fs.file-max=6815744 
     net.ipv4.ip_local_port_range=9000 65000 
     kernel.sem=250 32000 100 128 
     kernel.shmmax=536870912&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;커널 파라미터 로드&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725951414177&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo systemctl start procps

## procps 패키지 설치가 안되있다면
sudo apt-get install procps&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. Oracle XE용 파일 추가&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Oracle XE는 &lt;code&gt;/bin/awk&lt;/code&gt;를 사용하지만, Ubuntu에서는 &lt;code&gt;/usr/bin/awk&lt;/code&gt;에 설치되기 때문에 심볼릭 링크를 만들어 줌.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725951488094&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo ln -s /usr/bin/awk /bin/awk
## ubuntu 22.04 /bin/awk 존재하고있어 심볼릭 링크를 따로 만들필요없음
## 혹시 모르니 확인 필요&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Oracle XE의 리스터가 사용할 lock 파일 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725951504558&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo mkdir /var/lock/subsys
## ubuntu 22.04 /var/lock/subsys 존재하고있어 따로 폴더를 만들필요없음
## 혹시 모르니 확인 필요
sudo touch /var/lock/subsys/listener&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;(오류 발생 시) 메모리 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Oracle XE를 설치하고 나서 특별한 에러 없이 Oracle 프로세스가 리스너만 시작되고 다른 프로세스가 실행되지 않는 문제를 만날 수 있다. Oralce XE를 설치할 때 정상적으로 설치가 되지 않거나 오류가 발생하게 되면 $ORACL_HOME안의 log 디렉터리를 살펴보면 된다. 설치가 정상적으로 되지 않거나, 설치는 되었는데 에러 없이 Oracle이 정상적으로 시작이 되지 않을 경우 로그를 살펴보면 ORA-000845:MEMORY_TARGET 에러가 발생하게 되는 경우가 있는데 메모리의 설정이 잘못되거나 사이즈가 부족해서 그런 경우이다. 이런 경우 메모리 설정을 위해서 다음 과정을 진행한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 설정된 shared memeory 삭제&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725951551780&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo rm -rf /dev/shm&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;새로운 SHM을 생성하여 mount&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725951626400&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo&amp;nbsp;mkdir&amp;nbsp;/dev/shm
sudo&amp;nbsp;mount&amp;nbsp;-t&amp;nbsp;tmpfs&amp;nbsp;shmfs&amp;nbsp;-o&amp;nbsp;-size=4096m&amp;nbsp;/dev/shm&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;shm 설정을 데몬에 등록, 로드하기 위해 아래 내용을 파일로 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725951640966&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo&amp;nbsp;vi&amp;nbsp;/etc/rc2.d/S01shm_load&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725951648354&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#!/bin/sh 
    case &quot;$1&quot; in 
    start) mkdir /var/lock/subsys 2&amp;gt;/dev/null 
    touch /var/lock/subsys/listener 
    rm /dev/shm 2&amp;gt;/dev/null 
    mkdir /dev/shm 2&amp;gt;/dev/null 
    mount -t tmpfs shmfs -o size=4096m /dev/shm ; 
    *) echo error 
    exit 1 ;; 
    esac&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725951656875&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo chmod 755 /etc/rc2.d/S01shm_load&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. Oracle XE 패키지 설치&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;deb 패키지 설치&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725951755985&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo dpkg --install oracle-xe_11.2.0-2_amd64.deb&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정상적으로 설치되면 아래와 같이 나오고 데몬이 자동으로 등록된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725951768653&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Selecting previously unselected package oracle-xe.
(데이터베이스 읽는중 ...현재 205338개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack oracle-xe_11.2.0-2_amd64.deb ...
Unpacking oracle-xe (11.2.0-2) ...
oracle-xe (11.2.0-2) 설정하는 중입니다 ...
Executing post-install steps...

You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.

Processing triggers for libc-bin (2.31-0ubuntu9) ...
Processing triggers for systemd (245.4-4ubuntu3.1) ...
Processing triggers for gnome-menus (3.36.0-1ubuntu1) ...
Processing triggers for desktop-file-utils (0.24-1ubuntu2) ...
Processing triggers for mime-support (3.64ubuntu1) ...&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치 후 Oracle XE 사용을 위해 Oracle 최초 설정을 /etc/init.d/oracle-xe configure로 설정한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725951783788&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo /etc/init.d/oracle-xe configure&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최초 설정 내용은 아래와 같은 서비스 포트와 패스워드 설정이다.&lt;/li&gt;
&lt;li&gt;포트 번호 설정은 건드리지 않고 패스워드만 설정한다. (필요시 포트번호 변경)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725951806521&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Specify the HTTP port that will be used for Oracle Application Express [8080]:

Specify a port that will be used for the database listener [1521]:

Specify a password to be used for database accounts.  Note that the same password will be used for SYS and SYSTEM.  Oracle recommends the use of different passwords for each database account.  
This can be done after initial configuration:
Enter password : &amp;lt;&amp;lt;password 입력&amp;gt;&amp;gt;
Confirm the password : &amp;lt;&amp;lt;password 확인 입력&amp;gt;&amp;gt;

Do you want Oracle Database 11g Express Edition to be started on boot (y/n) [y]:

Starting Oracle Net Listener...Done
Configuring database...Done
Starting Oracle Database 11g Express Edition instance...Done
Installation completed successfully.&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. Oracle XE 환경 변수 설정&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스 계정마다 환경 변수 설정해 줘야 된다. 필자는 testid라는 계정으로 접속하여 설정&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;s&gt;9.1 첫 번째 방법&lt;/s&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1725951889857&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;su - testid
vi ~/.bashrc&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725951909223&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe 
export ORACLE_SID=XE 
export NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh` 
export ORACLE_BASE=/u01/app/oracle 
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH 
export PATH=$ORACLE_HOME/bin:$PATH&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;9.2 두번째 방법 (저는 이 방법으로 함)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;/u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh ~/.bashrc 파일에 oracle_env.sh 파일 내용을 추가하고 저장한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725952061892&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## 아래 명령어 실행 후 해당 명령어 복사
. /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725952067562&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vi ~/.bashrc&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;~/.bashrc 맨 아래 복사 한 명령어를 작성하고 저장해 준다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725952087168&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth

# append to the history file, don't overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# If set, the pattern &quot;**&quot; used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar

# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] &amp;amp;amp;&amp;amp;amp; eval &quot;$(SHELL=/bin/sh lesspipe)&quot;

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z &quot;${debian_chroot:-}&quot; ] &amp;amp;amp;&amp;amp;amp; [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color, unless we know we &quot;want&quot; color)
case &quot;$TERM&quot; in
    xterm-color|*-256color) color_prompt=yes;;
esac

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes

if [ -n &quot;$force_color_prompt&quot; ]; then
    if [ -x /usr/bin/tput ] &amp;amp;amp;&amp;amp;amp; tput setaf 1 &amp;gt;&amp;amp;amp;/dev/null; then
        # We have color support; assume it's compliant with Ecma-48
        # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
        # a case would tend to support setf rather than setaf.)
        color_prompt=yes
    else
        color_prompt=
    fi
fi

if [ &quot;$color_prompt&quot; = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

# If this is an xterm set the title to user@host:dir
case &quot;$TERM&quot; in
xterm*|rxvt*)
    PS1=&quot;\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1&quot;
    ;;
*)
    ;;
esac

# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors &amp;amp;amp;&amp;amp;amp; eval &quot;$(dircolors -b ~/.dircolors)&quot; || eval &quot;$(dircolors -b)&quot;
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi

# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'

# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

# Add an &quot;alert&quot; alias for long running commands.  Use like so:
#   sleep 10; alert
alias alert='notify-send --urgency=low -i &quot;$([ $? = 0 ] &amp;amp;amp;&amp;amp;amp; echo terminal || echo error)&quot; &quot;$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&amp;amp;amp;|]\s*alert$//'\'')&quot;'

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

## 복사한 명령어를 맨아래 추가
. /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725952102304&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## oracle_env.sh 파일 내용
##----start--------
   export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
   export ORACLE_SID=XE
   export NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`
   export PATH=$ORACLE_HOME/bin:$PATH
##----end----------&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;변경 사항 반영&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725952116532&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;source ~/.bashrc&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. Oracle XE 상태 확인&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Oracle의 네티워크 상태 확인을 위해 리스너 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725952150358&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;lsnrctl status&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725952157761&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 29-5월 -2020 14:09:30

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.2.0 - Production
Start Date                29-5월 -2020 13:16:50
Uptime                    0 days 0 hr. 52 min. 40 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Default Service           XE
Listener Parameter File   /u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/miris-A320M-H/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_XE)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=miris-A320M-H)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=miris-A320M-H)(PORT=8080))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service &quot;PLSExtProc&quot; has 1 instance(s).
Instance &quot;PLSExtProc&quot;, status UNKNOWN, has 1 handler(s) for this service...
Service &quot;XE&quot; has 1 instance(s).
Instance &quot;XE&quot;, status READY, has 1 handler(s) for this service...
Service &quot;XEXDB&quot; has 1 instance(s).
Instance &quot;XE&quot;, status READY, has 1 handler(s) for this service...
The command completed successfully&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Sqlplus 테스트 접속&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725952170714&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sqlplus system&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725952177472&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SQL*Plus: Release 11.2.0.2.0 Production on 금 5월 29 14:13:56 2020

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Enter password:

Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;11. Oracle XE 작업 준비&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Tablespace 및 사용자 등의 추가 작업 : 이 부분은 각자 상황에 따라 다르게 적용되며, SQL로 작업한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;11.1 Tablespace 생성&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우선 테이블 스페이스가 저장되는 경로 확인을 위해 테이블스페이스 파일 테이블을 조회한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725952223713&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM DBA_DATA_FILES;
    ...
CREATE TABLESPACE Tablespace명
datafile '/u01/app/oracle/oradata/XE/Tablespace명.dbf'
SIZE 100M 
reuse autoextend ON;

/********************
CREATE TABLESPACE [이름]
DATAFILE [데이터 파일 경로]
SIZE[파일 사이즈][K | M]
AUTOEXTEND [ON | OFF]
[ONLINE | OFFLINE]
[PERMANENT | TEMPORARY]
EXTENT MANAGEMENT [DICTIONARY | LOCAL [AUTOALLOCATE | UNIFORM]]
BLOCKSIZE [사이즈][K | M]
**********************/

## 테이블 스페이스 삭제
DROP TABLESPACE 테이블스페이스명 INCLUDING CONTENTS;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;TABLESPACE : 테이블 스페이스의 이름을 지정한다.&lt;/li&gt;
&lt;li&gt;DATAFILE : 테이블 스페이스를 저장할 데이터 파일의 이름과 경로를 지정한다.&lt;/li&gt;
&lt;li&gt;SIZE : 데이터 파일의 용량을 지정한다. 단위는 K(킬로바이트) 또는 M(메가바이트) 사용&lt;/li&gt;
&lt;li&gt;AUTOEXTEND : 공간이 부족할 때 자동으로 확장할지 여부를 지정한다.&lt;/li&gt;
&lt;li&gt;ONLINE | OFFLINE : 테이블 스페이스를 즉시 사용할지 여부를 지정한다. (Default : ONLINE)&lt;/li&gt;
&lt;li&gt;PERMANENT | TEMPORARY : 저장할 정보가 영구적인지 임시인지를 지정한다. (Default : PERMANENT)&lt;/li&gt;
&lt;li&gt;EXTENT MANAGEMENT DICTIONARY | LOCAL
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DICTIONARY : 테이블 스페이스 내의 EXTENT들이 DICTIONARY TABLE에서 관리된다. (기본값)&lt;/li&gt;
&lt;li&gt;LOCAL : 테이블 스페이스 내의 EXTENT들이 각 DATAFILE 내에서 BITMAP으로 관리된다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AUTOALLOCATE : 시스템에서 관리함. 사용자가 EXTENT SIZE를 지정할 수 없음.&lt;/li&gt;
&lt;li&gt;UNIFORM : 사용자가 지정한 일정한 사이즈로 생성됨. (Default : 1M)&lt;/li&gt;
&lt;/ul&gt;
&amp;rarr; LOCAL 절을 사용하면서 AUTOALLOCATE 또는 UNIFORM을 명시하지 않으면 AUTOALLOCATE이 기본값&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;BLOCKSIZE : 인스턴스를 구성하는 블록의 사이즈를 지정한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;11.2 사용자 생성&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1725952260119&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## 사용자 생성
CREATE USER User명 IDENTIFIED BY User비밀번호
DEFAULT TABLESPACE Tablespace명
TEMPORARY TABLESPACE temp;

## 사용자 삭제
DROP USER UserId CASCADE;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;11.3 사용자 권한 부여&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;권한 부여는 GRANT, 취소는 REVOKE&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725952286114&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## 사용자 권한 부여
GRANT CONNECT, RESOURCE, DBA to User명;


## 역할 (기본적으로 사용자를 생성하면 CONNECT, RESOUCE 역할을 준다.)
-- CONNECT ROLE : 세션 생성 및 테이블 생성, 조회 등의 가장 일반적인 권한들로 이루어진다.
-- RESOURCE ROLE : Store Procedure 또는 Trigger와 같은 PL/SQL을 사용할 수 있는 권한들로 이루어진다.
-- DBA ROLE : 모든 시스템 권한이 부여된 역할이다
-- CRATE USER : 데이터 베이스 유저 생성 권한
-- SELECT ANY TABLE : 모든 유저의 테이블 조회 권한
-- CREATE ANY TABLE : 모든 유저의 테이블 생성 권한
-- CREATE SESSION : 데이터베이스 접속 권한
-- CREATE TABLE : 테이블 생성 권한
-- CREATE PROCEDURE : 프로시져 생성 권한
-- CREATE SEQUENCE : 시퀀스 생성 권한
-- SYSDBA : 데이터베이스를 관리하는 최고 권한
-- SYSOPER : 데이터베이스를 관리하는 권한&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;11.4 테스트용 테이블 생성 (생선 된 UserID로 로그인)&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자별 테이블 권한 부여&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725952313522&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE test_tb (
        name varchar2(10),
        age number(3)
  );
insert into test_tb values(&quot;test&quot;, 13);&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;권한 부여는 GRANT, 취소는 REVOKE&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725952336029&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;grant select, insert, delete, update on 권한부여할Table명 to User명;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;11.5 기타 참고용 SQL &amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 생성된 계정 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725952393018&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM DBA_USERS;
SELECT * FROM ALL_USERS;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자에게 부여된 시스템 권한 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725952452037&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='User명';&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자에게 부여된 Role 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725952467749&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE='User명';&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Role에 부여된 시스템 권한 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725952509107&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'Role명';&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다른 사용자에게 부여된 객체(테이블 등) 권한 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725952527791&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT 
* 
FROM DBA_SYS_PRIVS
WHERE OWNER = '테이블소유자명';
SELECT 
* 
FROM DBA_SYS_PRIVS
WHERE GRANTEE = '권한부여자명';&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자가 소유한 모든 테이블 조회&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725952542393&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM USER_TABLES;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;유저들의 DEFAULT TEMP TABLESPACE 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725952579310&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT USERNAME, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE FROM DBA_USERS;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Default Temp&amp;nbsp;Tablespace를 TEMP에서 TEMP2로 변경&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725952593454&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP2;&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;12. Oracle XE 삭제&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Oracle XE 서비스 정지&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725952626719&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo systemctl stop oracle-xe&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Oracle XE 패키지 삭제&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725952648538&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo dpkg --purge oracle-xe&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Oracle XE 디렉터리 삭제&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725952663501&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo rm -rf /u01/app&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Oracle XE 데몬 삭제 및 갱신&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725952731648&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo rm /etc/default/oracle-xe
sudo update-rc.d oracle-xe remove&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Ubuntu 설정 파일 삭제&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725952746477&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo rm /sbin/chkconfig
sudo rm /etc/rc2.d/s01shm_load
sudo rm /etc/sysctl.d/60-oracle.conf&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Oracle XE Ubuntu 계정 삭제&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725952762948&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo userdel -r oracle
sudo delgroup dba&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>데이터베이스/Oracle</category>
      <category>db</category>
      <category>DBMS</category>
      <category>Oracle</category>
      <category>오라클</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/23</guid>
      <comments>https://bigdwarf.tistory.com/23#entry23comment</comments>
      <pubDate>Sun, 22 Sep 2024 00:21:13 +0900</pubDate>
    </item>
    <item>
      <title>Redhat 계열 Linux MariaDB 설치</title>
      <link>https://bigdwarf.tistory.com/22</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;8e0c5783a187695ba401338161710f06.jpg&quot; data-origin-width=&quot;639&quot; data-origin-height=&quot;577&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XHtCS/btsJyti7wmv/nzWrFCk9Zk6BtoaDRp7kZK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XHtCS/btsJyti7wmv/nzWrFCk9Zk6BtoaDRp7kZK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XHtCS/btsJyti7wmv/nzWrFCk9Zk6BtoaDRp7kZK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXHtCS%2FbtsJyti7wmv%2FnzWrFCk9Zk6BtoaDRp7kZK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;639&quot; height=&quot;577&quot; data-filename=&quot;8e0c5783a187695ba401338161710f06.jpg&quot; data-origin-width=&quot;639&quot; data-origin-height=&quot;577&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; MariaDB는&amp;nbsp;오픈소스의&amp;nbsp;관계형&amp;nbsp;데이터베이스&amp;nbsp;관리&amp;nbsp;시스템(RDBMS)이다.&amp;nbsp;MySQL과&amp;nbsp;소스코드를&amp;nbsp;같이&amp;nbsp;사용하므로&amp;nbsp;사용&amp;nbsp;방법과&amp;nbsp;구조가&amp;nbsp;MySQL과&amp;nbsp;동일하다.&amp;nbsp;MariaDB&amp;nbsp;커뮤니티는&amp;nbsp;MySQL과&amp;nbsp;비교해&amp;nbsp;애플리케이션&amp;nbsp;부분&amp;nbsp;속도가&amp;nbsp;약&amp;nbsp;4~5천 배&amp;nbsp;정도&amp;nbsp;빠르며,&amp;nbsp;MySQL이&amp;nbsp;갖는&amp;nbsp;모든&amp;nbsp;제품의&amp;nbsp;기능을&amp;nbsp;완벽히&amp;nbsp;구현하면서도&amp;nbsp;성능&amp;nbsp;면에서는&amp;nbsp;최고&amp;nbsp;70%의&amp;nbsp;향상을&amp;nbsp;보이고&amp;nbsp;있다고&amp;nbsp;주장한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. MariaDB 저장소 추가&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.1 MariaDB yum 저장소 확인&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아래 사이트를 이용해 MariaDB OS별 설치 버전을 선택하면 Repository 정보와 설치방법을 설명을 보고 설치한다.&lt;/li&gt;
&lt;li&gt;저는 CentOS7 (x86_64) 환경에 MariaDB 버전 10.6을 설치 하겠습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2837855b4b219b4e018e73337665486c.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;631&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VEqcI/btsJyA3slvm/hiUTKFAbPkBWaTUwUvmQ50/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VEqcI/btsJyA3slvm/hiUTKFAbPkBWaTUwUvmQ50/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VEqcI/btsJyA3slvm/hiUTKFAbPkBWaTUwUvmQ50/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVEqcI%2FbtsJyA3slvm%2FhiUTKFAbPkBWaTUwUvmQ50%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;631&quot; data-filename=&quot;2837855b4b219b4e018e73337665486c.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;631&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.2 MariaDB yum 저장소 추가&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;vi 텍스트 편집기를 이용해 다음과 같이 입력하고 저장&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725950389885&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vi /etc/yum.repos.d/MariaDB.repo&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725950410744&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# MariaDB 10.6 CentOS repository list - created 2023-02-01 04:18 UTC
# https://mariadb.org/download/
[mariadb]
name = MariaDB
baseurl = https://tw1.mirror.blendbyte.net/mariadb/yum/10.6/centos7-amd64
gpgkey=https://tw1.mirror.blendbyte.net/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. MariaDB 설치&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;yum을 통해 MariaDB설치&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725950488814&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;yum install MariaDB&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치가 완료되고 제대로 설치가 완료됐는지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725950502556&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;rpm -qa | grep MariaDB
MariaDB-compat-10.6.11-1.el7.centos.x86_64
MariaDB-client-10.6.11-1.el7.centos.x86_64
MariaDB-common-10.6.11-1.el7.centos.x86_64
MariaDB-server-10.6.11-1.el7.centos.x86_64&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;또는 MariaDB 버전을 통해 확인 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725950517278&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mariadb --version&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. MariaDB 시작 및 패스워드 변경&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MariaDB 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725950543657&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl start mariadb&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MariaDB ROOT 패스워드 변경&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725950557698&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/usr/bin/mysqladmin -u root (변경할 비밀번호)&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MariaDB가&amp;nbsp;제대로 서비스가 되고 있는지 포트 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725950579644&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;netstat -anp | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      32131/mariadbd&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. MariaDB-Server 및 MariaDB-Client 설정&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MariaDB-Server 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725950610508&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## 설정파일 위치 /etc/my.cnf.d/server.cnf

vi /etc/my.cnf.d/server.cnf&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;server.cnf 파일 안에 [mysqld] 항목 아래에 아래와 같이 설정 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725950637330&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
#

# this is read by the standalone daemon and embedded servers
[server]

# this is only for the mysqld standalone daemon
[mysqld]
character-set-server=utf8mb4   ## 서버 인코딩을 utf8로 설정
collation-server=utf8mb4_bin   ## 서버 인코딩을 utf8로 설정
autocommit=0                   ## 커밋된 데이터만 읽기로 설정
lower_case_table_names=1       ## 대소문자 구문 안하기로 설정
sql_mode=&quot;ANSI_QUOTES&quot;         ## (&quot;&quot;, 더블 쿼테이션) 사용 허용

### utf8 과 utf8mb4 차이
### utf8은 최초 mysql 설계시 utf8 규격에 4byte에 할당 된 문자가 없어 3byte로 설계 되었으나,4byte에 할당 된 문자 (이모티콘 문자)가 나오면서 4byte 확장을 위해 utf8mb4를 추가함utf8mb4로 접근 할 것을 권장.

#
# * Galera-related settings
#
[galera]
# Mandatory settings
#wsrep_on=ON
#wsrep_provider=
#wsrep_cluster_address=
#binlog_format=row
#default_storage_engine=InnoDB
#innodb_autoinc_lock_mode=2
#
# Allow server to accept connections on all interfaces.
#
#bind-address=0.0.0.0
#
# Optional setting
#wsrep_slave_threads=1
#innodb_flush_log_at_trx_commit=0

# this is only for embedded server
[embedded]

# This group is only read by MariaDB servers, not by MySQL.
# If you use the same .cnf file for MySQL and MariaDB,
# you can put MariaDB-only options here
[mariadb]

# This group is only read by MariaDB-10.6 servers.
# If you use the same .cnf file for MariaDB of different versions,
# use this group for options that older servers don't understand
[mariadb-10.6]&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MariaDB-Client 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725950654739&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## 설정파일 위치 : /etc/my.cnf.d/mysql-clients.cnf
vi /etc/my.cnf.d/mysql-clients.cnf&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725950661272&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#
# These groups are read by MariaDB command-line tools
# Use it for options that affect only one utility
#
[mysql]
default-character-set=utf8mb4

[mysql_upgrade]

[mysqladmin]

[mysqlbinlog]

[mysqlcheck]

[mysqldump]
default-character-set=utf8mb4

[mysqlimport]

[mysqlshow]

[mysqlslap]&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MariaDB 시작 또는 실행되어 있을 경우 재시작&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725950674202&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl start mariadb
##또는
systemctl restart mariadb&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 접속 확인&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MariaDB 접속 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725950705336&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mysql
## 또는
mysql -u root -p&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 부팅 시 자동시작 설정&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자동 시작&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725950733005&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl enable mariadb
## 또는
systemctl is-enabled mariadb&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자동 끔&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725950747203&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl disable mariadb&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>데이터베이스/MySQL&amp;bull;MariaDB</category>
      <category>db</category>
      <category>DBMS</category>
      <category>mariadb</category>
      <category>MySQL</category>
      <category>마리아디비</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/22</guid>
      <comments>https://bigdwarf.tistory.com/22#entry22comment</comments>
      <pubDate>Sat, 21 Sep 2024 00:15:26 +0900</pubDate>
    </item>
    <item>
      <title>Ubuntu에서 Apache2 설치 및 Tomcat 연동</title>
      <link>https://bigdwarf.tistory.com/20</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Apache_HTTP_Server-2048x1292-optimized.webp&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;1292&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VCInP/btsJyrS8eFC/Kem5kphK2PlkQvxenWKGnK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VCInP/btsJyrS8eFC/Kem5kphK2PlkQvxenWKGnK/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VCInP/btsJyrS8eFC/Kem5kphK2PlkQvxenWKGnK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVCInP%2FbtsJyrS8eFC%2FKem5kphK2PlkQvxenWKGnK%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2048&quot; height=&quot;1292&quot; data-filename=&quot;Apache_HTTP_Server-2048x1292-optimized.webp&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;1292&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. Apache2 설치 및 설정&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Apache2 설치하기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725948320997&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt-get install apache2&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Apache2 실행 중인지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725948354029&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo&amp;nbsp;systemctl&amp;nbsp;status&amp;nbsp;apache2&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Apache2가 실행 중이 아니라면 아래 명령어로 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725948366321&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo systemctl start apache2&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Apache2가 부팅 시 자동 실행되도록 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725948383955&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo systemctl enable apache2&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Apache2는 HTTP 웹 서버로, 클라이언트로부터 요청을 받아 해당하는 웹 페이지를 전달하는 역할을 합니다. 따라서 Apache2를 설치하고 실행하는 것은 Tomcat과 연동하기 위한 기본적인 준비과정입니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. Tomcat 설치 및 설정&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Tomcat은 Java Servlet 및 Java Server Pages와 같은 Java EE (Enterprise Edition) 기능을 제공하는 Java 웹 애플리케이션 서버입니다. Tomcat을 설치하고 압축을 해제하는 것은 Apache2와의 연동을 위한 기본적인 준비과정입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Tomcat 8.5 다운로드&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725948437837&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.86/bin/apache-tomcat-8.5.86.tar.gz&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Tomcat 8.5 압축 해제&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725948452957&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;tar -zxvf apache-tomcat-8.5.69.tar.gz&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Tomcat&amp;nbsp;8.5 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725948506082&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#설치된 톰캣 위치
cd apache-tomcat-8.5.69/bin/
./startup.sh&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Tomcat 8.5 이 실행 중인지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725948526063&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ps -efc | grep tomcat&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. mod_jk 설치 및 설정&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;mod_jk 설치&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725948588039&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt-get install libapache2-mod-jk&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;mod_jk workers.properties 파일 수정&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725948603549&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo vi /etc/libapache2-mod-jk/workers.properties&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;workers.properties&amp;nbsp;아래 내용 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725948619533&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;worker.list=worker1 [woker(톰캣) 인스턴스]

workers.java_home=[JDK가 설치된 경로]

worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;WAS(톰캣) 여러 개 일 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725948637242&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;worker.list=worker1,worker2 [woker(톰캣) 인스턴스]

workers.java_home=[JDK가 설치된 경로]

worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009 [WAS(톰캣) Server.xml 설정 할 AJP 포트] # 포트 중복 안되도록 주의

worker.worker2.type=ajp13
worker.worker2.host=localhost
worker.worker2.port=8010 [WAS(톰캣) Server.xml 설정 할 AJP 포트] # 포트 중복 안되도록 주의&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Apache 설정파일 수정&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725948655597&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;VirtualHost *:80&amp;gt;
        ServerName [도메인 주소] # ex) naver.com
        ServerAlias [서브 도메인] # ex) blog.naver.com news.naver.com
        DocumentRoot [DocumentRoot 디렉토리 설정]
        JkMount /* [workers.properties 지정한 woker(톰캣) 인스턴스 명] ex) worker1

        # 아래 내용은 http -&amp;gt; hhtps 리다이렉트 설정
        &amp;lt;IfModule mod_rewrite.c&amp;gt;
                RewriteEngine On
                RewriteCond %{HTTPS} off
                RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
        &amp;lt;/IfModule&amp;gt;

        # 아파치 에러 로그 파일 설정 (필자는 보통 도메인명으로 설정)
        ErrorLog ${APACHE_LOG_DIR}/도메인명-error.log # ex) www.naver.com-error.log
        CustomLog ${APACHE_LOG_DIR}/도메인명-access.log combined # ex) www.naver.com-access.log
&amp;lt;/VirtualHost&amp;gt;
&amp;lt;VirtualHost *:443&amp;gt;
        ServerName [도메인 주소] # ex) naver.com
        ServerAlias [서브 도메인] # ex) blog.naver.com news.naver.com
        DocumentRoot [DocumentRoot 디렉토리 설정]
        JkMount /* [workers.properties 지정한 woker(톰캣) 인스턴스 명] ex) worker1

        # www 강제로 붙이기
        &amp;lt;IfModule mod_rewrite.c&amp;gt;
                RewriteEngine On
                RewriteCond %{HTTP_HOST} !^www\. [NC]
                RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
        &amp;lt;/IfModule&amp;gt;

        # 아파치 에러 로그 파일 설정 (필자는 보통 도메인명으로 설정)
        ErrorLog ${APACHE_LOG_DIR}/도메인명-error.log # ex) www.naver.com-error.log
        CustomLog ${APACHE_LOG_DIR}/도메인명-access.log combined # ex) www.naver.com-access.log

        # 아래 내용은 SSL 적용 필자는 무료 SSL(letsencrypt) 사용
        SSLEngine on
        SSLCertificateFile &quot;/etc/letsencrypt/live/도메인주소/cert.pem&quot;
        SSLCertificateKeyFile &quot;/etc/letsencrypt/live/도메인주소/privkey.pem&quot;
        SSLCertificateChainFile &quot;/etc/letsencrypt/live/도메인주소/chain.pem&quot;
&amp;lt;/VirtualHost&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;강제로 https로 접속 설정 방법&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725948688117&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;IfModule mod_rewrite.c&amp;gt;
RewriteEngine on
 
RewriteRule ^ - [E=protossl]
RewriteCond %{HTTPS} on
RewriteRule ^ - [E=protossl:s]
 
# https 강제이동.
# RewriteCond %{HTTPS} !=on
# RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
 
# www 강제로 붙이기.
# RewriteCond %{HTTP_HOST} .
# RewriteCond %{HTTP_HOST} !^www\. [NC]
# RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
 
# www 가 붙어있으면 떼기.
# RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
# RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]
 
&amp;lt;/IfModule&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Apache2 재시작&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725948699719&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo systemctl restart apache2&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. mod_jk와 톰캣 연동&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치된 Tomcat conf 디렉토리 server.xml 수정&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725948799542&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#설치된 톰캣 위치
sudo vi apache-tomcat-8.5.69/conf/server.xml&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725948809697&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#기존 주석 처리 되어 있던 아래 내용을 오픈 합니다.
&amp;lt;!-- Define an AJP 1.3 Connector on port 8009 --&amp;gt;
&amp;lt;Connector protocol=&quot;AJP/1.3&quot;
               address=&quot;0.0.0.0&quot;
               port=&quot;8009&quot;
               redirectPort=&quot;8443&quot;
               secretRequired = &quot;false&quot;
               /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치된 Tomcat 재시작&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725948829289&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cd apache-tomcat-8.5.69/bin/
./stop.sh

# 조금 기다린 후
./startup.sh&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Tomcat 연결되었는지 확인
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;웹 브라우저에서 ServerName주소[예)&amp;nbsp;&lt;span style=&quot;color: #2ecc71;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;a style=&quot;color: #009a87;&quot; href=&quot;http://naver.com/&quot;&gt;http://naver.com/&lt;/a&gt;&lt;/span&gt; 또는 localhost로 지정했다면 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;a style=&quot;color: #009a87;&quot; href=&quot;http://localhost/&quot; data-cke-saved-href=&quot;http://localhost/&quot;&gt;http://localhost/&lt;/a&gt;&lt;/span&gt;]를 열어본다. Tomcat의 인덱스 페이지가 보인다면 mod_jk가 제대로 연동된 것이다.&lt;/li&gt;
&lt;li&gt;http에서 https 접속 설정은 해놨으면 http로 접속해도 https로 접속이 됩니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>서버/Web Server</category>
      <category>Apache</category>
      <category>webserver</category>
      <category>아파치</category>
      <category>웹서버</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/20</guid>
      <comments>https://bigdwarf.tistory.com/20#entry20comment</comments>
      <pubDate>Fri, 20 Sep 2024 10:46:39 +0900</pubDate>
    </item>
    <item>
      <title>우분투(Ubuntu) Linux MariaDB 설치 및 DB, 계정 생성</title>
      <link>https://bigdwarf.tistory.com/21</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;24d0496ed810238d50135d58bd52b953.jpg&quot; data-origin-width=&quot;639&quot; data-origin-height=&quot;577&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wuDOM/btsJxk8hEgo/RrTmqpF9RRBaAogUw7d5gK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wuDOM/btsJxk8hEgo/RrTmqpF9RRBaAogUw7d5gK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wuDOM/btsJxk8hEgo/RrTmqpF9RRBaAogUw7d5gK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwuDOM%2FbtsJxk8hEgo%2FRrTmqpF9RRBaAogUw7d5gK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;639&quot; height=&quot;577&quot; data-filename=&quot;24d0496ed810238d50135d58bd52b953.jpg&quot; data-origin-width=&quot;639&quot; data-origin-height=&quot;577&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. MariaDB 설치하기&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MariaDB의 Server와 Client 패키지 설치&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725949291210&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apt install mariadb-server mariadb-client&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MariaDB 접속 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725949310329&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mariadb&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. MariaDB 보안 설정&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아래 명령어를 입력하면 root에 대한 패스워드 및 테스트 테이블에 대한 삭제 등을 진행하실 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725949380375&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mariadb-secure-installation&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725949386668&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
 
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
 
Enter current password for root (enter for none):
OK, successfully used password, moving on...
 
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
## root 암호 설정 여부 : Y 권장
Set root password? [Y/n]

New password: mariadb!
Re-enter new password: mariadb! 
Password updated successfully!
Reloading privilege tables..
 ... Success!
 
 
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
## 익명 사용자 삭제 여부 : Y 권장
Remove anonymous users? [Y/n]

... Success!
 
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
## root 원격 접속 차단 여부 : Y 권장
Disallow root login remotely? [Y/n]

... Success!
 
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
## 테스트 DB 및 접속 정보 삭제 여부 : Y 권장
Remove test database and access to it? [Y/n]

- Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
 
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
## 지금까지 설정한 권한 정보 적용 여부 : Y 권장
Reload privilege tables now? [Y/n]

Cleaning up...
 
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
 
Thanks for using MariaDB!

## 설정 완료&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설정 후 MariaDB 정상적으로 접속되는지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725949409108&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#관리자 권한으로 DB접속
mariadb
#일반 계정으로 DB접속
mariadb -uroot -p
password 입력&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt; 3. MariaDB 테이블 대소문자 구분 설정 해제 및 기본 포트 변경&lt;/b&gt;&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  최초로 MariaDB를 설치하면 리눅스 파일 시스템 기본 설정 상 윈도우와 다르게 테이블 이름이 대소문자를 구분 윈도우와 함께 이용하는 에이전트등에 문제가 있을 수 있기에 해당 설정을 먼저 수정해 주는 편이나, 사내 정책에 맞춰 적용 필요&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MariaDB 대소문자 구분 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725949469613&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# DB 접속
mariadb&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725949482116&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;##&amp;nbsp;MariaDB&amp;nbsp;접속&amp;nbsp;후
show&amp;nbsp;variables&amp;nbsp;like&amp;nbsp;'lower_case_table_names';&lt;/code&gt;&lt;/pre&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 22.6744%;&quot;&gt;&lt;b&gt; lower_case_table_name &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 77.3256%;&quot;&gt;&lt;b&gt; 기능 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 22.6744%;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 77.3256%;&quot;&gt;테이블 대소문자 구분&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 22.6744%;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 77.3256%;&quot;&gt;테이블 대소문자 구분 없이 소문자로 저장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 22.6744%;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 77.3256%;&quot;&gt;윈도우에서 테이블 대소문자 구분&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MariaDB 서버 설정 파일을 관리자 권한으로 vi 문서 편집기를 이용하여 수정&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725949540425&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vi /etc/mysql/mariadb.conf.d/50-server.cnf&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주석처리 된 port 부분을 주석 해제한 뒤 원하는 임의의 포트를 입력 (MariaDB의 기본포트는 3306)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725949554518&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# this is only for the mysqld standalone daemon
[mysqld]

#
# * Basic Settings
#

#user                  = mysql
pid-file               = /run/mysqld/mysqld.pid
basedir                = /usr
#datadir                = /var/lib/mysql
#tmpdir                 = /tmp
port                   = 3306
lower_case_table_names = 0&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MariaDB의 서비스를 다시 시작&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725949569954&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;service mariadb restart
## 또는
systemctl restart mysql&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;lower_case_table_name 설정이 변경 됬는지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725949587384&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## MariaDB 접속 후
show variables like 'lower_case_table_names';&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;포트가 정상적으로 변경 되었는지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725949599835&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;telnet localhost 포트번호
## 또는
netstat -tnlp&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 방화벽 설정&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위에서 지정한 포트(3306) UFW를 이용하여 방화벽 열기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725949639106&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## UFW 활성화
ufw enable

## 지정한 포트(3306) 방화벽 열기
ufw allow 3306

## UFW 상태 확인
ufw status verbose&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;nbsp;아래 우분투(Ubuntu) 방화벽(UFW) 설정 글 참고&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://bigdwarf.blog/13&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.09.09 - [OS/Linux] - 우분투(Ubuntu) 방화벽(UFW) 설정&lt;/a&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 외부 접속 설정&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MariaDB 설정 파일 50-server.cnf 문서 편집기로 열기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725949786640&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## MariaDB 설정 경로로 이동
cd /etc/mysql/mariadb.conf.d/
## server 설정 파일을 vu 문서 편집기 열기
vi 50-server.cnf&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;50-server.cnf 설정 파일 수정&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725949802076&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## bind-address 항목을 0.0.0.0으로 변경합니다. (혹은 #을 통한 주석 처리로도 가능함.) 

# localhost which is more compatible and is not less secure.
## 아래 주석 처리 또는 0.0.0.0으로 변경
# bind-address                = 127.0.0.1

#
# * Find Tuning
#

#key_buffer_size           = 128M
#max_allowed_packet        = 1G&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;변경이 완료된 후 설정 파일 적용을 위해 서비스 재시작&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725949835662&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## MariaDB service 재시작
service mariadb restart
## 또는
systemctl restart mysql&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. DB, 계정 생성 및 권한 부여&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DB, 계정 생성 및 권한 부여&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725949868897&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## MariaDB에 접속
mariadb&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725949880154&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## (dbname)으로 데이터베이스 생성
CREATE DATABASE DB명;
## (userID) 계정을 (password) 비밀번호로 모든 IP주소('%')를 통하여 접근 가능하게 생성
CREATE USER 'User명'@'%' IDENTIFIED BY '비밀번호';
## (dbname) 아래 있는 전체 테이블(*)에 대하여 생성된 (userID) 계정에 전체 권한을 줌
GRANT ALL PRIVILEGES ON (dbname).* TO '(User명)'@'%';
## 현재 설정된 유저 권한을 적용 함
FLUSH PRIVILEGES;
## MariaDB 접속 종료
EXIT;&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. MariaDB 삭제&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MariaDB 패키지를 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725949926109&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo dpkg -l | grep mariadb 

ii  mariadb-client-10.3                        1:10.3.32-0ubuntu0.20.04.1            amd64        MariaDB database client binaries
ii  mariadb-client-core-10.3                   1:10.3.32-0ubuntu0.20.04.1            amd64        MariaDB database core client binaries
ii  mariadb-common                             1:10.3.32-0ubuntu0.20.04.1            all          MariaDB common metapackage
ii  mariadb-server                             1:10.3.32-0ubuntu0.20.04.1            all          MariaDB database server (metapackage depending on the latest version)
ii  mariadb-server-10.3                        1:10.3.32-0ubuntu0.20.04.1            amd64        MariaDB database server binaries
ii  mariadb-server-core-10.3                   1:10.3.32-0ubuntu0.20.04.1            amd64        MariaDB database core server files&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MariaDB 패키지 삭제&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725949945055&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt-get purge mariadb-server
sudo apt-get purge mariadb-server-10.3
sudo apt-get purge mariadb-client-10.3
sudo apt-get purge mariadb-server-core-10.3
sudo apt-get purge mariadb-client-core-10.3
sudo apt-get purge mariadb-common&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>데이터베이스/MySQL&amp;bull;MariaDB</category>
      <category>db</category>
      <category>DBMS</category>
      <category>mariadb</category>
      <category>마리아디비</category>
      <category>우분투</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/21</guid>
      <comments>https://bigdwarf.tistory.com/21#entry21comment</comments>
      <pubDate>Thu, 19 Sep 2024 22:53:10 +0900</pubDate>
    </item>
    <item>
      <title>Redhat 계열 Linux에 Jeus8 앱 배포</title>
      <link>https://bigdwarf.tistory.com/19</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;다운로드.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjsU2Q/btsJwVHS7Gi/fREtc9yxatlbpjuSzAeNnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjsU2Q/btsJwVHS7Gi/fREtc9yxatlbpjuSzAeNnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjsU2Q/btsJwVHS7Gi/fREtc9yxatlbpjuSzAeNnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjsU2Q%2FbtsJwVHS7Gi%2FfREtc9yxatlbpjuSzAeNnK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;640&quot; data-filename=&quot;다운로드.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;a href=&quot;https://bigdwarf.blog/18&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.09.10 - [서버/WAS] - Redhat 계열 Linux에 Jeus8 설치&lt;/a&gt;&lt;/blockquote&gt;
&lt;figure id=&quot;og_1728615002810&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Redhat 계열 Linux에 Jeus8 설치&quot; data-og-description=&quot;1. 들어가며✅ Jeus8 설치하며 정리한 글이며, 이 정리글은 방화벽을 꺼둔상태에서 작업했기때문에 이글을 읽으신 모든 분들은 방화벽 열고 닫는 작업을 따로 해주셔야됩니다 :)2. Jeus8 설치 전 사&quot; data-og-host=&quot;bigdwarf.blog&quot; data-og-source-url=&quot;https://bigdwarf.blog/18&quot; data-og-url=&quot;https://bigdwarf.blog/18&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/gsvSo/hyXhRDyuxY/hrwUfB64z31jNlZ1laoEkK/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640,https://scrap.kakaocdn.net/dn/bmFvK6/hyXee8iBxQ/fNjCglkpPX3iM8mKUnXDG0/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640,https://scrap.kakaocdn.net/dn/cxPRWt/hyXhWLDNnB/u8w2GvIGQqslRCuCYODW8K/img.jpg?width=1921&amp;amp;height=1081&amp;amp;face=0_0_1921_1081&quot;&gt;&lt;a href=&quot;https://bigdwarf.blog/18&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://bigdwarf.blog/18&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/gsvSo/hyXhRDyuxY/hrwUfB64z31jNlZ1laoEkK/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640,https://scrap.kakaocdn.net/dn/bmFvK6/hyXee8iBxQ/fNjCglkpPX3iM8mKUnXDG0/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640,https://scrap.kakaocdn.net/dn/cxPRWt/hyXhWLDNnB/u8w2GvIGQqslRCuCYODW8K/img.jpg?width=1921&amp;amp;height=1081&amp;amp;face=0_0_1921_1081');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Redhat 계열 Linux에 Jeus8 설치&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. 들어가며✅ Jeus8 설치하며 정리한 글이며, 이 정리글은 방화벽을 꺼둔상태에서 작업했기때문에 이글을 읽으신 모든 분들은 방화벽 열고 닫는 작업을 따로 해주셔야됩니다 :)2. Jeus8 설치 전 사&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;bigdwarf.blog&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.1 목적&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✅ &amp;nbsp;Linux Jeus8 앱 배포하면서 정리하는 글&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.2 구성환경&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Jeus8 버전&lt;/li&gt;
&lt;li&gt;Rocky Linux 9.2&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.3 앱 배포 방식(Archive &amp;amp; Exploded)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Jeus 앱 배포 방식은 Archive, Exploded&amp;nbsp;&amp;nbsp;두 가지 방법이 존재합니다. 두 가지 방법 중 환경에 따라 선택해서 진행하시면 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. &lt;b&gt;Jeus8 Archive 앱 배포&lt;/b&gt; &lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.1 Install&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;http://서버IP:9736/webadmin 로그인 &amp;rarr; Applications 이동 후 &amp;rarr; install 버튼 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ba546e8c47841a37550a2051a83dc9a4.jpg&quot; data-origin-width=&quot;1098&quot; data-origin-height=&quot;857&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IOeAB/btsJxxzx1Lv/aSxCgLo3JveY6k0dRDo8I1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IOeAB/btsJxxzx1Lv/aSxCgLo3JveY6k0dRDo8I1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IOeAB/btsJxxzx1Lv/aSxCgLo3JveY6k0dRDo8I1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIOeAB%2FbtsJxxzx1Lv%2FaSxCgLo3JveY6k0dRDo8I1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1098&quot; height=&quot;857&quot; data-filename=&quot;ba546e8c47841a37550a2051a83dc9a4.jpg&quot; data-origin-width=&quot;1098&quot; data-origin-height=&quot;857&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;애플리케이션 ID 값을 지정해 준다. 단, ID 값은 도메인에 유일한 값이어야 한다.&lt;/li&gt;
&lt;li&gt;배포할 파일을 내 로컬 PC에서 업로드를 진행하면 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a09c7b6c18ce80de6bb552685b5d3b9a.jpg&quot; data-origin-width=&quot;1118&quot; data-origin-height=&quot;856&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/taMWG/btsJwdbfOmW/KYFW19uptIYOylIhXxNKnk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/taMWG/btsJwdbfOmW/KYFW19uptIYOylIhXxNKnk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/taMWG/btsJwdbfOmW/KYFW19uptIYOylIhXxNKnk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtaMWG%2FbtsJwdbfOmW%2FKYFW19uptIYOylIhXxNKnk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1118&quot; height=&quot;856&quot; data-filename=&quot;a09c7b6c18ce80de6bb552685b5d3b9a.jpg&quot; data-origin-width=&quot;1118&quot; data-origin-height=&quot;856&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.2 Deploy &lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Deploy 진행할 앱을 목록 중 선택 후 &amp;rarr; Deploy 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;f75ee23782d662f32b6b2c5fd389dc7c.jpg&quot; data-origin-width=&quot;1094&quot; data-origin-height=&quot;854&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bU0HMc/btsJxgdK2HU/oOCNcH5vwwdcU0YckUdKH0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bU0HMc/btsJxgdK2HU/oOCNcH5vwwdcU0YckUdKH0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bU0HMc/btsJxgdK2HU/oOCNcH5vwwdcU0YckUdKH0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbU0HMc%2FbtsJxgdK2HU%2FoOCNcH5vwwdcU0YckUdKH0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1094&quot; height=&quot;854&quot; data-filename=&quot;f75ee23782d662f32b6b2c5fd389dc7c.jpg&quot; data-origin-width=&quot;1094&quot; data-origin-height=&quot;854&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;앱을 배포한 서버를 선택해 준다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;bed2cae32005c7f0134bf5905d6ff499.jpg&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;855&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JCDhr/btsJyAoMhC9/Iv3bwmulxkQ2eIpcawPpXK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JCDhr/btsJyAoMhC9/Iv3bwmulxkQ2eIpcawPpXK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JCDhr/btsJyAoMhC9/Iv3bwmulxkQ2eIpcawPpXK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJCDhr%2FbtsJyAoMhC9%2FIv3bwmulxkQ2eIpcawPpXK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1072&quot; height=&quot;855&quot; data-filename=&quot;bed2cae32005c7f0134bf5905d6ff499.jpg&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;855&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;고급 선택사항 하단에 context Path 지정해 주고 확인 버튼 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;f24fa1db06b978f90eb8ad5cde20a4bb.jpg&quot; data-origin-width=&quot;1141&quot; data-origin-height=&quot;510&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mx7LV/btsJxBBU3Cb/vnGZxBp3wHrKqpxZkGfIy1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mx7LV/btsJxBBU3Cb/vnGZxBp3wHrKqpxZkGfIy1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mx7LV/btsJxBBU3Cb/vnGZxBp3wHrKqpxZkGfIy1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmx7LV%2FbtsJxBBU3Cb%2FvnGZxBp3wHrKqpxZkGfIy1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1141&quot; height=&quot;510&quot; data-filename=&quot;f24fa1db06b978f90eb8ad5cde20a4bb.jpg&quot; data-origin-width=&quot;1141&quot; data-origin-height=&quot;510&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;동일한 서버에 앱이 실행되어 있으면 배포가 되지 않습니다. 아래와 같이 INSTALLED 상태에서 멈춤&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a7f1ca56e186c70e8a7e669211293ef8.jpg&quot; data-origin-width=&quot;809&quot; data-origin-height=&quot;93&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEKzT8/btsJx2TBxkX/dZNAzg9Zp34CrZw5oz3LBk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEKzT8/btsJx2TBxkX/dZNAzg9Zp34CrZw5oz3LBk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEKzT8/btsJx2TBxkX/dZNAzg9Zp34CrZw5oz3LBk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEKzT8%2FbtsJx2TBxkX%2FdZNAzg9Zp34CrZw5oz3LBk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;809&quot; height=&quot;93&quot; data-filename=&quot;a7f1ca56e186c70e8a7e669211293ef8.jpg&quot; data-origin-width=&quot;809&quot; data-origin-height=&quot;93&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정상적으로 배포가 됐을 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a4e2c0c3779e3c0ca2172f3ab77b5824.jpg&quot; data-origin-width=&quot;802&quot; data-origin-height=&quot;67&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRAUCi/btsJx9yn1XH/6IbOY2iuzyTdMw4jmtygbK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRAUCi/btsJx9yn1XH/6IbOY2iuzyTdMw4jmtygbK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRAUCi/btsJx9yn1XH/6IbOY2iuzyTdMw4jmtygbK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRAUCi%2FbtsJx9yn1XH%2F6IbOY2iuzyTdMw4jmtygbK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;802&quot; height=&quot;67&quot; data-filename=&quot;a4e2c0c3779e3c0ca2172f3ab77b5824.jpg&quot; data-origin-width=&quot;802&quot; data-origin-height=&quot;67&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1725947537556&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;❗Archive 배포 파일 위치
   $JEUS_INSTALL_DIR/domains/domainName/.applications/application_ID/archive_file_name
   /home/jeus/domains/jeus_domain/.applications/deployTest/deployTest.war

❗배포된 소스 위치
  $JEUS_INSTALL_DIR/domains/jeus_domain/server/SERVER_ID/.workspace/deployed/application_ID/fileName_extension__
  /home/jeus/domains/jeus_domain/servers/server1/.workspace/deployed/deployTest/deployTest_war___/index.html&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. Jeus8 Exploded 앱 배포&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.1 Deploy&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;deploy 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;50a3dd631942cc23a83dc692b0acd3d6.jpg&quot; data-origin-width=&quot;1142&quot; data-origin-height=&quot;857&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKJvc2/btsJxk1wniG/Iy27QEIhqgsivGiMofRX8k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKJvc2/btsJxk1wniG/Iy27QEIhqgsivGiMofRX8k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKJvc2/btsJxk1wniG/Iy27QEIhqgsivGiMofRX8k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKJvc2%2FbtsJxk1wniG%2FIy27QEIhqgsivGiMofRX8k%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1142&quot; height=&quot;857&quot; data-filename=&quot;50a3dd631942cc23a83dc692b0acd3d6.jpg&quot; data-origin-width=&quot;1142&quot; data-origin-height=&quot;857&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;id &lt;/b&gt;: 애플리케이션 ID&lt;/li&gt;
&lt;li&gt;&lt;b&gt;path &lt;/b&gt;: 서버에 있는 배포파일 위치 ex) /home/jeus/application/deployTest/deployTest.war&lt;br /&gt;배포파일이 아닌 직접 앱 디렉터리 Path를 지정해 줄 수도 있습니다. ex)&amp;nbsp;/home/jeus/application/deployTest&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Target Server &lt;/b&gt;: 배포할 서버&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;5ba027b46bdbe163508d185db902b3a6.jpg&quot; data-origin-width=&quot;1175&quot; data-origin-height=&quot;967&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sGLqV/btsJwXMvqp1/JeVdkfRKPItiPPYWXn44Jk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sGLqV/btsJwXMvqp1/JeVdkfRKPItiPPYWXn44Jk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sGLqV/btsJwXMvqp1/JeVdkfRKPItiPPYWXn44Jk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsGLqV%2FbtsJwXMvqp1%2FJeVdkfRKPItiPPYWXn44Jk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1175&quot; height=&quot;967&quot; data-filename=&quot;5ba027b46bdbe163508d185db902b3a6.jpg&quot; data-origin-width=&quot;1175&quot; data-origin-height=&quot;967&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;고급 선택사항 하단에 context Path 지정해 주고 확인 버튼 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;8d794a9ffc5f93f67e9bb3cd2420b883.jpg&quot; data-origin-width=&quot;803&quot; data-origin-height=&quot;575&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bE02sD/btsJwy0xjSL/kZsLuu15fgZwc5uKWtKOiK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bE02sD/btsJwy0xjSL/kZsLuu15fgZwc5uKWtKOiK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bE02sD/btsJwy0xjSL/kZsLuu15fgZwc5uKWtKOiK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbE02sD%2FbtsJwy0xjSL%2FkZsLuu15fgZwc5uKWtKOiK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;803&quot; height=&quot;575&quot; data-filename=&quot;8d794a9ffc5f93f67e9bb3cd2420b883.jpg&quot; data-origin-width=&quot;803&quot; data-origin-height=&quot;575&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정상적으로 배포가 됐을 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;dc1fe08ee840f07dd34dd0dee36784c4.jpg&quot; data-origin-width=&quot;802&quot; data-origin-height=&quot;67&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OMqJi/btsJxl0pq4I/Tf5K5FfiCO6OY6ED0Razek/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OMqJi/btsJxl0pq4I/Tf5K5FfiCO6OY6ED0Razek/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OMqJi/btsJxl0pq4I/Tf5K5FfiCO6OY6ED0Razek/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOMqJi%2FbtsJxl0pq4I%2FTf5K5FfiCO6OY6ED0Razek%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;802&quot; height=&quot;67&quot; data-filename=&quot;dc1fe08ee840f07dd34dd0dee36784c4.jpg&quot; data-origin-width=&quot;802&quot; data-origin-height=&quot;67&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1725947712313&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;❗Exploded 배포 파일 위치 (배포파일 또는 앱폴더 경로로 잡아서 작업 가능)
  /home/jeus/applicatios/deployTest.war 또는 /home/jeus/applicatios/deployTest 소스폴더

❗배포파일로 배포됬을 경우 소스 위치
 $JEUS_INSTALL_DIR/domains/jeus_domain/server/SERVER_ID/.workspace/deployed/application_ID/fileName_extension__
  /home/jeus/domains/jeus_domain/servers/server1/.workspace/deployed/deployTest/deployTest_war___/index.html

❗앱폴더로 배포됬을 경우 소스 위치
   /앱폴더 위치
  /home/jeus/applicatios/deployTest/index.html&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. http://서버IP:8088/ 접속&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.1 배포가 잘되었는지 확인&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2faf0237d46f4c49af83c803507b2872.jpg&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1081&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Bhoot/btsJxUuw7oM/RQ9XRqAR9jg7ujuMdamzLK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Bhoot/btsJxUuw7oM/RQ9XRqAR9jg7ujuMdamzLK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Bhoot/btsJxUuw7oM/RQ9XRqAR9jg7ujuMdamzLK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBhoot%2FbtsJxUuw7oM%2FRQ9XRqAR9jg7ujuMdamzLK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1921&quot; height=&quot;1081&quot; data-filename=&quot;2faf0237d46f4c49af83c803507b2872.jpg&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1081&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>서버/WAS</category>
      <category>Jeus</category>
      <category>TMax</category>
      <category>was</category>
      <category>web application server</category>
      <category>제우스</category>
      <category>티맥스</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/19</guid>
      <comments>https://bigdwarf.tistory.com/19#entry19comment</comments>
      <pubDate>Wed, 18 Sep 2024 00:22:34 +0900</pubDate>
    </item>
    <item>
      <title>Redhat 계열 Linux에 Jeus8 설치</title>
      <link>https://bigdwarf.tistory.com/18</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목을-입력해주세요_-002 (2).png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crbZ1k/btsJxWZO9sS/MjoKT4uhIGGBFam8xPCQJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crbZ1k/btsJxWZO9sS/MjoKT4uhIGGBFam8xPCQJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crbZ1k/btsJxWZO9sS/MjoKT4uhIGGBFam8xPCQJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrbZ1k%2FbtsJxWZO9sS%2FMjoKT4uhIGGBFam8xPCQJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;640&quot; data-filename=&quot;제목을-입력해주세요_-002 (2).png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✅ Jeus8 설치하며 정리한 글이며, 이 정리글은 방화벽을 꺼둔상태에서 작업했기때문에 이글을 읽으신 모든 분들은 방화벽 열고 닫는 작업을 따로 해주셔야됩니다 :)&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. Jeus8 설치 전 사전 준비&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.1 JDK7 또는 JDK 8 설치&lt;/b&gt;&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;❗Jeus8은 JDK 7 또는 JDK 8 2GB 이상의 하드디스크 여유 공간이 필요합니다. yum을 통한 패키지 설치 진행하기전 설치가능한 JDK 버전 확인&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;yum을 통한 패키지 설치 진행하기전 설치가능한 JDK 버전 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725944757697&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 설치 가능한 JDK 버전 확인
yum list java*jdk-devel&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치가능한 패키지 리스트 중 JDK 8 확인 (&lt;code&gt;java-1.8.0-openjdk-devel.x86_64&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725944798544&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Last metadata expiration check: 1:53:20 ago on Thu 14 Sep 2023 12:17:02 PM KST.
Available Packages
java-1.8.0-openjdk-devel.x86_64     1:1.8.0.382.b05-2.el9               appstream
java-11-openjdk-devel.x86_64        1:11.0.20.0.8-3.el9                 appstream
java-17-openjdk-devel.x86_64        1:17.0.8.0.7-2.el9                  appstream&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;yum을 통한 패키지 설치 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725944814459&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# JAVA 8 설치
yum install java-1.8.0-openjdk-devel.x86_64&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;버전 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725944843665&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# JAVA 버전 확인
java -version

openjdk version &quot;1.8.0_382&quot;
OpenJDK Runtime Environment (build 1.8.0_382-b05)
OpenJDK 64-Bit Server VM (build 25.382-b05, mixed mode)&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.2 데모 라이센스 발급&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;[&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;a style=&quot;color: #009a87;&quot; href=&quot;https://technet.tmax.co.kr/&quot;&gt;technet.tmax.co.kr&lt;/a&gt;&lt;/span&gt;] 해당 링크 통해서 라이센스 발급&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1725944894339&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;https://technet.tmax.co.kr/&quot; data-og-description=&quot;&quot; data-og-host=&quot;technet.tmax.co.kr&quot; data-og-source-url=&quot;https://technet.tmax.co.kr/&quot; data-og-url=&quot;https://technet.tmax.co.kr/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://technet.tmax.co.kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://technet.tmax.co.kr/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;https://technet.tmax.co.kr/&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;technet.tmax.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;로그인 후 데모라이센스 신청 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a5abaadebe67782a9eaab0d4f1af1af6.jpg&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3vnFH/btsJxzDZLAb/xk9bdcL2lASvkmKH1ErpO0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3vnFH/btsJxzDZLAb/xk9bdcL2lASvkmKH1ErpO0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3vnFH/btsJxzDZLAb/xk9bdcL2lASvkmKH1ErpO0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3vnFH%2FbtsJxzDZLAb%2Fxk9bdcL2lASvkmKH1ErpO0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1921&quot; height=&quot;1080&quot; data-filename=&quot;a5abaadebe67782a9eaab0d4f1af1af6.jpg&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;항목 작성 후 라이센스 발급 진행하되, HostName은 꼭 서버 HostName과 동일하게 작성해주시면 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;25773aba05f0923c7a57edaf368344bd.jpg&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;730&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfMh0H/btsJxU8YWsB/DEah4rpVumMllWuMTO5MyK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfMh0H/btsJxU8YWsB/DEah4rpVumMllWuMTO5MyK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfMh0H/btsJxU8YWsB/DEah4rpVumMllWuMTO5MyK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfMh0H%2FbtsJxU8YWsB%2FDEah4rpVumMllWuMTO5MyK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;692&quot; height=&quot;730&quot; data-filename=&quot;25773aba05f0923c7a57edaf368344bd.jpg&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;730&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;필요에 따라 선택해서 라이센스 발급 받으시면됩니다. 저는 Jeus 5Fix#19 or Later Demo로 라이센스 발급받았습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;b5e3dae9cb0d50ff7e171cec3e5a7008.jpg&quot; data-origin-width=&quot;657&quot; data-origin-height=&quot;196&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMUkpU/btsJw5XFr0G/QjDwP0TkzkK6bcq6Oco6fK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMUkpU/btsJw5XFr0G/QjDwP0TkzkK6bcq6Oco6fK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMUkpU/btsJw5XFr0G/QjDwP0TkzkK6bcq6Oco6fK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMUkpU%2FbtsJw5XFr0G%2FQjDwP0TkzkK6bcq6Oco6fK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;657&quot; height=&quot;196&quot; data-filename=&quot;b5e3dae9cb0d50ff7e171cec3e5a7008.jpg&quot; data-origin-width=&quot;657&quot; data-origin-height=&quot;196&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;발급 신청하시면 작성하신 메일주소로가서 첨부된 라이센스 확인 후 잘보관해둡니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;6e67b32be0dd3d39d1c3614c80208b65.jpg&quot; data-origin-width=&quot;1598&quot; data-origin-height=&quot;654&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4gnt6/btsJwW0YizI/Sb44ESb2gcnL4enXD8XilK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4gnt6/btsJwW0YizI/Sb44ESb2gcnL4enXD8XilK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4gnt6/btsJwW0YizI/Sb44ESb2gcnL4enXD8XilK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4gnt6%2FbtsJwW0YizI%2FSb44ESb2gcnL4enXD8XilK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1598&quot; height=&quot;654&quot; data-filename=&quot;6e67b32be0dd3d39d1c3614c80208b65.jpg&quot; data-origin-width=&quot;1598&quot; data-origin-height=&quot;654&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.3 &lt;i&gt;Jeus 설치 파일 다운로드&lt;/i&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;[&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;a style=&quot;color: #009a87;&quot; href=&quot;https://technet.tmax.co.kr/&quot;&gt;technet.tmax.co.kr&lt;/a&gt;&lt;/span&gt;] 해당 링크 통해 다운로드&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1725945066767&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;https://technet.tmax.co.kr/&quot; data-og-description=&quot;&quot; data-og-host=&quot;technet.tmax.co.kr&quot; data-og-source-url=&quot;https://technet.tmax.co.kr/&quot; data-og-url=&quot;https://technet.tmax.co.kr/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://technet.tmax.co.kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://technet.tmax.co.kr/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;https://technet.tmax.co.kr/&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;technet.tmax.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치 하실 JEUS 버전을 확인후 다운로드 버튼을 클릭합니다. 저는 JEUS8을 설치하기때문에 JEUS8 다운로드 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;6f4071ba7ce90700bf3bb910428411dc.jpg&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;495&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kIqTp/btsJwZJVWf8/TP7L5XSHXCb3WFQlPNr3R0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kIqTp/btsJwZJVWf8/TP7L5XSHXCb3WFQlPNr3R0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kIqTp/btsJwZJVWf8/TP7L5XSHXCb3WFQlPNr3R0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkIqTp%2FbtsJwZJVWf8%2FTP7L5XSHXCb3WFQlPNr3R0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;770&quot; height=&quot;495&quot; data-filename=&quot;6f4071ba7ce90700bf3bb910428411dc.jpg&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;495&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자신의 운영체제, 아키텍쳐에 맞는 설치파일을 다운로드 받고 보관해둡니다. 저는 Linux (x86) 64-bit 다운로드&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;8a8c04a445d0bac98aeadbe4aa002817.jpg&quot; data-origin-width=&quot;817&quot; data-origin-height=&quot;741&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n9P6G/btsJwpo45wq/YHTMLDUn6QYknmOtxLB7h0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n9P6G/btsJwpo45wq/YHTMLDUn6QYknmOtxLB7h0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n9P6G/btsJwpo45wq/YHTMLDUn6QYknmOtxLB7h0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn9P6G%2FbtsJwpo45wq%2FYHTMLDUn6QYknmOtxLB7h0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;817&quot; height=&quot;741&quot; data-filename=&quot;8a8c04a445d0bac98aeadbe4aa002817.jpg&quot; data-origin-width=&quot;817&quot; data-origin-height=&quot;741&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. Jeus8 계정 생성&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Jeus 계정 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725945285122&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# jeus 계정 생성
sudo adduser jeus
# jeus 비밀번호 설정
sudo passwd jeus

Changing password for user jeus.
New password: // 입력 후 엔터
Retype new password:  // 입력 후 엔터
passwd: all authentication tokens updated successfully.&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. Jeus8 설치&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;❗목차 2.3에서 다운받은 파일 설치할 서버로 업로드 해주시길 바랍니다.&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;업로드된 파일 확인 및 실행권한 부여&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725945604524&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 업로드 된 파일 확인
pwd
/home/jeus/jeus8001_unix_generic_ko.bin

# 실행 권한 부여
chmod u+x jeus8001_unix_generic_ko.bin&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;콘솔에서 다음의 명령을 입력한 후 &amp;lt;ENTER&amp;gt; 키를 누른다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725945882935&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 업로드한 파일 실행
./jeus8001_unix_generic_ko.bin&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725945878149&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Preparing to install...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...

Launching installer...

Preparing CONSOLE Mode Installation...&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;JEUS 라이선스 준수 화면이 나타난다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725945900321&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===============================================================================
License Agreement
-----------------

Installation and Use of JEUS8 Requires Acceptance of the Following License 
Agreement:

JEUS (Java Enterprise User Solution) Release JEUS 8
TmaxSoft Co., Ltd. (hereafter, TmaxSoft) End-User License Agreement

Product : JEUS

This is a legal agreement between you (either an individual or an company) and 
TmaxSoft, Incorporated.  By opening the sealed software package and/or by using
the software, you agree to be bound by the terms of this agreement.

TmaxSoft License
1.  Grant of License:  This TmaxSoft License Agreement (&quot;License&quot;) permits you 
to use one copy of the TmaxSoft product JEUS, on any single computer, provided 
the software is in use on only one computer at any one time.  If this package 
is a license pack, you may make and use additional copies of the software up to
the number of licensed copies authorized.  If you have multiple licenses for 
the software, then at any time you may have as many copies of the software in 
use as you have licenses.
  The software is &quot;in use&quot; on a computer when it is loaded into the temporary 
memory (i.e., RAM) or installed into the permanent memory (e.g., hard disk, 
CD-ROM, or other storage devices) of that computer, except that a copy 
installed on a network server for the sole purpose of distribution to other 
computers is not &quot;in use&quot;.  If the anticipated number of users of the software 
will exceed the number of applicable licenses, then you must have a reasonable&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;JEUS 라이선스 준수에 대한 다음 정보를 보기 위해 &amp;lt;ENTER&amp;gt; 키를 누른다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725945915442&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;PRESS &amp;lt;ENTER&amp;gt; TO CONTINUE: 

mechanism or process in place to ensure that the number of persons using the 
software concurrently does not exceed the number of licenses.

2.  Copyright:  The software (including any images, &quot;applets,&quot; photographs, 
animations, video, audio, music and text incorporated into the software) is 
owned by TmaxSoft or its suppliers and international treaty provisions. 
Therefore, you must treat the software like any other copyrighted materials 
(e.g., a book or musical recording) except that you may either (a) make one 
copy of the software solely for backup or archival purposes, or (b) transfer 
the software to a single hard disk provided you keep the original solely for 
backup or archival purposes.  You may not copy the printed materials 
accompanying the software, nor print copies of any user documentation provided 
in &quot;online&quot; or electronic form.

3.  Other restrictions: This license is your proof of license to exercise the 
rights granted herein and must be retained by you. You may not rent, lease, or 
transfer your rights under this license on a permanent basis provided you 
transfer this license, the software, and all accompanying printed materials, 
retain no copies, and the recipient agrees to the terms of this license. You 
may not reverse engine, decompile, or disassemble the software, except to the 
extent that the foregoing restriction is expressly prohibited by applicable 
law.&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;라이선스 동의 여부를 결정한다. 동의를 하면 &amp;lsquo;y&amp;rsquo;를 입력한 후 &amp;lt;ENTER&amp;gt; 키를 누르고, 아니면 &amp;lsquo;n&amp;rsquo;을 입력한 후 &amp;lt;ENTER&amp;gt; 키를 누른다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725945934681&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;PRESS &amp;lt;ENTER&amp;gt; TO CONTINUE: 

DO YOU ACCEPT THE TERMS OF THIS LICENSE AGREEMENT? (Y/N): Y&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;플랫폼 목록 중 설치할 플랫폼을 입력한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725945952989&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===============================================================================
Choose Platform
---------------

Choose the operating system and architecture :
1)HP-UX PA-RISC
2)HP-UX Itanium
3)Solaris UltraSPARC
4)Solaris x86
5)Solaris x64
6)AIX 5.x, 6.x, 7.x PowerPC
7)Linux Itanium
8)Linux x86
9)Linux x64
10)Linux PowerPC 64
Quit) Quit Installer

Choose Current System (DEFAULT: 9): 9&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치 디렉터리를 선택한다. 기본적으로 제공되는 값을 사용하려면 &amp;lt;ENTER&amp;gt; 키를 누르고, 디렉터리 변경을 원하면 설치 경로를 입력한다. 필자는 기본 경로를&amp;nbsp;&lt;code&gt;/home/jeus&lt;/code&gt;&amp;nbsp;로 변경&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725945973067&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===========================================================
Installation Folder
-------------------

Enter the installation folder.

  Default Install Folder: /home/jeus/jeus8

ENTER AN ABSOLUTE PATH, OR PRESS &amp;lt;ENTER&amp;gt; TO ACCEPT THE DEFAULT
      : /home/jeus&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치 디렉터리를 선택한다. 기본적으로 제공되는 값을 사용하려면 &amp;lt;ENTER&amp;gt; 키를 누르고, 디렉터리 변경을 원하면 설치 경로를 입력한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725946100844&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===========================================================
Installation Folder
-------------------

Enter the installation folder.

  Default Install Folder: /home/jeus/jeus8

ENTER AN ABSOLUTE PATH, OR PRESS &amp;lt;ENTER&amp;gt; TO ACCEPT THE DEFAULT
      : /home/jeus
INSTALL FOLDER IS: /home/jeus
   IS THIS CORRECT? (Y/N): Y&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;폴더가 존재하면 Overwrite 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725946116887&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===============================================================================
Directory Check
---------------

User Specified Directory exists. To overwrite JEUS 8, click 'Overwrite'. To 
choose Different directory, click 'Change'. To cancel the installation, click 
'Cancel'.

  -&amp;gt;1- Overwrite
    2- Change...
    3- Cancel

ENTER THE NUMBER OF THE DESIRED CHOICE, OR PRESS &amp;lt;ENTER&amp;gt; TO ACCEPT THE 
   DEFAULT: 1&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;JDK의 위치를 입력한다. &amp;lt;ENTER&amp;gt; 키를 누르면 자동으로 인식한 JDK의 위치를 사용한다. 디렉터리를 변경하려면 설치 경로를 입력한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725946134663&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===============================================================================
Enter the JDK path.
-------------------

Enter the JDK path:

Enter the JDK path (Default: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-2.
   el9.x86_64):&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Domain Admin Server(DAS)와 Managed Server(MS), Cloud Server 중 설치할 서버를 선택한다. 기본적으로는 Domain Admin Server가 설정된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725946160786&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===============================================================================
Installation type
-----------------

Please choose the Install Set to be installed by this installer.

  -&amp;gt;1- Domain Admin Server
    2- Managed Server
    3- Cloud Server

ENTER THE NUMBER FOR THE INSTALL SET, OR PRESS &amp;lt;ENTER&amp;gt; TO ACCEPT THE DEFAULT
   : 1&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 설치 항목에 대한 설명이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 95px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 22.3256%; height: 20px;&quot;&gt;항목&lt;/td&gt;
&lt;td style=&quot;width: 77.6744%; height: 20px;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 41px;&quot;&gt;
&lt;td style=&quot;width: 22.3256%; height: 41px;&quot;&gt;Domain Admin Server&lt;/td&gt;
&lt;td style=&quot;width: 77.6744%; height: 41px;&quot;&gt;&lt;span&gt;Domain Admin Server(DAS)와 Managed Server(MS)를 설치한다.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Domain Admin Server는 Managed Server를 관리하기 위한 서버이다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 22.3256%; height: 17px;&quot;&gt;Managed Server&lt;/td&gt;
&lt;td style=&quot;width: 77.6744%; height: 17px;&quot;&gt;Managed Server를 설치한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 22.3256%; height: 17px;&quot;&gt;Cloud Server&lt;/td&gt;
&lt;td style=&quot;width: 77.6744%; height: 17px;&quot;&gt;Cloud Server를 설치한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Domain Admin Server를 선택한 경우 Installation Mode를 선택한다. 기본적으로는 Production Mode가 설정된다. 필자는 개발목적이기때문에 2번 Development Mode 선택&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725946223631&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;==========================================================
Installation Mode
-----------------

* Production Mode
- Disables JEUS Hot Swap.
- Disables Automatic Reloading.
- Displays a warning message and recommends using a full license if a demo 
license is used.

* Development Mode
- Enables JEUS Hot Swap.
- Enables Automatic Reloading.

  -&amp;gt;1- Production Mode
    2- Development Mode
    3- Cancel

ENTER THE NUMBER OF THE DESIRED CHOICE, OR PRESS &amp;lt;ENTER&amp;gt; TO ACCEPT THE 
   DEFAULT: 2&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 설치 항목에 대한 설명이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 97px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 20.4651%; height: 20px;&quot;&gt;항목&lt;/td&gt;
&lt;td style=&quot;width: 79.5349%; height: 20px;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 61px;&quot;&gt;
&lt;td style=&quot;width: 20.4651%; height: 61px;&quot;&gt;Production Mode&lt;/td&gt;
&lt;td style=&quot;width: 79.5349%; height: 61px;&quot;&gt;Production Mode로 설치한다.&lt;br /&gt;JEUS Hot Swap, Automatic Reloading을 사용하지 않는다. &lt;br /&gt;demo license가 사용되면 경고 메시지가 출력된다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;width: 20.4651%; height: 16px;&quot;&gt;Development Mode&lt;/td&gt;
&lt;td style=&quot;width: 79.5349%; height: 16px;&quot;&gt;Development&amp;nbsp;Mode로&amp;nbsp;설치한다.&amp;nbsp;&lt;br /&gt;JEUS&amp;nbsp;Hot&amp;nbsp;Swap,&amp;nbsp;Automatic&amp;nbsp;Reloading을&amp;nbsp;사용한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Domain Admin Server를 선택한 경우 Domain Admin Server에 사용할 도메인 이름을 입력한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725946307261&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===============================================================================
input JEUS Environments :: JEUS Domain Name
-------------------------------------------

Enter the
- JEUS Domain Name
- Enter alphanumeric characters (case-sensitive).

Domain Name (DEFAULT: jeus_domain):&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용할 Domain Admin Server의 이름을 입력한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725946322246&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===============================================================================
input JEUS Environments :: DAS Server Name
------------------------------------------

Enter the
- DAS Server Name
- Enter alphanumeric characters (case-sensitive).

DAS Server Name (DEFAULT: adminServer):&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용할 Domain Admin Server의 BASEPORT를 입력한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725946339932&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===============================================================================
input JEUS Environments :: JEUS BASEPORT
----------------------------------------

Enter the
- JEUS BASEPORT
- Enter digits Only

JEUS BASEPORT (DEFAULT: 9736):&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용할 JEUS 관리자의 이름을 입력한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725946354543&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===============================================================================
input JEUS Environments :: Admin User Name
------------------------------------------

Enter the
- Admin User Name
- Enter alphanumeric characters (case-sensitive).

Admin User Name (DEFAULT: administrator):&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Domain Admin Server를 선택한 경우 JEUS 관리자의 패스워드를 입력한다. 이 패스워드는 &amp;ldquo;administrator&amp;rdquo; ID로 할당된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725946370355&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===============================================================================
Password Input
--------------

Enter the Password for the administrator account.

Input Password ::*

# 참고사항 
1. 패스워드는 JEUS를 기동하는 필수적인 요소이다. 입력한 패스워드는 기억장치에 기록되며, 주의 깊게 입력해야 한다. 
2. 패스워드는 8자 이상으로 설정해야 하며, 연속 3개 이상 같은 문자, 공백, 'Admin User Name'과 입력한 값과 동일하게 설정할 수 없다.&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Domain Admin Server를 선택한 경우 사용할 노드 매니저를 선택한다. 기본적으로는 Java 타입의 노드 매니저가 설정된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725946385542&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===============================================================================
Node Manager
------------

select either ssh or java node manager

  -&amp;gt;1- java
    2- ssh
    3- Cancel

ENTER THE NUMBER OF THE DESIRED CHOICE, OR PRESS &amp;lt;ENTER&amp;gt; TO ACCEPT THE
   DEFAULT:&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 설치 항목에 대한 설명이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.1163%;&quot;&gt;항목&lt;/td&gt;
&lt;td style=&quot;width: 79.8837%;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.1163%;&quot;&gt;java&lt;/td&gt;
&lt;td style=&quot;width: 79.8837%;&quot;&gt;Java로 구현된 노드 매니저&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.1163%;&quot;&gt;ssh&lt;/td&gt;
&lt;td style=&quot;width: 79.8837%;&quot;&gt;OS에서 제공하는 SSH를 사용하는 노드 매니저이다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Sample Directory 설치 선택한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725946434765&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===============================================================================
Sample Directory
----------------

Do you want Sample Directory?

  -&amp;gt;1- yes
    2- no
    3- Previous

ENTER THE NUMBER OF THE DESIRED CHOICE, OR PRESS &amp;lt;ENTER&amp;gt; TO ACCEPT THE
   DEFAULT:&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다음 화면은 설치에 관련한 요약정보를 보여준다. &amp;lt;ENTER&amp;gt; 키를 누르면 설치가 진행된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725946461579&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===============================================================================
Pre-Installation Summary
------------------------

Review the Following Before Continuing:

Product Name:
    JEUS 8

Install Folder:
    /home/jeus

Install Set:
    Domain Admin Server

Disk Space Information (for Installation Target): 
    Required:  516,452,041 Bytes
    Available: 43,698,216,960 Bytes

PRESS &amp;lt;ENTER&amp;gt; TO CONTINUE:&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;진행 바와 함께 설치가 진행된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725946492953&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===========================================================
Installing...
-------------

[===============|===============|===============|===============]
[---------------|---------------|---------------|---------------]

설치가 완료된다.
===============================================================================
Installation Complete
---------------------

JEUS8 has been successfully installed to:

     /home/jeus

PRESS &amp;lt;ENTER&amp;gt; TO EXIT THE INSTALLER:&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Jeus 버전정보 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725946505606&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;jeusadmin -fullversion
8.0.0.1-b105067&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. Jeus8 기동 및 종료&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.1 Jeus8 기동 전 작업&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;.Bash_profile&lt;/code&gt; 갱신 (설치 후 Jeus Path가 자동으로 등록해주기때문에 갱신 필요)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725946612982&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# jeus 계정 디렉토리 이동 후
source .bash_profile&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;라이센스 파일 &lt;code&gt;/home/jeus/license/&lt;/code&gt; 경로에 저장&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725946627300&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 업로드 파일 확인
cd /home/jeus/license
ls -al
drwx------.  2 jeus jeus   21 Sep 14 15:41 .
drwx------. 16 jeus jeus 4096 Sep 14 15:40 ..
-rw-r--r--.  1 jeus jeus  350 Sep 14 15:41 license&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;jeus 사용자 정보 등록 (서버 기동 시 아이디 및 비밀번호 입력 생략을 위한 작업)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725946640734&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vi /home/jeus/bin/jeus.properties

username=administrator # 설치과정에서 디폴트값으로 지정했으면
password=              # 설치과정에서 입력한 비밀번호&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.2 Jeus8&amp;nbsp;Domain Admin Server(DAS) 기동 및 종료&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Domain Admin Server(DAS) 기동&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725946670337&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## Domain Admin Server(DAS) 기동
## /home/jeus/bin 디렉토리 이동 후 아래 명령어 실행

startDomainAdminServer -domain [도메인명] -u [관리자ID] -p [관리자 PW]
ex) startDomainAdminServer -domain jeus_domain -u administrator -p 111111&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Domain Admin Server(DAS)&amp;nbsp;종료&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725946683867&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## Domain Admin Server(DAS) 종료
## /home/jeus/bin 디렉토리 이동 후 아래 명령어 실행

jeusadmin -host [DAS IP:DAS PORT] -domain [도메인명] -u [관리자ID] -p [관리자 PW] &quot;local-shutdown -to 120&quot;
ex) jeusadmin -host localhost:9736 -domain jeus_domain -u administrator -p 111111 &quot;local-shutdown -to 120&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.3 Jeus8 NodeManager 기동 및 종료&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NodeManager 기동&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725946717499&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## NodeManager 기동
## /home/jeus/bin 디렉토리 이동 후 아래 명령어 실행

nohup startNodeManager &amp;gt; /home/jeus/nodemanager/logs/nm.log &amp;amp;amp;
[1] 3208&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NodeManager&amp;nbsp;로그 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725946784298&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## NodeManager 로그 확인
cat /home/jeus/nodemanager/logs/nm.log&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NodeManager 종료&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725946800205&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## NodeManager 종료

stopNodeManager -properties [jeusnm.xml 파일 경로]
ex) stopNodeManager -properties /home/jeus/nodemanager/jeusnm.xml&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.4 Jeus8 Jeusadmin 콘솔 기동 &lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1725946825639&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## Managed Server(MS) 종료
## /home/jeus/bin 디렉토리 이동 후 아래 명령어 실행

jeusadmin -host [DAS IP:DAS PORT] -domain [도메인명] -u [관리자ID] -p [관리자 PW]
ex) jeusadmin -host localhost:9936 -domain jeus_domain -u administrator -p 111111&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.5&lt;span&gt; Server1 기동 예제 &lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1725946867949&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## /home/jeus/bin 디렉토리 이동 후 아래 명령어 실행
## jeus 사용자 정보 등록 했을 경우 계정 및 비밀번호 생략 가능

# AdminServer 기동
startDomainAdminServer -domain jeus_domain

# NodeManager 기동
nohup startNodeManager &amp;gt; /home/jeus/nodemanager/logs/nm.log &amp;amp;amp;

# ManagedServer 기동
startManagedServer -dasurl 192.168.0.7:9736 -domain jeus_domain -server server1

# jeusadmin 콘솔 확인 (jeusadmin콘솔 확인은 계정 비밀번호 생략 안됨)
jeusadmin -host 192.168.0.7:9736 -domain jeus_domain -u administrator -p 비밀번호&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;fef06e1ff3988b514f886ef99c3dabac.jpg&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;514&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dvKTt3/btsJxlzkvtB/Kpuemd4QKP5kZ4naWJ6oAK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dvKTt3/btsJxlzkvtB/Kpuemd4QKP5kZ4naWJ6oAK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dvKTt3/btsJxlzkvtB/Kpuemd4QKP5kZ4naWJ6oAK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdvKTt3%2FbtsJxlzkvtB%2FKpuemd4QKP5kZ4naWJ6oAK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;578&quot; height=&quot;514&quot; data-filename=&quot;fef06e1ff3988b514f886ef99c3dabac.jpg&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;514&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;192.168.0.7:8088 서버1 페이지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;093d0ba135779f47add3f0d4b5e36112.jpg&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1081&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5nq75/btsJxVUtjB1/z6Xdvd7iz8OTnHApWm82hk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5nq75/btsJxVUtjB1/z6Xdvd7iz8OTnHApWm82hk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5nq75/btsJxVUtjB1/z6Xdvd7iz8OTnHApWm82hk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5nq75%2FbtsJxVUtjB1%2Fz6Xdvd7iz8OTnHApWm82hk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1921&quot; height=&quot;1081&quot; data-filename=&quot;093d0ba135779f47add3f0d4b5e36112.jpg&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1081&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. Jeus8 WebAdmin 접속&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;계정 : administrator (jeus 설치 시 생성했던 계정명)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;5137da01aeeb2cfc774abcaedb67b3d0.jpg&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1081&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2WRgH/btsJxyyrjxP/rKOrdFTQHQgTMGm6n5pXhk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2WRgH/btsJxyyrjxP/rKOrdFTQHQgTMGm6n5pXhk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2WRgH/btsJxyyrjxP/rKOrdFTQHQgTMGm6n5pXhk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2WRgH%2FbtsJxyyrjxP%2FrKOrdFTQHQgTMGm6n5pXhk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1921&quot; height=&quot;1081&quot; data-filename=&quot;5137da01aeeb2cfc774abcaedb67b3d0.jpg&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1081&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;c5e952255ca043e8abb70881a35bf124.jpg&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1081&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckeUXy/btsJwyztx0c/dmK3xfVViZkeKWN2rhWOUK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckeUXy/btsJwyztx0c/dmK3xfVViZkeKWN2rhWOUK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckeUXy/btsJwyztx0c/dmK3xfVViZkeKWN2rhWOUK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckeUXy%2FbtsJwyztx0c%2FdmK3xfVViZkeKWN2rhWOUK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1921&quot; height=&quot;1081&quot; data-filename=&quot;c5e952255ca043e8abb70881a35bf124.jpg&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1081&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>서버/WAS</category>
      <category>Jeus</category>
      <category>was</category>
      <category>제우스</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/18</guid>
      <comments>https://bigdwarf.tistory.com/18#entry18comment</comments>
      <pubDate>Wed, 18 Sep 2024 00:21:10 +0900</pubDate>
    </item>
    <item>
      <title>Git이란? GitHub? SVN?</title>
      <link>https://bigdwarf.tistory.com/30</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;git6963.jpg&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;650&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfsKte/btsJDftwABS/8MLTv9gi7Y9K8gJpLALN0k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfsKte/btsJDftwABS/8MLTv9gi7Y9K8gJpLALN0k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfsKte/btsJDftwABS/8MLTv9gi7Y9K8gJpLALN0k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfsKte%2FbtsJDftwABS%2F8MLTv9gi7Y9K8gJpLALN0k%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;866&quot; height=&quot;650&quot; data-filename=&quot;git6963.jpg&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;650&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Git 관련해서 정리하기 위해 정리 시작한 글&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. Git이란 무엇인가?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Git은&amp;nbsp;2005년&amp;nbsp;리누스&amp;nbsp;토발즈가&amp;nbsp;개발한&amp;nbsp;분산&amp;nbsp;버전&amp;nbsp;관리&amp;nbsp;시스템으로,&amp;nbsp;현대&amp;nbsp;소프트웨어&amp;nbsp;개발에서&amp;nbsp;필수적인&amp;nbsp;도구로&amp;nbsp;자리 잡았습니다.&amp;nbsp;코드의&amp;nbsp;변경&amp;nbsp;사항을&amp;nbsp;효과적으로&amp;nbsp;추적하고&amp;nbsp;여러&amp;nbsp;개발자&amp;nbsp;간의&amp;nbsp;협업을&amp;nbsp;원활하게&amp;nbsp;만드는&amp;nbsp;Git의&amp;nbsp;강력한&amp;nbsp;기능들은&amp;nbsp;많은&amp;nbsp;개발&amp;nbsp;팀들이&amp;nbsp;기존의&amp;nbsp;SVN(Subversion)에서&amp;nbsp;Git으로&amp;nbsp;전환하게&amp;nbsp;만든&amp;nbsp;주요&amp;nbsp;요인입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.1 Git의 구조&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;Git은 크게 세 가지 영역으로 구성됩니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;작업 디렉터리(Working Directory)&lt;/b&gt; &lt;/i&gt;: 실제 파일들이 존재하는 곳&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;스테이징 영역(Staging Area)&lt;/b&gt;&lt;/i&gt; : 커밋할 파일들의 정보를 저장하는 곳&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;저장소(Repository)&lt;/b&gt;&lt;/i&gt; : 커밋된 파일들의 버전을 저장하는 곳&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.2 Git의 주요 특징&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;분산 버전 관리&lt;/b&gt;&lt;/i&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 중앙 서버 없이도 로컬에서 버전 관리가 가능합니다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;i&gt;&lt;b&gt;빠른 속도&lt;/b&gt;&lt;/i&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 대규모 프로젝트에서도 뛰어난 성능을 보입니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;i&gt;&lt;b&gt;비선형적 개발&lt;/b&gt;&lt;/i&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 여러 브랜치를 통해 동시다발적인 개발이 가능합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;i&gt;&lt;b&gt;데이터 무결성&lt;/b&gt;&lt;/i&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 모든 파일의 체크섬을 통해 데이터의 정확성을 보장합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.3 Git을 사용해야 하는 이유 &lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;버전관리&lt;/b&gt;&lt;/i&gt; : 프로젝트의 변경 이력을 쉽게 추적하고 관리할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;협업 용이성&lt;/b&gt;&lt;/i&gt; : 여러 개발자가 동시에 작업하고 코드를 공유할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;백업과 복구&lt;/b&gt;&lt;/i&gt; : 언제든 이전 버전으로 돌아갈 수 있어 실수를 쉽게 복구할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;브랜치 기능&lt;/b&gt;&lt;/i&gt; : 새로운 기능을 개발하거나 실험할 때 메인 코드에 영향을 주지 않고 작업할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. Git과 GitHub&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많은 사람들이 Git과 GitHub를 혼동하지만, 이 둘은 다릅니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;Git&lt;/b&gt; &lt;/i&gt;: 버전 관리 시스템 자체&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;i&gt;&lt;b&gt;GitHub&lt;/b&gt; &lt;/i&gt;: Git을 사용하는 프로젝트를 호스팅 하고 협업할 수 있는 웹 서비스&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. Git과 SVN&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.1 Git과 SVN 차이점 표&lt;/b&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;특성&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Git&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;SVN&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;구조&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;분산형&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;중앙집중식&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;저장소&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;로컬 복사본&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;중앙 서버&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;오프라인 작업&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;가능&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;제한적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;성능&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;빠름(로컬 작업)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;상대적으로 느림&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;학습곡선&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;가파름&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;완만함&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 마무리&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Git은&amp;nbsp;현대&amp;nbsp;소프트웨어&amp;nbsp;개발에서&amp;nbsp;없어서는&amp;nbsp;안&amp;nbsp;될&amp;nbsp;중요한&amp;nbsp;도구입니다.&amp;nbsp;SVN에&amp;nbsp;비해&amp;nbsp;더&amp;nbsp;유연하고&amp;nbsp;강력한&amp;nbsp;기능을&amp;nbsp;제공하며,&amp;nbsp;현대적인&amp;nbsp;개발&amp;nbsp;환경과&amp;nbsp;잘&amp;nbsp;어울립니다.&amp;nbsp;Git으로의&amp;nbsp;전환은&amp;nbsp;팀의&amp;nbsp;생산성과&amp;nbsp;협업&amp;nbsp;능력을&amp;nbsp;크게&amp;nbsp;향상할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;Git을&amp;nbsp;익히는&amp;nbsp;것은&amp;nbsp;모든&amp;nbsp;개발자에게&amp;nbsp;필수적인&amp;nbsp;기술이&amp;nbsp;되었으며,&amp;nbsp;이를&amp;nbsp;통해&amp;nbsp;더&amp;nbsp;나은&amp;nbsp;코드&amp;nbsp;관리와&amp;nbsp;팀&amp;nbsp;협업을&amp;nbsp;실현할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>데브옵스/VCS</category>
      <category>Git</category>
      <category>GitHub</category>
      <category>SVN</category>
      <category>깃</category>
      <category>깃허브</category>
      <category>버전관리</category>
      <category>형상관리</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/30</guid>
      <comments>https://bigdwarf.tistory.com/30#entry30comment</comments>
      <pubDate>Wed, 18 Sep 2024 00:20:53 +0900</pubDate>
    </item>
    <item>
      <title>Redhat 계열 Linux에 WebtoB 5 설치</title>
      <link>https://bigdwarf.tistory.com/17</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목을-입력해주세요_-002.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oGjH8/btsJxxeHL46/OfWC0HshdLrMTbzMNYndP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oGjH8/btsJxxeHL46/OfWC0HshdLrMTbzMNYndP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oGjH8/btsJxxeHL46/OfWC0HshdLrMTbzMNYndP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoGjH8%2FbtsJxxeHL46%2FOfWC0HshdLrMTbzMNYndP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;640&quot; data-filename=&quot;제목을-입력해주세요_-002.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WebtoB 5 설치할 겸 정리하는 글&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. WebtoB 5 설치 전 사전 준비&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.1 JDK 6 이상 설치 필요&lt;/b&gt;&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;✅ WebtoB5 JDK 버전은 Java 버전 6 또는 그 이상의 버전이 필요합니다. 저는 JDK 8 버전으로 설치&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;yum을 통한 패키지 설치 진행하기 전 설치가능한 JDK 버전 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725935150844&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 설치 가능한 JDK 버전 확인
yum list java*jdk-devel&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치가능한 패키지 리스트 중 JDK 8 확인 (&lt;code&gt;java-1.8.0-openjdk-devel.x86_64&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725935327763&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Last metadata expiration check: 1:53:20 ago on Thu 14 Sep 2023 12:17:02 PM KST.
Available Packages
java-1.8.0-openjdk-devel.x86_64     1:1.8.0.382.b05-2.el9               appstream
java-11-openjdk-devel.x86_64        1:11.0.20.0.8-3.el9                 appstream
java-17-openjdk-devel.x86_64        1:17.0.8.0.7-2.el9                  appstream&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;yum을 통한 패키지 설치 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725935365317&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;JAVA&amp;nbsp;8&amp;nbsp;설치
yum&amp;nbsp;install&amp;nbsp;java-1.8.0-openjdk-devel.x86_64&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;버전 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725935436766&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# JAVA 버전 확인
java -version&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725935418855&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;openjdk version &quot;1.8.0_382&quot;
OpenJDK Runtime Environment (build 1.8.0_382-b05)
OpenJDK 64-Bit Server VM (build 25.382-b05, mixed mode)&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.2 WebtoB 5 데모 라이센스 발급&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;[&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;a style=&quot;color: #009a87;&quot; href=&quot;https://technet.tmax.co.kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;technet.tmax.co.kr&lt;/a&gt;&lt;/span&gt;] 해당 링크 통해서 라이센스 발급&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1725935531244&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;https://technet.tmax.co.kr/&quot; data-og-description=&quot;&quot; data-og-host=&quot;technet.tmax.co.kr&quot; data-og-source-url=&quot;https://technet.tmax.co.kr/&quot; data-og-url=&quot;https://technet.tmax.co.kr/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://technet.tmax.co.kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://technet.tmax.co.kr/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;https://technet.tmax.co.kr/&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;technet.tmax.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;로그인 후 데모라이센스 신청 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;29b374f69fa436c847a64f2a59833339.jpg&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NzJTV/btsJxESp8hF/tzeGetxG8a5ajVJt9bTsnK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NzJTV/btsJxESp8hF/tzeGetxG8a5ajVJt9bTsnK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NzJTV/btsJxESp8hF/tzeGetxG8a5ajVJt9bTsnK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNzJTV%2FbtsJxESp8hF%2FtzeGetxG8a5ajVJt9bTsnK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1921&quot; height=&quot;1080&quot; data-filename=&quot;29b374f69fa436c847a64f2a59833339.jpg&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;항목 작성 후 라이센스 발급 진행하되, HostName은 꼭 서버 HostName과 동일하게 작성해 주시면 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;7b6a966f39211d7d71be085b944f82f2.jpg&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;852&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFNhh3/btsJveO5AfF/GkuSikK1hIEKGG6el7zpA1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFNhh3/btsJveO5AfF/GkuSikK1hIEKGG6el7zpA1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFNhh3/btsJveO5AfF/GkuSikK1hIEKGG6el7zpA1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFNhh3%2FbtsJveO5AfF%2FGkuSikK1hIEKGG6el7zpA1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;692&quot; height=&quot;852&quot; data-filename=&quot;7b6a966f39211d7d71be085b944f82f2.jpg&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;852&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;라이선스 파일이 첨부된 이메일이 왔는지 입력하신 메일 접속하여 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;9fc09698c6002a92ca183c9f13f831fa.jpg&quot; data-origin-width=&quot;1609&quot; data-origin-height=&quot;797&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QvScm/btsJxBg5gQc/aF92H3ONpZOIe4FluXur6K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QvScm/btsJxBg5gQc/aF92H3ONpZOIe4FluXur6K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QvScm/btsJxBg5gQc/aF92H3ONpZOIe4FluXur6K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQvScm%2FbtsJxBg5gQc%2FaF92H3ONpZOIe4FluXur6K%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1609&quot; height=&quot;797&quot; data-filename=&quot;9fc09698c6002a92ca183c9f13f831fa.jpg&quot; data-origin-width=&quot;1609&quot; data-origin-height=&quot;797&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.3 WebtoB 5 설치 파일 다운로드&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;[&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;a style=&quot;color: #009a87;&quot; href=&quot;https://technet.tmax.co.kr/&quot;&gt;technet.tmax.co.kr&lt;/a&gt;&lt;/span&gt;] 해당 링크 통해 다운로드&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1725935812620&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;https://technet.tmax.co.kr/&quot; data-og-description=&quot;&quot; data-og-host=&quot;technet.tmax.co.kr&quot; data-og-source-url=&quot;https://technet.tmax.co.kr/&quot; data-og-url=&quot;https://technet.tmax.co.kr/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://technet.tmax.co.kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://technet.tmax.co.kr/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;https://technet.tmax.co.kr/&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;technet.tmax.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치 하실 WebtoB 버전을 확인 후 다운로드 버튼을 클릭합니다. 저는 WebtoB5를 설치하기 때문에 WebtoB5 다운로드 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;90a222c64a16423860617dafcf0e3133.jpg&quot; data-origin-width=&quot;793&quot; data-origin-height=&quot;578&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brOm3J/btsJxESqmnp/QcP28cIInA46v2VrrpV9B1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brOm3J/btsJxESqmnp/QcP28cIInA46v2VrrpV9B1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brOm3J/btsJxESqmnp/QcP28cIInA46v2VrrpV9B1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrOm3J%2FbtsJxESqmnp%2FQcP28cIInA46v2VrrpV9B1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;793&quot; height=&quot;578&quot; data-filename=&quot;90a222c64a16423860617dafcf0e3133.jpg&quot; data-origin-width=&quot;793&quot; data-origin-height=&quot;578&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자신의 운영체제, 아키텍쳐에 맞는 설치파일을 다운로드하고 보관해 둡니다. 저는 Linux (x86) 64-bit 다운로드&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;dc503265121405e1c65ead48851aa3fd.jpg&quot; data-origin-width=&quot;815&quot; data-origin-height=&quot;690&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDrz3B/btsJvX0oR6J/6V8lcegr95yKTyz20KNEKK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDrz3B/btsJvX0oR6J/6V8lcegr95yKTyz20KNEKK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDrz3B/btsJvX0oR6J/6V8lcegr95yKTyz20KNEKK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDrz3B%2FbtsJvX0oR6J%2F6V8lcegr95yKTyz20KNEKK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;815&quot; height=&quot;690&quot; data-filename=&quot;dc503265121405e1c65ead48851aa3fd.jpg&quot; data-origin-width=&quot;815&quot; data-origin-height=&quot;690&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. WebtoB 5 설치&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.1 WebtoB 5 계정 생성&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1725936165476&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# webtob 계정 생성
sudo adduser webtob
# webtob 비밀번호 설정
sudo passwd webtob

Changing password for user jeus.
New password: // 입력 후 엔터
Retype new password:  // 입력 후 엔터
passwd: all authentication tokens updated successfully.&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.2 설치파일 /home/webtob 계정 경로 업로드 및 실행 권한 부여&lt;/b&gt;&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;❗목차 2.3에서 다운받은 파일 설치할 서버로 업로드 해주시길 바랍니다.&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;업로드된 파일 확인 및 실행권한 부여&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725936303698&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 업로드 된 파일 확인
pwd
/home/webtob/WEBTOB5_0_SP0_Fix0_LinuxK2_6_x64.bin

# 실행 권한 부여
chmod u+x WEBTOB5_0_SP0_Fix0_LinuxK2_6_x64.bin&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.3 &lt;/b&gt;&lt;b&gt;WebtoB 5&lt;span&gt; 설치 진행&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;콘솔에서 다음의 명령을 입력한 후 키를 누른다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725936546724&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 업로드한 파일 실행
./WEBTOB5_0_SP0_Fix0_LinuxK2_6_x64.bin&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치 파일을 실행시키면 WebtoB를 설치하기 위한 준비작업을 진행한 후 간단한 사용 안내와 함께 진행 여부를 선택한다. 계속 진행하려면 &amp;lt;ENTER&amp;gt; 키를 누르고, 중단하려면 &amp;lsquo;quit&amp;rsquo;를 입력한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725936388721&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Preparing to install...
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...

Launching installer...

Preparing CONSOLE Mode Installation...

===============================================================================
WEBTOB5_0_SP0_Fix#0               (created with InstallAnywhere by Macrovision)
-------------------------------------------------------------------------------




===============================================================================
Introduction
------------

InstallAnywhere will guide you through the installation of WEBTOB5_0_SP0_Fix#0.

It is strongly recommended that you quit all programs before continuing with 
this installation.

Respond to each prompt to proceed to the next step in the installation.  If you
want to change something on a previous step, type 'back'.

You may cancel this installation at any time by typing 'quit'.

PRESS &amp;lt;ENTER&amp;gt; TO CONTINUE:&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;WebtoB 라이선스에 대한 내용이 출력되고, 동의 여부를 묻는다. 라이선스에 동의하면 &amp;lsquo;Y&amp;rsquo;를 입력하여 다음 단계로 진행하고, &amp;lsquo;N&amp;rsquo;을 입력하여 라이선스에 동의하지 않으면 설치는 중단된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725936464294&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===============================================================================
License Agreement
-----------------

Installation and use of WEBTOB5_0_SP0_Fix#0 requires acceptance of the 
following License Agreement:

WebtoB Release
Tmax Soft Co., Ltd. (hereafter, Tmax Soft) End-User License Agreement

Product : WebtoB

This is a legal agreement between you (either an individual or an company) and 
Tmax Soft, Incorporated.  By opening the sealed software package and/or by 
using the software, you agree to be bound by the terms of this agreement.

Tmax Soft License
1.  Grant of License:  This Tmax Soft License Agreement (&quot;License&quot;) permits you
to use one copy of the Tmax Soft product Tmax, on any single computer, provided
the software is in use on only one computer at any one time.  If this package 
is a license pack, you may make and use additional copies of the software up to
the number of licensed copies authorized.  If you have multiple licenses for 
the software, then at any time you may have as many copies of the software in 
use as you have licenses.
  The software is &quot;in use&quot; on a computer when it is loaded into the temporary 
memory (i.e., RAM) or installed into the permanent memory (e.g., hard disk, 
CD-ROM, or other storage devices) of that computer, except that a copy 
installed on a network server for the sole purpose of distribution to other 
computers is not &quot;in use&quot;.  If the anticipated number of users of the software 
will exceed the number of applicable licenses, then you must have a reasonable 

PRESS &amp;lt;ENTER&amp;gt; TO CONTINUE:&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;라이선스에 대한 내용을 계속해서 보려면 &amp;lt;ENTER&amp;gt; 키를 누르고, 설치를 중단하려면 &amp;lsquo;quit&amp;rsquo;을 입력한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725936614984&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===============================================================================
License Agreement
-----------------

Installation and use of WEBTOB5_0_SP0_Fix#0 requires acceptance of the 
following License Agreement:

WebtoB Release
Tmax Soft Co., Ltd. (hereafter, Tmax Soft) End-User License Agreement

Product : WebtoB

This is a legal agreement between you (either an individual or an company) and 
Tmax Soft, Incorporated.  By opening the sealed software package and/or by 
using the software, you agree to be bound by the terms of this agreement.

Tmax Soft License
1.  Grant of License:  This Tmax Soft License Agreement (&quot;License&quot;) permits you
to use one copy of the Tmax Soft product Tmax, on any single computer, provided
the software is in use on only one computer at any one time.  If this package 
is a license pack, you may make and use additional copies of the software up to
the number of licensed copies authorized.  If you have multiple licenses for 
the software, then at any time you may have as many copies of the software in 
use as you have licenses.
  The software is &quot;in use&quot; on a computer when it is loaded into the temporary 
memory (i.e., RAM) or installed into the permanent memory (e.g., hard disk, 
CD-ROM, or other storage devices) of that computer, except that a copy 
installed on a network server for the sole purpose of distribution to other 
computers is not &quot;in use&quot;.  If the anticipated number of users of the software 
will exceed the number of applicable licenses, then you must have a reasonable 

PRESS &amp;lt;ENTER&amp;gt; TO CONTINUE:&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다음은 &amp;lt;ENTER&amp;gt; 키를 눌러 라이선스를 끝까지 조회한 화면이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725941426925&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mechanism or process in place to ensure that the number of persons using the 
software concurrently does not exceed the number of licenses.

2.  Copyright:  The software (including any images, &quot;applets,&quot; photographs, 
animations, video, audio, music and text incorporated into the software) is 
owned by Tmax Soft or its suppliers and international treaty provisions. 
Therefore, you must treat the software like any other copyrighted materials 
(e.g., a book or musical recording) except that you may either (a) make one 
copy of the software solely for backup or archival purposes, or (b) transfer 
the software to a single hard disk provided you keep the original solely for 
backup or archival purposes.  You may not copy the printed materials 
accompanying the software, nor print copies of any user documentation provided 
in &quot;online&quot; or electronic form.

3.  Other restrictions: This license is your proof of license to exercise the 
rights granted herein and must be retained by you. You may not rent, lease, or 
transfer your rights under this license on a permanent basis provided you 
transfer this license, the software, and all accompanying printed materials, 
retain no copies, and the recipient agrees to the terms of this license. You 
may not reverse engine, decompile, or disassemble the software, except to the 
extent that the foregoing restriction is expressly prohibited by applicable 
law.

PRESS &amp;lt;ENTER&amp;gt; TO CONTINUE: 



DO YOU ACCEPT THE TERMS OF THIS LICENSE AGREEMENT? (Y/N): Y&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Install&amp;nbsp;Set을&amp;nbsp;선택한다.&amp;nbsp;WebtoB만&amp;nbsp;설치하려면&amp;nbsp;1번을&amp;nbsp;선택한다.&amp;nbsp;WebtoB&amp;nbsp;Standard&amp;nbsp;Edition에서&amp;nbsp;제공되는&amp;nbsp;Servlet&amp;nbsp;Engine과&amp;nbsp;함께&amp;nbsp;설치하려면&amp;nbsp;2번을&amp;nbsp;선택한다.&amp;nbsp;Servlet&amp;nbsp;Engine&amp;nbsp;기능은&amp;nbsp;데모&amp;nbsp;라이선스에서&amp;nbsp;제한&amp;nbsp;없이&amp;nbsp;제공되지만&amp;nbsp;정식&amp;nbsp;라이선스의&amp;nbsp;경우에는&amp;nbsp;반드시&amp;nbsp;Standard&amp;nbsp;라이선스를&amp;nbsp;적용해야&amp;nbsp;한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725936706084&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===============================================================================
Choose Install Set
------------------

Please choose the Install Set to be installed by this installer.

  -&amp;gt;1- WebtoB
    2- Servlet + WebtoB

ENTER THE NUMBER FOR THE INSTALL SET, OR PRESS &amp;lt;ENTER&amp;gt; TO ACCEPT THE DEFAULT
   : 1&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;WebtoB가 설치될 디렉터리를 설정한다. 기본값을 사용하려면 &amp;lt;Enter&amp;gt; 키를 누르고, 디렉터리를 변경하려면 직접 절대 경로를 입력한다. (기본값:&lt;code&gt;$HOME/webtob&lt;/code&gt;) 저는 기본 경로를 &lt;code&gt;/home/webtob&lt;/code&gt;&amp;nbsp;로 변경&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725936837386&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===============================================================================
Choose Install Folder
---------------------

Where would you like to install?

   Default Install Folder: /home/webtob/webtob

ENTER AN ABSOLUTE PATH, OR PRESS &amp;lt;ENTER&amp;gt; TO ACCEPT THE DEFAULT
      :/home/webtob&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;WebtoB 파일의 설치에 앞서 제품, 설치 경로, Install Set(Servlet Engine 설치 여부), 디스크 용량 정보 등을 확인한다. 계속 진행하려면 &amp;lt;ENTER&amp;gt; 키를 누르고, 중단하려면 &amp;lsquo;quit&amp;rsquo;을 입력한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725936925109&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===============================================================================
Pre-Installation Summary
------------------------

Please Review the Following Before Continuing:

Product Name:
    WEBTOB5_0_SP0_Fix#0

Install Folder:
    /home/webtob

Install Set
    WebtoB

Disk Space Information (for Installation Target): 
    Required:  118,357,437 bytes
    Available: 3,114,831,872 bytes

PRESS &amp;lt;ENTER&amp;gt; TO CONTINUE:&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치 정보를 확인하면 설치 준비 여부를 다시 한 번 확인한다. 준비가 완료되었다면 &amp;lt;ENTER&amp;gt; 키를 눌러 계속 진행하고, 중단하려면 &amp;lsquo;quit&amp;rsquo;을 입력한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725936948608&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===============================================================================
Ready To Install
----------------

Ready to install WEBTOB5_0_SP0_Fix#0 onto your system at the following 
location:

   /home/webtob

PRESS &amp;lt;ENTER&amp;gt; TO INSTALL:&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;WebtoB 파일을 설치하고, WebtoB 설치에 필요한 작업들을 수행한 후 해당 플랫폼에서 open file descriptors 조회 및 영구 수정 방법을 출력한다. 정보를 모두 확인하였으면 &amp;lt;ENTER&amp;gt; 키를 눌러 다음 단계로 진행한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725936967914&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;==============================================================================
Installing...
-------------

 [==================|==================|==================|==================]
 [------------------|------------------|------------------|------------------]


===============================================================================
Information
-----------

The administrator can set the maximum number of file descriptors as follows.
The machine needs a reboot in order for the configuration change to take
effect.

Linux 2.4 and later
-------------------
To check the current maximum number of file descriptors:
- Run &quot;ulimit -Hn&quot; on the command line.
This shows the hard liit.

To permanently change the maximum number of file descriptors:
- Open &quot;/etc/security/limits.conf&quot; with a text editor.
- Add a new line &quot;*       hard      nofile     65536&quot;.
  65536 is the new maximum.  Change it as necessary.

PRESS &amp;lt;ENTER&amp;gt; TO CONTINUE:&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치가 완료되면 &amp;ldquo;WebtoB의 설치가 성공적으로 마무리되었다&amp;rdquo;는 메시지가 출력된다. &amp;lt;ENTER&amp;gt; 키를 눌러 설치 작업을 완료한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725936985817&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===============================================================================
Installation Complete
---------------------

Congratulations. WEBTOB5_0_SP0_Fix#0 has been successfully installed to:

   /home/webtob

PRESS &amp;lt;ENTER&amp;gt; TO EXIT THE INSTALLER:&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치 확인 지정된 설치 경로(&lt;code&gt;$WEBTOBEDIR&lt;/code&gt;)로 디렉터리가 생성되고 그 하위에 파일들이 설치된 것을 확인한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725937005895&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$WEBTOBEDIR
     |----ap
     |----bin 
     |----cgi-bin
     |----config
     |----docs
     |----icons
     |----lib
     +----license
     |----log
     |----path 
     |----ssl
     |----svct
     +----UninstallerData
     |----usrinc

################# 각 디렉토리 설명
ap
애플리케이션 파일이 위치한다.

bin
실행 파일(wsm, wscfl, wsuncfl wsracd, wsgst, wsboot, wsdown 등)들이 위치한다.

cgi-bin
CGI 파일이 위치한다.

config
WebtoB 환경 파일이 위치한다.

docs
기본적으로 설치되는 HTML 파일이 위치한다.

icons
DIRINDEX에서 사용할 아이콘이 위치한다.

lib
라이브러리(Library) 파일이 위치한다.

license
라이선스 파일이 위치한다.

log
로그 파일들이 위치한다.

path
프로세스 간의 내부 통신을 위한 Named-pipe가 생성된다.

ssl
SSL 관련 파일이 위치한다.

svct
WBAPI의 서비스 테이블이 위치한다.

UninstallerData
설치 제거를 위한 파일이 위치한다.

usrinc
API의 헤더 파일들이 위치한다&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치 확인 환경변수 확인 &lt;code&gt;.profile&lt;/code&gt;(ksh일 경우) 또는 &lt;code&gt;.bash_profile&lt;/code&gt;(bash shell일 경우)에 다음과 같이 환경변수가 등록된 것을 확인한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725937022704&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# New environment setting added by WEBTOB5.0_SP0_Fix#0 on Wed Mar 30 14:52:54 KST 2016 1.
# The unmodified version of this file is saved in /home/webtob1/.bash_profile625190227.
# Do NOT modify these lines; they are used to uninstall.
WEBTOBDIR=/home/webtob1/webtob
export WEBTOBDIR
# End comments by InstallAnywhere on Wed Mar 30 14:52:54 KST 2016 1.

# New environment setting added by WEBTOB5.0_SP0_Fix#0 on Wed Mar 30 14:52:54 KST 2016 2.
# The unmodified version of this file is saved in /home/webtob1/.bash_profile625190227.
# Do NOT modify these lines; they are used to uninstall.
PATH=&quot;${WEBTOBDIR}/bin:${PATH}&quot;
export PATH
# End comments by InstallAnywhere on Wed Mar 30 14:52:54 KST 2016 2.

# New environment setting added by WEBTOB5.0_SP0_Fix#0 on Wed Mar 30 14:52:54 KST 2016 3.
# The unmodified version of this file is saved in /home/webtob1/.bash_profile625190227.
# Do NOT modify these lines; they are used to uninstall.
LD_LIBRARY_PATH=&quot;${WEBTOBDIR}/lib:${LD_LIBRARY_PATH}&quot;
export LD_LIBRARY_PATH
# End comments by InstallAnywhere on Wed Mar 30 14:52:54 KST 2016 3.&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. WebtoB 5 기동 및 종료&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 4.1 WebtoB 5 기동 전 작업&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;.Bash_profile&lt;/code&gt; 갱신 (설치 후 Jeus Path가 자동으로 등록해주기때문에 갱신 필요)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725941595831&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# webtob 계정 디렉토리 이동 후
source .bash_profile 
또는 
. ~/.bash_profile&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;라이센스 파일 &lt;code&gt;/home/webtob/license/&lt;/code&gt; 경로에 저장&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725941633280&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 업로드 파일 확인
cd /home/webtob/license
ls -al
drwxrwxr-x.  2 webtob webtob    63 Sep 18 17:15 .
drwxrwxr-x. 16 webtob webtob  4096 Sep 18 17:10 ..
-rw-r--r--.  1 webtob webtob    80 Sep 18 17:15 license.dat
-rwxrwxr-x.  1 webtob webtob 12301 Sep 18 17:09 ncpu
-rwxrwxr-x.  1 webtob webtob  2738 Sep 18 17:09 WebtoB_License.txt&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;환경 파일 작성 환경 파일은&amp;nbsp;&lt;code&gt;${WEBTOBDIR}/config&lt;/code&gt;&amp;nbsp;디렉터리에 기본적으로 제공되는 &lt;code&gt;http.m&lt;/code&gt; 파일을 사용해서 설정한다. &amp;lt;http.m&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725941713409&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;*DOMAIN
webtob1

*NODE
HostName      WEBTOBDIR=&quot;/home/webtob&quot;, 
              SHMKEY = 54000,
              DOCROOT=&quot;/home/webtob/docs&quot;,
              PORT = &quot;8080&quot;, 
              HTH = 1,
              #Group = &quot;nobody&quot;,
              #User = &quot;nobody&quot;,
              NODENAME = &quot;$(NODENAME)&quot;,
              ERRORDOCUMENT = &quot;503&quot;,
              #JSVPORT = 9900,
              LOGGING = &quot;log1&quot;,
              ERRORLOG = &quot;log2&quot;,
              SYSLOG = &quot;log3&quot;

*HTH_THREAD
hth_worker
                  SendfileThreads = 4,
                  AccessLogThread = Y,
                  #ReadBufSize=1048576, #1M
                  #HtmlsCompression=&quot;text/html&quot;,
                  #SendfileThreshold=32768,
                  WorkerThreads=8

*SVRGROUP
htmlg           NODENAME = &quot;qpsx1&quot;, SVRTYPE = HTML
cgig            NODENAME = &quot;qpsx1&quot;, SVRTYPE = CGI
ssig            NODENAME = &quot;qpsx1&quot;, SVRTYPE = SSI

*SERVER
cgi             SVGNAME = cgig, MinProc = 2, MaxProc = 10, ASQCount = 1
ssi             SVGNAME = ssig, MinProc = 2, MaxProc = 10, ASQCount = 1

*URI
uri1          Uri = &quot;/cgi-bin/&quot;,   Svrtype = CGI
uri2          Uri = &quot;/examples/&quot;,  SvrType=JSV, SvrName=MyGroup

*ALIAS
alias1        URI = &quot;/cgi-bin/&quot;, RealPath = &quot;/home/webtob/cgi-bin/&quot;

*LOGGING
log1          Format = &quot;DEFAULT&quot;, FileName = &quot;/home/webtob/log/access.log_%M%%D%%Y%&quot;, 
              Option = &quot;sync&quot;
log2          Format = &quot;ERROR&quot;, FileName = &quot;/home/webtob/log/error.log_%M%%D%%Y%&quot;, 
              Option = &quot;sync&quot;
log3          Format = &quot;SYSLOG&quot;, FileName = &quot;/home/webtob/log/system_%M%%D%%Y%.log&quot;,
              Option = &quot;sync&quot;

*ERRORDOCUMENT
503           status = 503,
              url = &quot;/503.html&quot;

*EXT&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다음은 &lt;code&gt;http.m&lt;/code&gt; 파일의 수정이 필요한 항목에 대한 설명이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 71px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style4&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 15.1163%; height: 20px; text-align: center;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 84.8837%; height: 20px; text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 15.1163%; height: 17px;&quot;&gt;SHMKEY&lt;/td&gt;
&lt;td style=&quot;width: 84.8837%; height: 17px;&quot;&gt;다른 프로그램과 충돌이 발생하는 경우 WebtoB를 기동시킬 때 에러 메시지가 발생하므로 수정한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 15.1163%; height: 17px;&quot;&gt;PORT&lt;/td&gt;
&lt;td style=&quot;width: 84.8837%; height: 17px;&quot;&gt;이미 사용 중인 포트 번호일 경우 WebtoB가 정상적으로 동작하지 않으므로 중복되지 않는 번호로 설정한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 15.1163%; height: 17px;&quot;&gt;JSVPORT&lt;/td&gt;
&lt;td style=&quot;width: 84.8837%; height: 17px;&quot;&gt;이미 사용 중인 포트 번호일 경우 내장 Servlet이 정상적으로 동작하지 않으므로 중복되지 않는 번호로 설정한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;환경 파일 컴파일 환경 파일을 확인한 후 다음과 같이 환경 파일을 컴파일한다. 정상적으로 컴파일하면&amp;nbsp;&lt;code&gt;wsconfig&lt;/code&gt;라는 파일이 생성된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725941898998&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;wscfl &amp;ndash;i http.m
Current configuration:
        Number of client handler(HTH) = 1
        Supported maximum user per node = 16339
        Supported maximum user per handler = 16339

Successfully created the configuration file (/home/webtob1/webtob5/config/wsconfig) for node qpsx1.
The host name of the running machine is qpsx1.&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.2 WebtoB 5 기동&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;wsboot&amp;nbsp;명령어를 실행한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725941927484&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ wsboot

Booting WebtoB on node (qpsx1)
Welcome to WebtoB Demo system. It will expire on 2016-04-18
Today is 2016-03-30
Starting WSM at Wed Mar 30 15:14:16 2016
Starting HTL at Wed Mar 30 15:14:16 2016
Starting HTH at Wed Mar 30 15:14:16 2016
         Current WebtoB Configuration:
                Number of client handlers (HTH) = 1
                Supported maximum user per node = 8153
                Supported maximum user per handler = 8153
Starting SVR(cgis) at Wed Mar 30 15:14:16 2016
Starting SVR(cgis) at Wed Mar 30 15:14:16 2016
Starting SVR(ssis) at Wed Mar 30 15:14:16 2016
Starting SVR(ssis) at Wed Mar 30 15:14:16 2016&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;WebtoB가 기동되면 브라우저로 서비스를 요청한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725941938704&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;http://&amp;lt;ip-address&amp;gt;:&amp;lt;port&amp;gt;/&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;WebtoB가 정상적으로 기동된 경우 다음과 같은 화면이 표시된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1c3c45a0e5745f4e6030b4fc2c6c3439.jpg&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;323&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VzPJE/btsJxY4nhTp/pEH8Z9zJTwLRBkQE8IHtDk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VzPJE/btsJxY4nhTp/pEH8Z9zJTwLRBkQE8IHtDk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VzPJE/btsJxY4nhTp/pEH8Z9zJTwLRBkQE8IHtDk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVzPJE%2FbtsJxY4nhTp%2FpEH8Z9zJTwLRBkQE8IHtDk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;723&quot; height=&quot;323&quot; data-filename=&quot;1c3c45a0e5745f4e6030b4fc2c6c3439.jpg&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;323&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.3 WebtoB 5 종료&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;WebtoB를 종료하려면&amp;nbsp;wsdown&amp;nbsp;명령어를 실행한다. 다음은 WebtoB를 종료하는 과정에 대한 예&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725941977652&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ wsdown
Do you really want to shut down WebtoB? (y : n): y

WSDOWN for node(qpsx1) is starting: 
        WSDOWN: SERVER(cgi:0) downed: Wed Mar 30 15:14:45 2016
        WSDOWN: SERVER(cgi:1) downed: Wed Mar 30 15:14:45 2016
        WSDOWN: SERVER(ssi:10) downed: Wed Mar 30 15:14:45 2016
        WSDOWN: SERVER(ssi:11) downed: Wed Mar 30 15:14:45 2016
        WSDOWN: HTL downed: Wed Mar 30 15:14:45 2016
        WSDOWN: HTH downed: Wed Mar 30 15:14:45 2016
        WSDOWN: WSM downed: Wed Mar 30 15:14:45 2016
        WSDOWN: WebtoB is down&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. WebtoB 5 제거&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.1 WebtoB 5 제거 실행&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;WebtoB를 제거하기 위해 다음 경로의 Uninstaller를 실행한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725942016098&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$WEBTOBDIR/UninstallerData/Uninstall&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Uninstaller를 실행시키면 다음과 같이 제거에 대한 안내 메시지가 출력된다. 제거 작업에서는 설치 과정에서 생성되었던 파일과 디렉터리를 삭제하며, 설치 후 생성된 파일들은 별도로 삭제해야 한다. &amp;lt;ENTER&amp;gt; 키를 눌러 다음 단계로 진행한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725942032794&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ ./Uninstall
Preparing CONSOLE Mode Installation...

===============================================================================
WEBTOB5_0_SP0_Fix#0               (created with InstallAnywhere by Macrovision)
-------------------------------------------------------------------------------




===============================================================================
Uninstall WEBTOB5_0_SP0_Fix#0
-----------------------------

About to uninstall...

WEBTOB5_0_SP0_Fix#0

This will remove features installed by InstallAnywhere.  It will not remove 
files and folders created after the installation.

PRESS &amp;lt;ENTER&amp;gt; TO CONTINUE:&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다음과 같은 화면이 나타나면서 각종 파일 및 환경변수 삭제 등의 작업을 수행한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725942055730&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===============================================================================
Uninstalling...
---------------

...*
*
*************************&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;제거 과정이 성공적으로 완료되면 다음과 같은 메시지가 출력되고 Uninstaller 실행을 종료한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725942073798&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===============================================================================
Uninstall Complete
------------------

All items were successfully uninstalled.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.2 WebtoB 5 제거 확인&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;파일 삭제 확인 :&lt;/b&gt;&amp;nbsp;설치했던 파일들이 모두 삭제된 것을 확인한다. 단, 설치 이후 생성된 파일들은 남아 있을 수 있으므로 별도로 삭제해야 한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;환경변수 삭제 확인 :&lt;/b&gt;&amp;nbsp;WebtoB를 설치할 때 등록된 환경변수들과 &amp;lsquo;PATH&amp;rsquo;에 설정된 경로들이 정상적으로 삭제된 것을 확인한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>서버/Web Server</category>
      <category>webserver</category>
      <category>WEBTOB</category>
      <category>웹서버</category>
      <category>웹투비</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/17</guid>
      <comments>https://bigdwarf.tistory.com/17#entry17comment</comments>
      <pubDate>Tue, 17 Sep 2024 00:36:46 +0900</pubDate>
    </item>
    <item>
      <title>브라우저 저장소 : 로컬 스토리지, 세션 스토리지, 쿠키</title>
      <link>https://bigdwarf.tistory.com/29</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목을-입력해주세요_-001.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dG3N29/btsJCX7w1e9/xzs3dY5xWqRhZSKJ8h6DCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dG3N29/btsJCX7w1e9/xzs3dY5xWqRhZSKJ8h6DCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dG3N29/btsJCX7w1e9/xzs3dY5xWqRhZSKJ8h6DCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdG3N29%2FbtsJCX7w1e9%2Fxzs3dY5xWqRhZSKJ8h6DCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1080&quot; data-filename=&quot;제목을-입력해주세요_-001.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;브라우저 로컬 스토리지를 이용해 검색어 자동 저장 기능을 만들면서 브라우저 저장소 개념 정리&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.2 브라우저 저장소 이해하기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹&amp;nbsp;애플리케이션을&amp;nbsp;개발하거나&amp;nbsp;사용하는&amp;nbsp;동안,&amp;nbsp;데이터를&amp;nbsp;저장하고&amp;nbsp;유지하는&amp;nbsp;것은&amp;nbsp;필수적인&amp;nbsp;기능&amp;nbsp;중&amp;nbsp;하나입니다.&amp;nbsp;브라우저는&amp;nbsp;사용자의&amp;nbsp;데이터를&amp;nbsp;클라이언트&amp;nbsp;측에&amp;nbsp;저장할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;몇&amp;nbsp;가지&amp;nbsp;옵션을&amp;nbsp;제공합니다.&amp;nbsp;이&amp;nbsp;글에서는&amp;nbsp;로컬&amp;nbsp;스토리지(Local&amp;nbsp;Storage),&amp;nbsp;세션&amp;nbsp;스토리지(Session&amp;nbsp;Storage),&amp;nbsp;그리고&amp;nbsp;쿠키(Cookie)에&amp;nbsp;대해&amp;nbsp;살펴보겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 로컬 스토리지 (Local Storage)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로컬&amp;nbsp;스토리지는 사용자의 브라우저에 영구적으로 데이터를 저장할 수 있는 WebAPI입니다. 이 데이터는 브라우저나 탭을 닫아도 유지되며, 심지어 컴퓨터를 다시 시작해도 사라지지 않습니다. 로컬 스토리지는 보통 사용자 설정, 즐겨찾기 정보, 상태 유지 정보 등을 저장하는 데 유용합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.1 로컬 스토리지의 특징&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt; &lt;i&gt;영구적 데이터 저장&lt;/i&gt;&amp;nbsp;&lt;/b&gt; : 삭제되지 않는 한 데이터를 영구적으로 유지할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt; &lt;i&gt;브라우저 기반&lt;/i&gt;&lt;/b&gt; &amp;nbsp;: 도메인 단위로 데이터를 관리하며, 동일한 도메인에서 접근할 수 있습니다. 도메인이 다른 웹 페이지 간에는 데이터를 공유할 수 없습니다.&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;보안 고려사항&lt;/b&gt;&lt;/i&gt; &amp;nbsp;: 민감한 데이터를 로컬 스토리지에 저장하면 브라우저가 해킹당했을 때 데이터 유출 위험이 있습니다. 따라서 로그인 토큰이나 비밀번호 등 중요한 데이터는 로컬 스토리지에 저장하지 말아야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.2 로컬 스토리지의 장점&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터를 오래 유지할 수 있으며, 재방문 시에도 사용자 맞춤형 환경을 제공할 수 있습니다.&lt;/li&gt;
&lt;li&gt;JSON 형태의 구조적 데이터를 저장할 수 있어 데이터 구조화에 용이합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.3 로컬 스토리지의 단점&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt; &lt;i&gt;보안 위험&lt;/i&gt;&lt;/b&gt; &amp;nbsp;: 스크립트를 통해 클라이언트가 쉽게 접근할 수 있기 때문에, 중요한 데이터를 저장하는 것은 피해야 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;i&gt; &lt;i&gt;동기식 처리&lt;/i&gt; &lt;/i&gt;&lt;/b&gt;&amp;nbsp;: 로컬 스토리지는 동기적으로 작동하여, 큰 데이터를 저장하거나 가져오는 과정에서 성능 저하를 초래할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.4 로컬 스토리지 예제&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1726493145293&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 데이터 저장
localStorage.setItem('name', 'junu');

// 데이터 가져오기
let theme = localStorage.getItem('name');
console.log(name); // 'junu'

// 데이터 삭제
localStorage.removeItem('name');

// 모든 데이터 삭제
localStorage.clear();&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 세션 스토리지 ( Session Storage)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세션 스토리지는 현재 브라우저 탭이 유지되는 동안만 데이터를 저장합니다. 즉, 사용자가 탭이나 창을 닫으면 데이터는 삭제됩니다. 세션 스토리지는 주로 특정 세션 내에서만 필요한 데이터를 저장하는 데 사용되며, 쇼핑 카트 정보나 일시적인 사용자 활동 추적 등에 유용합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.1 세션 스토리지의 특징&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt; &lt;i&gt;세션 기반 데이터 저장&lt;/i&gt;&lt;/b&gt; &amp;nbsp;&lt;/i&gt;: 탭을 닫으면 데이터가 삭제되며, 각 탭에 독립적으로 적용됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt; &lt;i&gt;브라우저 종료 시 데이터 삭제&lt;/i&gt;&lt;/b&gt; &amp;nbsp;: 세션이 종료되면 데이터가 사라집니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt; &lt;i&gt;탭 간 독립성&lt;/i&gt;&lt;/b&gt; &amp;nbsp;: 서로 다른 탭에서 같은 페이지를 열어도 세션 데이터는 서로 공유되지 않으며, 각각 독립된 세션을 유지합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.2 세션 스토리지의 장점&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;짧은 기간 동안의 데이터를 안전하게 저장할 수 있습니다.&lt;/li&gt;
&lt;li&gt;복잡한 로그인이나 상태 관리를 필요로 하지 않는 간단한 웹 애플리케이션에서 유용합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.3 세션 스토리지의 단점&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터가 브라우저 세션이 끝나면 삭제되므로, 영구적인 데이터 저장에는 적합하지 않습니다.&lt;/li&gt;
&lt;li&gt;동기식이므로, 많은 양의 데이터를 처리할 때 성능 문제가 발생할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.4 세션 스토리지 예제&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1726493563242&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 데이터 저장
sessionStorage.setItem('cart', JSON.stringify(['item1', 'item2']));

// 데이터 가져오기
let cart = JSON.parse(sessionStorage.getItem('cart'));
console.log(cart); // ['item1', 'item2']

// 데이터 삭제
sessionStorage.removeItem('cart');

// 모든 데이터 삭제
sessionStorage.clear();&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt; 4. 쿠키 (Cookies)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿠키는 브라우저에 저장할 수 있는 소량의 데이터로, 주로 서버와 클라이언트 간의 상태 정보를 주고받는 데 사용됩니다. 쿠키는 세션 유지, 사용자 인증, 추적 등에 유용하며, 브라우저는 HTTP 요청 시마다 서버에 쿠키를 자동으로 전송합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.1 쿠키의 특징&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;서버와 클라이언트 간 자동 전송&lt;/b&gt;&lt;/i&gt; : 쿠키는 서버에 의해 설정될 수 있으며, 클라이언트가 HTTP 요청을 할 때마다 자동으로 서버에 쿠키가 포함되어 전송됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;i&gt; &lt;i&gt;만료 시간 설정 가능&lt;/i&gt; &lt;/i&gt;&lt;/b&gt;: 쿠키는 설정에 따라 만료 시간(예: 7일, 1년 등)을 지정할 수 있으며, 만료 시간이 지나면 자동으로 삭제됩니다.&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;보안 옵션&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt; : &lt;code&gt;Secure&lt;/code&gt; 속성을 사용하면 HTTPS를 통해서만 쿠키가 전송되며, &lt;code&gt;HttpOnly&lt;/code&gt; 옵션을 설정하면 자바스크립트에서 접근할 수 없습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.2 쿠키의 장점&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;쿠키는 서버와의 세션 상태 유지를 위해 가장 흔하게 사용됩니다.&lt;/li&gt;
&lt;li&gt;만료 시간과 도메인을 설정하여 다양한 용도로 쿠키를 관리할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.3 쿠키의 단점&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;용량 제한&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt; : 쿠키는 최대 4KB의 데이터를 저장할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;i&gt; &lt;i&gt;&lt;b&gt;보안 위험&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt; &lt;/i&gt;: HTTP를 통해 쿠키가 전송될 경우, 공격자가 가로챌 수 있습니다. HTTPS 및 &lt;code&gt;Secure&lt;/code&gt;, &lt;code&gt;HttpOnly&lt;/code&gt; 옵션을 사용하여 보안을 강화해야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.4 쿠키 예제&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1726493921367&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 쿠키 설정 (쿠키 만료 시간 설정 가능)
document.cookie = &quot;username=seoring; expires=Fri, 31 Dec 2024 23:59:59 GMT; path=/&quot;;

// 쿠키 가져오기
function getCookie(name) {
  const value = `; ${document.cookie}`;
  const parts = value.split(`; ${name}=`);
  if (parts.length === 2) return parts.pop().split(';').shift();
}
let username = getCookie('username');
console.log(username); // 'seoring'

// 쿠키 삭제 (만료 시간으로 삭제)
document.cookie = &quot;username=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/&quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 로컬 스토리지 vs 세션 스토리지 vs 쿠키: 차이점 비교 &lt;/b&gt;&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 111px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;구분&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;로컬 스토리지&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;세션 스토리지&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;쿠키&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;데이터 유지 기간&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;영구적&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;세션 동안&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;설정한 만료 시간까지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;용량&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;5MB&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;5MB&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;4KB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;주 용도&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;사용자 설정 저장&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;일시적인 세션 데이터&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;인증 정보, 사용자 세션 관리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;서버와의 통신&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;통신 없음&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;통신 없음&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;요청 시마다 서버로 전송&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;보안&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;HTTPS가 아닌 경우 위험&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;HTTPS가 아닌 경우 위험&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;HTTPS, Secure, HttpOnly 사용 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 스토리지 사용 시 보안 고려 사항&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스토리지를 사용할 때 보안은 매우 중요한 요소입니다. 다음은 브라우저 스토리지 사용 시 고려해야 할 보안 팁입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;민감한 데이터 저장 금지&lt;/b&gt;&lt;/i&gt; : 로컬 스토리지나 세션 스토리지에 민감한 정보(예: 비밀번호, 신용카드 정보 등)를 저장하지 않도록 주의하세요.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;i&gt;HTTPS 사용&lt;/i&gt;&lt;/b&gt; : HTTPS를 통해 통신하면 데이터 전송 중에 가로채는 것을 방지할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;b&gt;쿠키 보안 속성 설정&lt;/b&gt;&amp;nbsp;&lt;/i&gt;: &lt;code&gt;Secure&lt;/code&gt; 및 &lt;code&gt;HttpOnly&lt;/code&gt; 속성을 사용하여 쿠키를 보호할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 마무리&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서는 브라우저 스토리지의 기본 개념부터 실제 사용법, 보안에 이르기까지 자세히 살펴보았습니다. 각 스토리지의 장단점을 이해하고, 적절한 용도를 선택하여 효율적인 웹 애플리케이션을 개발할 수 있기를 바랍니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>지식/Web</category>
      <category>Browser</category>
      <category>Web</category>
      <category>webBrowser</category>
      <category>브라우저</category>
      <category>웹</category>
      <category>웹브라우저</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/29</guid>
      <comments>https://bigdwarf.tistory.com/29#entry29comment</comments>
      <pubDate>Mon, 16 Sep 2024 22:49:07 +0900</pubDate>
    </item>
    <item>
      <title>Rocky Linux 9 설치</title>
      <link>https://bigdwarf.tistory.com/16</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ff09383e1b4a5782e97381727e912537.png&quot; data-origin-width=&quot;1364&quot; data-origin-height=&quot;940&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cL9Iiq/btsJvQ02BiM/udK371mZJ00qqOeuqM2m2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cL9Iiq/btsJvQ02BiM/udK371mZJ00qqOeuqM2m2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cL9Iiq/btsJvQ02BiM/udK371mZJ00qqOeuqM2m2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcL9Iiq%2FbtsJvQ02BiM%2FudK371mZJ00qqOeuqM2m2K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1364&quot; height=&quot;940&quot; data-filename=&quot;ff09383e1b4a5782e97381727e912537.png&quot; data-origin-width=&quot;1364&quot; data-origin-height=&quot;940&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✅ Rocky Linux 9 설치하며 정리한 글&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;b&gt;2. Rocky Linux 9&lt;/b&gt;&lt;/b&gt;&amp;nbsp;&lt;b&gt;다운로드 링크&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[&lt;a href=&quot;https://rockylinux.org/download/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;설치링크&lt;/span&gt;&lt;/a&gt;]&lt;/b&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1725933122899&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Download - Rocky Linux&quot; data-og-description=&quot;Download Download the latest Rocky Linux versions here. Get Involved As you download and use Rocky Linux, the Rocky Enterprise Software Foundation invites you to be a part of the community as a contributor. There are many ways to contribute to the project,&quot; data-og-host=&quot;rockylinux.org&quot; data-og-source-url=&quot;https://rockylinux.org/download/&quot; data-og-url=&quot;https://rockylinux.org/ko/download&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://rockylinux.org/download/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://rockylinux.org/download/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Download - Rocky Linux&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Download Download the latest Rocky Linux versions here. Get Involved As you download and use Rocky Linux, the Rocky Enterprise Software Foundation invites you to be a part of the community as a contributor. There are many ways to contribute to the project,&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;rockylinux.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치할 환경의 아키텍처를 선택해 다운로드한다. 저는 가벼운 버전 x86_64 Minimal 이미지를 다운로드하였습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;597b17c65e4c055e5ec9280728c86724.jpg&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;714&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VAlgT/btsJvt58yRZ/QkLEIzkan0uc0DaRqqrN60/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VAlgT/btsJvt58yRZ/QkLEIzkan0uc0DaRqqrN60/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VAlgT/btsJvt58yRZ/QkLEIzkan0uc0DaRqqrN60/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVAlgT%2FbtsJvt58yRZ%2FQkLEIzkan0uc0DaRqqrN60%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;931&quot; height=&quot;714&quot; data-filename=&quot;597b17c65e4c055e5ec9280728c86724.jpg&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;714&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. Rocky Linux 9 설치&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.1 Rocky Linux &lt;/b&gt;&lt;b&gt;9 설치 진입&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Install Rocky Linux 9.2 선택 후 설치 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2d633549605fe1997c51b4ee93b7b20d.jpg&quot; data-origin-width=&quot;859&quot; data-origin-height=&quot;542&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2RQyu/btsJvwWgtMu/0rksOyMOy6UvykFOwsiYL0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2RQyu/btsJvwWgtMu/0rksOyMOy6UvykFOwsiYL0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2RQyu/btsJvwWgtMu/0rksOyMOy6UvykFOwsiYL0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2RQyu%2FbtsJvwWgtMu%2F0rksOyMOy6UvykFOwsiYL0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;859&quot; height=&quot;542&quot; data-filename=&quot;2d633549605fe1997c51b4ee93b7b20d.jpg&quot; data-origin-width=&quot;859&quot; data-origin-height=&quot;542&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.2 Rocky Linux&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;9 언어 선택&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;언어는 자신에 취향에 맞게 선택하시길 바랍니다.  저는 영어로 선택 후 진행했습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;9f733bf790b260d9c6feff382b0c3a32.jpg&quot; data-origin-width=&quot;795&quot; data-origin-height=&quot;599&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctcLIE/btsJvSYS4Ua/PPUXRbJ8R8C3OwFmVDZfJk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctcLIE/btsJvSYS4Ua/PPUXRbJ8R8C3OwFmVDZfJk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctcLIE/btsJvSYS4Ua/PPUXRbJ8R8C3OwFmVDZfJk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FctcLIE%2FbtsJvSYS4Ua%2FPPUXRbJ8R8C3OwFmVDZfJk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;795&quot; height=&quot;599&quot; data-filename=&quot;9f733bf790b260d9c6feff382b0c3a32.jpg&quot; data-origin-width=&quot;795&quot; data-origin-height=&quot;599&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.3 Rocky Linux&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;9 환경설정 진입&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;키보드, 언어, 시간, 네트워크 등 설정해 주시되 파티션 설정 및 루트 비밀번호 설정은 필수 항목이기 때문에 진행 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ac23b423f414d78954c92133e2da16a6.jpg&quot; data-origin-width=&quot;797&quot; data-origin-height=&quot;595&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bc7jFa/btsJv90CsIU/dS0vdVTaAAdzndRmruzu61/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bc7jFa/btsJv90CsIU/dS0vdVTaAAdzndRmruzu61/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bc7jFa/btsJv90CsIU/dS0vdVTaAAdzndRmruzu61/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbc7jFa%2FbtsJv90CsIU%2FdS0vdVTaAAdzndRmruzu61%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;797&quot; height=&quot;595&quot; data-filename=&quot;ac23b423f414d78954c92133e2da16a6.jpg&quot; data-origin-width=&quot;797&quot; data-origin-height=&quot;595&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.4 Rocky Linux&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;9 루트 비밀번호 설정&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;비밀번호 설정 및 필요에 따라 ROOT 계정을 잠금 또는 ROOT 비밀번호로 SSH 로그인하도록 허용 설정 기본적으로 ROOT 계정은 잠금 하도록 하는 게 좋습니다. (Lock root account 체크박스 선택)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;9409f8d4ff713091da0e653ddeb2e32e.jpg&quot; data-origin-width=&quot;796&quot; data-origin-height=&quot;598&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Db50N/btsJu8nEwX2/WChlScofSzJgoarSbol2E0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Db50N/btsJu8nEwX2/WChlScofSzJgoarSbol2E0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Db50N/btsJu8nEwX2/WChlScofSzJgoarSbol2E0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDb50N%2FbtsJu8nEwX2%2FWChlScofSzJgoarSbol2E0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;796&quot; height=&quot;598&quot; data-filename=&quot;9409f8d4ff713091da0e653ddeb2e32e.jpg&quot; data-origin-width=&quot;796&quot; data-origin-height=&quot;598&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.5 Rocky Linux&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;9 하드 파티션 설정&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파티션 설정은 따로 설명해드리지 않겠습니다. 저는 기본 설정으로 진행했습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;22ab83fbfc8cc71b71aa02e888978690.jpg&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;601&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c4puBw/btsJwXkRRaa/w46KTnujhYske0b1XgbVmK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c4puBw/btsJwXkRRaa/w46KTnujhYske0b1XgbVmK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c4puBw/btsJwXkRRaa/w46KTnujhYske0b1XgbVmK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc4puBw%2FbtsJwXkRRaa%2Fw46KTnujhYske0b1XgbVmK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;798&quot; height=&quot;601&quot; data-filename=&quot;22ab83fbfc8cc71b71aa02e888978690.jpg&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;601&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.6 Rocky Linux&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;9 설치 진행&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Begin Installation 클릭 후 설치 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;0201daf93b8208d76d43aefd0de7d07c.jpg&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;596&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwfDbh/btsJwTCMe7P/HrfwOyJKNCkhVbD8xAOO3k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwfDbh/btsJwTCMe7P/HrfwOyJKNCkhVbD8xAOO3k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwfDbh/btsJwTCMe7P/HrfwOyJKNCkhVbD8xAOO3k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwfDbh%2FbtsJwTCMe7P%2FHrfwOyJKNCkhVbD8xAOO3k%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;794&quot; height=&quot;596&quot; data-filename=&quot;0201daf93b8208d76d43aefd0de7d07c.jpg&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;596&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.7 Rocky Linux&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;9 설치 진행 완료&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Reboot System 클릭 후 재부팅 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;3c9f50e8a15f5eac3aadfd8e9019999b.jpg&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;596&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cSWVfG/btsJv81Kdno/6KWwI2VjcLf9lTuaKJ083k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cSWVfG/btsJv81Kdno/6KWwI2VjcLf9lTuaKJ083k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cSWVfG/btsJv81Kdno/6KWwI2VjcLf9lTuaKJ083k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcSWVfG%2FbtsJv81Kdno%2F6KWwI2VjcLf9lTuaKJ083k%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;794&quot; height=&quot;596&quot; data-filename=&quot;3c9f50e8a15f5eac3aadfd8e9019999b.jpg&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;596&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.8 Rocky Linux&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;9 부팅 완료&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;로그인하시고 계정생성, 네트워크, 보안 설정 등을 진행하시면 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;cef09f4b816a2e68eafead899805aa42.jpg&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;666&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EFfiN/btsJxxsd5bH/5rq69wgb80DZgASOnmBTM1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EFfiN/btsJxxsd5bH/5rq69wgb80DZgASOnmBTM1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EFfiN/btsJxxsd5bH/5rq69wgb80DZgASOnmBTM1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEFfiN%2FbtsJxxsd5bH%2F5rq69wgb80DZgASOnmBTM1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;930&quot; height=&quot;666&quot; data-filename=&quot;cef09f4b816a2e68eafead899805aa42.jpg&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;666&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>운영체제/Linux</category>
      <category>linux</category>
      <category>Rocky</category>
      <category>록키리눅스</category>
      <category>리눅스</category>
      <category>리눅스설치</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/16</guid>
      <comments>https://bigdwarf.tistory.com/16#entry16comment</comments>
      <pubDate>Mon, 16 Sep 2024 02:04:29 +0900</pubDate>
    </item>
    <item>
      <title>스프링 Filter, Interceptor, AOP 정리</title>
      <link>https://bigdwarf.tistory.com/15</link>
      <description>&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mgB4Z/btsJwzcvUwE/1jGtWcEAGefDOGDXViQC91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mgB4Z/btsJwzcvUwE/1jGtWcEAGefDOGDXViQC91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mgB4Z/btsJwzcvUwE/1jGtWcEAGefDOGDXViQC91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmgB4Z%2FbtsJwzcvUwE%2F1jGtWcEAGefDOGDXViQC91%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;640&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot;&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;&lt;p data-ke-size=&quot;size16&quot;&gt; &lt;a href=&quot;https://namu.wiki/w/Spring(%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC)&quot; target=&quot;_self&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;스프링&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;은 자바 기반의 오픈 소스 프레임워크로, 애플리케이션 개발을 위한 다양한 기능을 제공합니다. &lt;a href=&quot;https://namu.wiki/w/Spring(%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC)&quot; target=&quot;_self&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;스프링&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;의 중요한 개념 중에는 필터(Filter), 인터셉터(Interceptor) 및 관점 지향 프로그래밍(AOP, Aspect-Oriented Programming)이 있습니다. 이들은 애플리케이션의 동작을 제어하고 조정하는 데 사용됩니다. &lt;a href=&quot;https://namu.wiki/w/Spring(%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC)&quot; target=&quot;_self&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;스프링&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; 필터, 인터셉터 및 AOP의 차이와 각각의 역할에 대해 알아보겠습니다.&lt;/p&gt;&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot;&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 스프링&lt;/b&gt;&amp;nbsp;&lt;b&gt;Filter, Interceptor, AOP의 흐름&lt;/b&gt;&lt;/h2&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.1 Filter, Interceptor, AOP의 흐름도&lt;/b&gt;&lt;/h3&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;868&quot; data-origin-height=&quot;417&quot;&gt;&lt;a href=&quot;https://sallykim5087.tistory.com/158&quot; target=&quot;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bc62ot/btsJvv9QYlH/kjq1N3M97rgCHGBK8PSeqK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbc62ot%2FbtsJvv9QYlH%2Fkjq1N3M97rgCHGBK8PSeqK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;868&quot; height=&quot;417&quot; data-origin-width=&quot;868&quot; data-origin-height=&quot;417&quot;/&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.2 Filter, Interceptor, AOP의 흐름도 설명&lt;/b&gt;&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;서버를 실행시켜 서블릿이 올라오는 동안에 init이 실행되고, 그 후 doFilter가 실행된다.&amp;nbsp;&lt;/li&gt;&lt;li&gt;컨트롤러에 들어가기 전 preHandler가 실행된다&lt;/li&gt;&lt;li&gt;컨트롤러에서 나와 postHandler, after Completion, doFilter 순으로 진행이 된다.&lt;/li&gt;&lt;li&gt;서블릿 종료 시 destroy가 실행된다.&lt;/li&gt;&lt;/ul&gt;&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot;&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 스프링&lt;/b&gt;&amp;nbsp;&lt;b&gt;필터(Filter)&lt;/b&gt;&lt;/h2&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.1 필터란?&lt;/b&gt;&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;스프링 필터(Filter)는 HTTP 요청 및 응답을 처리하기 전후에 특정 작업을 수행하는 컴포넌트입니다. 필터는 서블릿 컨테이너 내에서 동작하며, 클라이언트로부터 오는 요청이나 서버에서 클라이언트로 보내는 응답을 가로채서 가공할 수 있습니다.&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.2 필터의 동작 원리&lt;/b&gt;&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;스프링 필터는 DispatcherServlet 이전에 실행되며, 요청과 응답을 처리하는 도중에 개입하여 특정 작업을 수행합니다. 일반적으로 웹 애플리케이션의 전체적인 동작에 영향을 주는 역할을 합니다. 필터는 javax.servlet.Filter 인터페이스를 구현하여 작성하며, doFilter() 메서드를 통해 요청과 응답을 가로채고 처리합니다.&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.3 필터의 주요 용도&lt;/b&gt;&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;&lt;b&gt;인증과 권한 부여&lt;/b&gt;&amp;nbsp;: 필터를 사용하여 사용자의 인증과 권한 부여를 처리할 수 있습니다. 인증된 사용자만이 액세스할 수 있는 리소스에 대한 요청을 거부하거나, 특정 권한을 가진 사용자에 대한 요청을 처리할 수 있습니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;로깅과 감사&lt;/b&gt;&amp;nbsp;: 필터를 사용하여 요청 및 응답의 로그를 기록하고 감사할 수 있습니다. 이를 통해 애플리케이션의 동작을 모니터링하고 문제를 식별하는 데 도움이 됩니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;데이터 변환 및 처리&lt;/b&gt;&amp;nbsp;: 필터를 사용하여 요청 및 응답의 데이터를 변환하거나 처리할 수 있습니다. 예를 들어, 요청의 인코딩을 변경하거나 응답의 데이터를 압축할 수 있습니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;예외 처리&lt;/b&gt;&amp;nbsp;: 필터를 사용하여 애플리케이션 내에서 발생하는 예외를 처리할 수 있습니다. 예외를 적절히 처리하고 사용자에게 적절한 오류 메시지를 표시함으로써 애플리케이션의 안정성을 향상시킬 수 있습니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;캐싱과 성능 최적화&lt;/b&gt;&amp;nbsp;: 필터를 사용하여 요청 및 응답을 캐시하고 성능을 향상시킬 수 있습니다. 반복적인 요청에 대한 응답을 캐시하여 서버 부하를 줄이고 응답 시간을 단축시킬 수 있습니다.&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.4 필터 사용 방법&lt;/b&gt;&lt;/h3&gt;&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt; 
 &lt;li&gt;init() 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;init() 메소드는 필터 객체가 생성되고 준비 작업을 위해 딱 한번 호출된다. 서블릿의 init()과 같은 용도이다. 이 메소드의 매개변수는 FilterConfig의 인스턴스이다. 이 인스턴스를 통해 필터 초기화 매개변수의 값을 꺼낼수 있다. 위 코드에서는 doFilter()에서 사용하기 위해 인스턴스 변수 config에 저장한다.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;doFilter() 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;필터와 매핑된 URL에 요청이 들어올때마다 doFilter()가 호출된다. 이 메소드에 필터가 할 작업을 작성한다.&lt;/li&gt; 
   &lt;li&gt;filterChain은 다음 필터를 가리키고 filterChain.doFilter()는 다음 필터를 호출한다. 다음 필터가 없다면 내부적으로 서블릿의 service()를 호출한다.&lt;/li&gt; 
   &lt;li&gt;서블릿이 실행되기 전에 처리할 작업은 filterChain.doFilter() 이전에, 서블릿이 실행된 후에 처리할 작업은 filterChain.doFilter() 이후에 작성한다.&lt;/li&gt; 
   &lt;li&gt;본 예제에서는 서블릿이 실행되기 전에 request parameter의 문자 집합을 먼저 설정하기 위해 filterChain.doFilter() 이전에 setCharacterEncoding()을 호출했다.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;destroy() 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;서블릿 컨테이너는 웹 어플리케이션을 종료하기 전에 필터들에 대해 destroy()를 호출해서 마무리 작업을 한다. 본 예제는 특별히 마무리할 작업이 없으므로 빈 메소드로 둔다.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ol&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;import&amp;nbsp;javax.servlet.*;
import&amp;nbsp;java.io.IOException;

public&amp;nbsp;class&amp;nbsp;MyFilter&amp;nbsp;implements&amp;nbsp;Filter&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;init(FilterConfig&amp;nbsp;config)&amp;nbsp;throws&amp;nbsp;ServletException&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;필터&amp;nbsp;초기화&amp;nbsp;작업
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;doFilter(ServletRequest&amp;nbsp;request,&amp;nbsp;ServletResponse&amp;nbsp;response,&amp;nbsp;FilterChain&amp;nbsp;chain)&amp;nbsp;throws&amp;nbsp;IOException,&amp;nbsp;ServletException&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;요청&amp;nbsp;및&amp;nbsp;응답&amp;nbsp;처리&amp;nbsp;작업
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;chain.doFilter(request,&amp;nbsp;response);&amp;nbsp;//&amp;nbsp;다음&amp;nbsp;필터로&amp;nbsp;전달
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;destroy()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;필터&amp;nbsp;종료&amp;nbsp;작업
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;↓ 필터를 어떤 URL 패턴에 적용할지 설정합니다. 이를 위해 web.xml 필터를 등록해야됩니다.&lt;/p&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;&amp;lt;filter&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;filter-name&amp;gt;myFilter&amp;lt;/filter-name&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;filter-class&amp;gt;com.example.MyFilter&amp;lt;/filter-class&amp;gt;
&amp;lt;/filter&amp;gt;
&amp;lt;filter-mapping&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;filter-name&amp;gt;myFilter&amp;lt;/filter-name&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/example/*&amp;lt;/url-pattern&amp;gt;&amp;nbsp;&amp;lt;!--&amp;nbsp;적용할&amp;nbsp;URL&amp;nbsp;패턴&amp;nbsp;설정&amp;nbsp;--&amp;gt;
&amp;lt;/filter-mapping&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot;&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 스프링&lt;/b&gt;&amp;nbsp;&lt;b&gt;인터셉터(Interceptor)&lt;/b&gt;&lt;/h2&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.1 인터셉터란?&lt;/b&gt;&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;스프링 인터셉터(Interceptor)는 스프링 MVC에서 컨트롤러의 호출 전후에 특정 작업을 수행하는 기능입니다. 인터셉터는 스프링의 핸들러 인터셉터 인터페이스를 구현하여 작성됩니다.&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.2 인터셉터의 동작 원리&lt;/b&gt;&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;인터셉터는 컨트롤러의 실행 전후에 개입하여 추가적인 작업을 수행합니다. 예를 들어, 인증 및 권한 확인, 세션 관리, 로깅 등의 작업을 수행할 수 있습니다. 인터셉터는 컨트롤러 실행 전에 호출되는 preHandle() 메서드와 컨트롤러 실행 후에 호출되는 postHandle() 메서드로 구성됩니다.&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.3 인터셉터의 주요 용도&lt;/b&gt;&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;&lt;b&gt;요청 및 응답 로깅&lt;/b&gt;&amp;nbsp;: Interceptor를 사용하여 요청 및 응답 데이터를 로깅하고, 디버깅 및 모니터링 목적으로 사용할 수 있습니다. 이는 시스템의 동작을 추적하고 문제를 해결하는 데 도움이 됩니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;보안&lt;/b&gt;&amp;nbsp;: Interceptor를 사용하여 인증 및 권한 부여를 구현할 수 있습니다. 예를 들어, 로그인 여부를 확인하고 특정 URL이나 리소스에 접근하는 권한을 확인할 수 있습니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;예외 처리&lt;/b&gt;&amp;nbsp;: Interceptor를 사용하여 예외를 처리하고, 예외 상황에 대한 적절한 응답을 생성할 수 있습니다. 이는 애플리케이션의 안정성을 향상시키고, 사용자에게 더 좋은 경험을 제공하는 데 도움이 됩니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;성능 측정&lt;/b&gt;&amp;nbsp;: Interceptor를 사용하여 애플리케이션의 성능을 측정하고, 부하가 많은 부분을 식별할 수 있습니다. 이를 통해 성능 최적화를 수행하고, 애플리케이션의 반응 시간을 개선할 수 있습니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;데이터 변환&lt;/b&gt;&amp;nbsp;: Interceptor를 사용하여 요청 및 응답 데이터를 변환할 수 있습니다. 예를 들어, JSON 데이터를 객체로 변환하거나, 객체를 JSON으로 변환할 수 있습니다.&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4.4 인터셉터 사용 방법&lt;/b&gt;&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;preHandler()&amp;nbsp;– 컨트롤러 메서드가 실행되기 전&lt;/li&gt;&lt;li&gt;postHanler() – 컨트롤러 메서드 실행직 후 view페이지 렌더링 되기 전&lt;/li&gt;&lt;li&gt;afterCompletion() – view페이지가 렌더링 되고 난 후&lt;/li&gt;&lt;/ul&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;import&amp;nbsp;javax.servlet.http.HttpServletRequest;
import&amp;nbsp;javax.servlet.http.HttpServletResponse;

import&amp;nbsp;org.springframework.web.servlet.HandlerInterceptor;
import&amp;nbsp;org.springframework.web.servlet.ModelAndView;

public&amp;nbsp;class&amp;nbsp;CustomInterceptor&amp;nbsp;implements&amp;nbsp;HandlerInterceptor&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;boolean&amp;nbsp;preHandle(HttpServletRequest&amp;nbsp;request,&amp;nbsp;HttpServletResponse&amp;nbsp;response,&amp;nbsp;Object&amp;nbsp;handler)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throws&amp;nbsp;Exception&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;preHandle&amp;nbsp;로직&amp;nbsp;구현
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;요청&amp;nbsp;처리&amp;nbsp;전에&amp;nbsp;실행됩니다.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;true;&amp;nbsp;//&amp;nbsp;또는&amp;nbsp;false를&amp;nbsp;반환하여&amp;nbsp;요청&amp;nbsp;처리를&amp;nbsp;중단할&amp;nbsp;수&amp;nbsp;있습니다.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;postHandle(HttpServletRequest&amp;nbsp;request,&amp;nbsp;HttpServletResponse&amp;nbsp;response,&amp;nbsp;Object&amp;nbsp;handler,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ModelAndView&amp;nbsp;modelAndView)&amp;nbsp;throws&amp;nbsp;Exception&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;postHandle&amp;nbsp;로직&amp;nbsp;구현
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;요청&amp;nbsp;처리&amp;nbsp;후에&amp;nbsp;실행됩니다.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;afterCompletion(HttpServletRequest&amp;nbsp;request,&amp;nbsp;HttpServletResponse&amp;nbsp;response,&amp;nbsp;Object&amp;nbsp;handler,&amp;nbsp;Exception&amp;nbsp;ex)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throws&amp;nbsp;Exception&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;afterCompletion&amp;nbsp;로직&amp;nbsp;구현
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;응답&amp;nbsp;완료&amp;nbsp;후에&amp;nbsp;실행됩니다.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;↓ Interceptor가 적용될 URL 패턴을 설정합니다. 이를 위해 dispatcher-servlet.xml 요소를 등록해야됩니다.&lt;/p&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;&amp;lt;!--&amp;nbsp;XML&amp;nbsp;설정&amp;nbsp;파일&amp;nbsp;내에서&amp;nbsp;Interceptor&amp;nbsp;등록&amp;nbsp;--&amp;gt;
&amp;lt;mvc:interceptors&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;첫&amp;nbsp;번째&amp;nbsp;Interceptor&amp;nbsp;등록&amp;nbsp;--&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;mvc:interceptor&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;첫&amp;nbsp;번째&amp;nbsp;Interceptor의&amp;nbsp;적용&amp;nbsp;URL&amp;nbsp;패턴&amp;nbsp;설정&amp;nbsp;--&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;mvc:mapping&amp;nbsp;path=&quot;/secure/**&quot;/&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;첫&amp;nbsp;번째&amp;nbsp;Interceptor&amp;nbsp;클래스&amp;nbsp;등록&amp;nbsp;--&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean&amp;nbsp;class=&quot;com.example.FirstInterceptor&quot;/&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/mvc:interceptor&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;두&amp;nbsp;번째&amp;nbsp;Interceptor&amp;nbsp;등록&amp;nbsp;--&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;mvc:interceptor&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;두&amp;nbsp;번째&amp;nbsp;Interceptor의&amp;nbsp;적용&amp;nbsp;URL&amp;nbsp;패턴&amp;nbsp;설정&amp;nbsp;--&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;mvc:mapping&amp;nbsp;path=&quot;/public/**&quot;/&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;두&amp;nbsp;번째&amp;nbsp;Interceptor&amp;nbsp;클래스&amp;nbsp;등록&amp;nbsp;--&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;bean&amp;nbsp;class=&quot;com.example.SecondInterceptor&quot;/&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/mvc:interceptor&amp;gt;
&amp;lt;/mvc:interceptors&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot;&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 스프링 AOP(관점 지향 프로그래밍)&lt;/b&gt;&lt;/h2&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.1 AOP란?&lt;/b&gt;&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;관점 지향 프로그래밍(AOP)은 소프트웨어 개발에서 횡단 관심사(cross-cutting concern)를 모듈화하는 기법입니다. AOP는 주요 비즈니스 로직과는 별개로 횡단 관심사를 분리하여 개발하고, 이를 필요한 부분에 적용할 수 있도록 지원합니다.&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.2 AOP의 동작 원리&lt;/b&gt;&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;AOP는 프록시 패턴을 이용하여 동작합니다. 핵심 로직을 실행하는 주요 객체는 프록시 객체에 의해 감싸져서 호출되며, 횡단 관심사는 프록시 객체 내에서 처리됩니다. AOP는 주로 메서드 호출, 예외 처리, 트랜잭션 관리 등의 측면에서 활용됩니다.&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.3 AOP의 주요 용도&lt;/b&gt;&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;&lt;b&gt;로깅&lt;/b&gt;&amp;nbsp;: AOP를 사용하여 애플리케이션의 다양한 부분에서 로그를 기록할 수 있습니다. 예를 들어, 메서드 호출 시간, 인자 값, 반환 값 등을 기록할 수 있습니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;트랜잭션 관리&lt;/b&gt;&amp;nbsp;: AOP를 사용하여 애플리케이션의 트랜잭션 처리를 자동화할 수 있습니다. 예를 들어, 메서드 실행 전후에 트랜잭션을 시작하고 커밋 또는 롤백할 수 있습니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;보안&lt;/b&gt;&amp;nbsp;: AOP를 사용하여 애플리케이션의 보안 기능을 구현할 수 있습니다. 예를 들어, 특정 메서드에 대한 인가 또는 인증을 수행하거나, 암호화 및 복호화를 자동으로 처리할 수 있습니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;캐싱&lt;/b&gt;&amp;nbsp;: AOP를 사용하여 반복적으로 실행되는 메서드의 결과를 캐싱할 수 있습니다. 이를 통해 애플리케이션의 성능을 향상시킬 수 있습니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;예외 처리&lt;/b&gt;&amp;nbsp;: AOP를 사용하여 애플리케이션에서 발생하는 예외를 처리할 수 있습니다. 예를 들어, 특정 예외가 발생했을 때 특정 작업을 수행하거나 예외를 변환하여 처리할 수 있습니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;권한 부여&lt;/b&gt;&amp;nbsp;: AOP를 사용하여 애플리케이션의 권한 부여 기능을 구현할 수 있습니다. 예를 들어, 특정 메서드에 대한 접근 권한을 확인하고 부여할 수 있습니다.&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.4 AOP의 주요 개념&lt;/b&gt;&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;&lt;b&gt;Aspect&lt;/b&gt;&amp;nbsp;: 위의 사진에서 처럼 Aspect 안에 모듈화 시킨 것을 의미한다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Advice&lt;/b&gt;&amp;nbsp;: 실질적으로 어떤 일을 해야하는지를 담고 있다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Pointcut&lt;/b&gt;&amp;nbsp;: 어디에 적용해야 하는지에 대한 정보를 담고 있다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Target&lt;/b&gt;&amp;nbsp;: Aspect에 적용이 되는 대상&lt;/li&gt;&lt;li&gt;&lt;b&gt;Join point&lt;/b&gt;&amp;nbsp;: Advice가 적용될 위치, 끼어들 수 있는 지점. 메서드 진입 지점, 생성자 호출 시점, 필드에서 값을 꺼내올 때 등 다양한 시점에 적용가능(여러가지 합류 지점임)&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.5 AOP의 사용 방법&lt;/b&gt;&lt;/h3&gt;&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt; 
 &lt;li&gt;before, after, after-returning, after-throwing, around&amp;nbsp; 5가지의 동작 시점이 존재 
  &lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;&lt;b&gt;@Before:&lt;/b&gt;&amp;nbsp;대상 메소드의 수행 전&lt;/li&gt; 
   &lt;li&gt;&lt;b&gt;@After:&lt;/b&gt;&amp;nbsp;대상 메소드의 수행 후&lt;/li&gt; 
   &lt;li&gt;&lt;b&gt;@After-returning:&lt;/b&gt;&amp;nbsp;대상 메소드의 정상적인 수행 후&lt;/li&gt; 
   &lt;li&gt;&lt;b&gt;@After-throwing:&lt;/b&gt;&amp;nbsp;예외발생 후&lt;/li&gt; 
   &lt;li&gt;&lt;b&gt;@Around:&lt;/b&gt;&amp;nbsp;대상 메소드의 수행 전, 후&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ol&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;↓ 5가지의 동작 시점 예시&lt;/p&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;import&amp;nbsp;org.aspectj.lang.JoinPoint;
import&amp;nbsp;org.aspectj.lang.ProceedingJoinPoint;
import&amp;nbsp;org.aspectj.lang.annotation.*;
import&amp;nbsp;org.springframework.stereotype.Component;

@Aspect
@Component
public&amp;nbsp;class&amp;nbsp;LoggingAspect&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Before(&quot;execution(*&amp;nbsp;com.example.MyService.*(..))&quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;beforeMethod(JoinPoint&amp;nbsp;joinPoint)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(&quot;메서드&amp;nbsp;호출&amp;nbsp;전에&amp;nbsp;실행됩니다.&quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@After(&quot;execution(*&amp;nbsp;com.example.MyService.*(..))&quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;afterMethod(JoinPoint&amp;nbsp;joinPoint)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(&quot;메서드&amp;nbsp;실행&amp;nbsp;후에&amp;nbsp;실행됩니다.&quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@AfterReturning(pointcut&amp;nbsp;=&amp;nbsp;&quot;execution(*&amp;nbsp;com.example.MyService.*(..))&quot;,&amp;nbsp;returning&amp;nbsp;=&amp;nbsp;&quot;result&quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;afterReturningMethod(JoinPoint&amp;nbsp;joinPoint,&amp;nbsp;Object&amp;nbsp;result)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(&quot;메서드&amp;nbsp;정상&amp;nbsp;반환&amp;nbsp;후에&amp;nbsp;실행됩니다.&quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@AfterThrowing(pointcut&amp;nbsp;=&amp;nbsp;&quot;execution(*&amp;nbsp;com.example.MyService.*(..))&quot;,&amp;nbsp;throwing&amp;nbsp;=&amp;nbsp;&quot;exception&quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;afterThrowingMethod(JoinPoint&amp;nbsp;joinPoint,&amp;nbsp;Exception&amp;nbsp;exception)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(&quot;예외&amp;nbsp;발생&amp;nbsp;후에&amp;nbsp;실행됩니다.&quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Around(&quot;execution(*&amp;nbsp;com.example.MyService.*(..))&quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;Object&amp;nbsp;aroundMethod(ProceedingJoinPoint&amp;nbsp;joinPoint)&amp;nbsp;throws&amp;nbsp;Throwable&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(&quot;메서드&amp;nbsp;호출&amp;nbsp;전에&amp;nbsp;실행됩니다.&quot;);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Object&amp;nbsp;result&amp;nbsp;=&amp;nbsp;joinPoint.proceed();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(&quot;메서드&amp;nbsp;호출&amp;nbsp;후에&amp;nbsp;실행됩니다.&quot;);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;result;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/code&gt;&lt;/pre&gt;&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot;&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 필터, 인터셉터 및 AOP의 차이점&lt;/b&gt;&lt;/h2&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6.1 개념적 차이&lt;/b&gt;&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;&lt;b&gt;필터&lt;/b&gt;&amp;nbsp;: HTTP 요청 및 응답을 처리하기 위해 사용되며, 서블릿 컨테이너 내에서 동작합니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;인터셉터&lt;/b&gt;&amp;nbsp;: 스프링 MVC에서 컨트롤러의 호출 전후에 특정 작업을 수행하기 위해 사용됩니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;AOP&lt;/b&gt;&amp;nbsp;: 횡단 관심사를 모듈화하여 주요 비즈니스 로직과 분리시키는 프로그래밍 기법입니다.&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6.2 동작 원리의 차이&lt;/b&gt;&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;&lt;b&gt;필터&lt;/b&gt;&amp;nbsp;: 서블릿 컨테이너에서 요청과 응답을 가로채어 처리합니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;인터셉터&amp;nbsp;&lt;/b&gt;: 스프링 MVC의 핸들러 호출 전후에 추가 작업을 수행합니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;AOP&lt;/b&gt;&amp;nbsp;: 프록시 패턴을 이용하여 횡단 관심사를 주요 로직과 분리하여 처리합니다.&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6.3 사용의 차이&lt;/b&gt;&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;&lt;b&gt;필터&lt;/b&gt;&amp;nbsp;: 인증, 권한 부여, 데이터 변환 등과 같이 요청 및 응답 전체에 영향을 주는 작업에 사용됩니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;인터셉터&lt;/b&gt;&amp;nbsp;: 세션 관리, 인증, 권한 부여 등 컨트롤러 호출 전후에 추가 작업이 필요한 경우에 사용됩니다.&lt;/li&gt;&lt;li&gt;&lt;b&gt;AOP&lt;/b&gt;&amp;nbsp;: 로깅, 예외 처리, 트랜잭션 관리 등과 같이 주요 비즈니스 로직과 별개로 횡단 관심사를 처리해야 하는 경우에 사용됩니다.&lt;/li&gt;&lt;/ul&gt;&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot;&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 마치며&lt;/b&gt;&lt;/h2&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;스프링 필터, 인터셉터 및 AOP에 대해 알아보았습니다. 필터는 HTTP 요청 및 응답을 처리하기 위해 사용되며, 인터셉터는 스프링 MVC에서 컨트롤러 호출 전후에 특정 작업을 수행합니다. AOP는 횡단 관심사를 모듈화하여 주요 비즈니스 로직과 분리시키는 프로그래밍 기법입니다. 각각의 역할과 동작 원리, 주요 용도에 대해 이해하고 적절하게 사용하는 것이 중요합니다. 스프링 개발에서 필요에 따라 필터, 인터셉터, 그리고 AOP를 조합하여 애플리케이션을 효과적으로 개발하고 관리할 수 있습니다.&lt;/p&gt;&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프레임워크/Spring</category>
      <category>Framework</category>
      <category>java</category>
      <category>Spring</category>
      <category>스프링</category>
      <category>스프링프레임워크</category>
      <category>자바</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/15</guid>
      <comments>https://bigdwarf.tistory.com/15#entry15comment</comments>
      <pubDate>Sun, 15 Sep 2024 10:25:29 +0900</pubDate>
    </item>
    <item>
      <title>PHP에서 TCPDF로 HTML화면을 PDF문서로 변환 작업</title>
      <link>https://bigdwarf.tistory.com/14</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;php.jpg&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;800&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lSvYw/btsJudoUbbq/829QWpb0SHTp9nrv4I1jWk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lSvYw/btsJudoUbbq/829QWpb0SHTp9nrv4I1jWk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lSvYw/btsJudoUbbq/829QWpb0SHTp9nrv4I1jWk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlSvYw%2FbtsJudoUbbq%2F829QWpb0SHTp9nrv4I1jWk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;800&quot; data-filename=&quot;php.jpg&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;800&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.1 TCPDF - PHP class for PDF&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;PDF 문서를 생성하는 PHP 라이브러리&lt;/li&gt;
&lt;li&gt;오픈소스&lt;/li&gt;
&lt;li&gt;UTF-8 지원&lt;/li&gt;
&lt;li&gt;라이선스 : LGPL&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;TCPDF.jpg&quot; data-origin-width=&quot;150&quot; data-origin-height=&quot;50&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOyHFv/btsJuXFInDj/4JSP85k6jQ1fYa6a2k0dZ0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOyHFv/btsJuXFInDj/4JSP85k6jQ1fYa6a2k0dZ0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOyHFv/btsJuXFInDj/4JSP85k6jQ1fYa6a2k0dZ0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOyHFv%2FbtsJuXFInDj%2F4JSP85k6jQ1fYa6a2k0dZ0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;150&quot; height=&quot;50&quot; data-filename=&quot;TCPDF.jpg&quot; data-origin-width=&quot;150&quot; data-origin-height=&quot;50&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 설치 전 준비 작업&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리눅스 unzip 설치&lt;/li&gt;
&lt;li&gt;TCPDF 설치&lt;/li&gt;
&lt;li&gt;TCPDF 한글 폰트 설치&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. TCPDF 설치 및 폰트 적용&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.1 TCPDF 다운로드 및 업로드&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치 주소 [&lt;a href=&quot;https://github.com/tecnickcom/tcpdf&quot; data-cke-saved-href=&quot;https://github.com/tecnickcom/tcpdf&quot;&gt;&lt;span style=&quot;color: #1abc9c;&quot;&gt;GitHub&lt;/span&gt;&lt;/a&gt;] 최신 소스 사용 하고 싶으면 GitHub에서 최신소스 다운로드 진행&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://jaist.dl.sourceforge.net/project/tcpdf&quot;&gt;https://jaist.dl.sourceforge.net/project/tcpdf&lt;/a&gt; 접속 후&amp;nbsp;tcpdf_6_3_2.zip 파일 직접 다운로드 후 자신의 서버에 업로드&lt;/li&gt;
&lt;li&gt;필자는 wget 통해서 설치 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725852735456&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#자신의&amp;nbsp;서버의&amp;nbsp;/usr/share/php&amp;nbsp;폴더&amp;nbsp;다운로드&amp;nbsp;후&amp;nbsp;압축&amp;nbsp;해제
cd&amp;nbsp;/usr/share/php/
wget&amp;nbsp;https://jaist.dl.sourceforge.net/project/tcpdf/tcpdf_6_3_2.zip&amp;nbsp;--no-check-certificate
unzip&amp;nbsp;tcpdf_6_3_2.zip&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.2 나눔 폰트 설치&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1725852761265&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cd&amp;nbsp;/usr/share/fonts/
wget&amp;nbsp;http://cdn.naver.com/naver/NanumFont/fontfiles/NanumFont_TTF_ALL.zip
unzip&amp;nbsp;NanumFont_TTF_ALL.zip&amp;nbsp;-d&amp;nbsp;NanumFont
cd&amp;nbsp;/usr/share/php/tcpdf/tools/
ls&amp;nbsp;/usr/share/fonts/NanumFont/*
ls&amp;nbsp;/usr/share/fonts/NanumFont/*&amp;nbsp;|&amp;nbsp;xargs&amp;nbsp;-I&amp;nbsp;TTF&amp;nbsp;php&amp;nbsp;tcpdf_addfont.php&amp;nbsp;-i&amp;nbsp;TTF
ll&amp;nbsp;/usr/share/php/tcpdf/fonts/&amp;nbsp;|&amp;nbsp;grep&amp;nbsp;nanum&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. PDF 변환 PHP 예제 코드&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1725852795206&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?php
require_once('/usr/share/php/tcpdf/examples/tcpdf_include.php');

$html&amp;nbsp;=&amp;nbsp;&amp;lt;&amp;lt;&amp;lt;EOD
&amp;lt;h3&amp;gt;PDF&amp;nbsp;변환&amp;nbsp;테스트&amp;lt;/h3&amp;gt;
&amp;lt;i&amp;gt;PDF&amp;nbsp;변환&amp;nbsp;작업&amp;nbsp;완료&amp;lt;/i&amp;gt;
EOD;

$pdf&amp;nbsp;=&amp;nbsp;new&amp;nbsp;TCPDF(PDF_PAGE_ORIENTATION,&amp;nbsp;PDF_UNIT,&amp;nbsp;PDF_PAGE_FORMAT,&amp;nbsp;true,&amp;nbsp;'UTF-8',&amp;nbsp;false);
$pdf-&amp;gt;SetCreator(PDF_CREATOR);
$pdf-&amp;gt;SetMargins(PDF_MARGIN_LEFT,&amp;nbsp;PDF_MARGIN_TOP,&amp;nbsp;PDF_MARGIN_RIGHT);
$pdf-&amp;gt;SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf-&amp;gt;SetFooterMargin(PDF_MARGIN_FOOTER);

//$pdf-&amp;gt;SetFont('nanumgothic',&amp;nbsp;'',&amp;nbsp;14,&amp;nbsp;'',&amp;nbsp;true);
$pdf-&amp;gt;SetFont('nanumgothic');
$pdf-&amp;gt;SetDefaultMonospacedFont(&quot;nanumgothic_coding&quot;);

$pdf-&amp;gt;AddPage();
$pdf-&amp;gt;writeHTMLCell(0,&amp;nbsp;0,&amp;nbsp;'',&amp;nbsp;'',&amp;nbsp;$html,&amp;nbsp;0,&amp;nbsp;1,&amp;nbsp;0,&amp;nbsp;true,&amp;nbsp;'',&amp;nbsp;true);
//$pdf-&amp;gt;Output(getcwd().'/temp.pdf',&amp;nbsp;'F');&amp;nbsp;//&amp;nbsp;실제&amp;nbsp;파일&amp;nbsp;생성됨
$pdf-&amp;gt;Output('temp.pdf',&amp;nbsp;'I');&amp;nbsp;//&amp;nbsp;화면으로&amp;nbsp;보여줌
?&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;구현화면.png&quot; data-origin-width=&quot;1918&quot; data-origin-height=&quot;911&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/upaDh/btsJwsLjzSH/1aaQxydY4gN2zMfqPYbQR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/upaDh/btsJwsLjzSH/1aaQxydY4gN2zMfqPYbQR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/upaDh/btsJwsLjzSH/1aaQxydY4gN2zMfqPYbQR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FupaDh%2FbtsJwsLjzSH%2F1aaQxydY4gN2zMfqPYbQR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1918&quot; height=&quot;911&quot; data-filename=&quot;구현화면.png&quot; data-origin-width=&quot;1918&quot; data-origin-height=&quot;911&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. TCPDF 오류&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;TCPDF ERROR: Some data has already been output, can't send PDF file&quot; 오류&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;php버전에 따라 차이가 있어 아래 내용 추가 필요&lt;/li&gt;
&lt;li&gt;$pdf-&amp;gt;Output 함수 실행 전 아래 내용 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725852853086&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ob_end_clean();&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>프로그래밍 언어/PHP</category>
      <category>pdf</category>
      <category>php</category>
      <category>tcpdf</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/14</guid>
      <comments>https://bigdwarf.tistory.com/14#entry14comment</comments>
      <pubDate>Sat, 14 Sep 2024 09:39:11 +0900</pubDate>
    </item>
    <item>
      <title>우분투(Ubuntu) 방화벽(UFW) 설정</title>
      <link>https://bigdwarf.tistory.com/13</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;우분투.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XAZ0g/btsJvmkBNpC/IKs8S6FgbkVKp1iWvKXWEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XAZ0g/btsJvmkBNpC/IKs8S6FgbkVKp1iWvKXWEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XAZ0g/btsJvmkBNpC/IKs8S6FgbkVKp1iWvKXWEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXAZ0g%2FbtsJvmkBNpC%2FIKs8S6FgbkVKp1iWvKXWEK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1280&quot; data-filename=&quot;우분투.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1280&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우분투(&lt;a href=&quot;https://ko.wikipedia.org/wiki/%EC%9A%B0%EB%B6%84%ED%88%AC&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;Ubuntu&lt;/span&gt;&lt;/a&gt;)의 기본적인 방화벽은 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;a style=&quot;color: #009a87;&quot; href=&quot;https://ko.wikipedia.org/wiki/UFW&quot; data-cke-saved-href=&quot;https://ko.wikipedia.org/wiki/UFW&quot; data-type=&quot;URL&quot; data-id=&quot;https://ko.wikipedia.org/wiki/UFW&quot;&gt;UFW&lt;/a&gt;&lt;/span&gt;입니다. 이는 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;a style=&quot;color: #009a87;&quot; href=&quot;https://ko.wikipedia.org/wiki/Iptables&quot; data-cke-saved-href=&quot;https://ko.wikipedia.org/wiki/Iptables&quot; data-type=&quot;URL&quot; data-id=&quot;https://ko.wikipedia.org/wiki/Iptables&quot;&gt;iptables&lt;/a&gt;&lt;/span&gt;를 좀 더 쉽게 설정할 수 있도록 한 것인데 간단한 방화벽 구성에는 문제가 없지만 수준 높은 방화벽 구성에는 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;a style=&quot;color: #009a87;&quot; href=&quot;https://ko.wikipedia.org/wiki/Iptables&quot; data-cke-saved-href=&quot;https://ko.wikipedia.org/wiki/Iptables&quot; data-type=&quot;URL&quot; data-id=&quot;https://ko.wikipedia.org/wiki/Iptables&quot;&gt;iptables&lt;/a&gt;&lt;/span&gt;룰을 직접 사용해야 합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 우분투(Ubuntu) 방화벽(UFW) 패키지 설치&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;UFW 패키지 설치&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725849886271&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;##&amp;nbsp;패키지가&amp;nbsp;없을&amp;nbsp;경우&amp;nbsp;설치
apt-get&amp;nbsp;install&amp;nbsp;ufw&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 우분투(Ubuntu) 방화벽(UFW) 활성화/비활성화&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;활성화&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725849989598&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;##&amp;nbsp;UFW&amp;nbsp;활성화
ufw&amp;nbsp;enable&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;비활성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725850011925&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;##&amp;nbsp;UFW&amp;nbsp;활성화
ufw&amp;nbsp;disable&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 우분투(Ubuntu) 방화벽(UFW) 기본 룰&amp;nbsp;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; &amp;nbsp;UFW에&amp;nbsp;설정되어&amp;nbsp;있는&amp;nbsp;기본&amp;nbsp;룰은&amp;nbsp;아래와&amp;nbsp;같다.&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;들어오는&amp;nbsp;패킷에&amp;nbsp;대해서는&amp;nbsp;전부&amp;nbsp;거부(deny)&lt;/li&gt;
&lt;li&gt;나가는&amp;nbsp;패킷에&amp;nbsp;대해서는&amp;nbsp;전부&amp;nbsp;허가(allow)&lt;/li&gt;
&lt;/ol&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기본 룰 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725850210041&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ufw&amp;nbsp;show&amp;nbsp;raw&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기본 정책 차단&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725850243389&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ufw&amp;nbsp;default&amp;nbsp;deny&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기본 정책 허용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725850272618&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ufw&amp;nbsp;default&amp;nbsp;allow&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 우분투(Ubuntu) 방화벽(UFW) 허용/차단&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.1 UFW 허용&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용 방법&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725851012374&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ufw allow &amp;lt;port&amp;gt;/&amp;lt;optional: protocal&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SSH 포트 22번 허용(tcp/udp 22번 포트를 모두 허용)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725850452244&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ufw&amp;nbsp;allow&amp;nbsp;22&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;tcp 22번 포트만을 허용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725850482260&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ufw&amp;nbsp;allow&amp;nbsp;22/tcp&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;udp 22번 포트만을 허용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725850500164&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ufw&amp;nbsp;allow&amp;nbsp;22/udp&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.2 UFW 거부&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용 방법&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725851037388&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ufw deny &amp;lt;port&amp;gt;/&amp;lt;optional: protocol&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ssh 포트 22번 거부(tcp/udp 22번 포트를 모두 거부)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725850824804&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ufw&amp;nbsp;deny&amp;nbsp;22&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;tcp 22번 포트만을 거부&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725850844366&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ufw&amp;nbsp;deny&amp;nbsp;22/tcp&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;udp 22번 포트만을 거부&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725850862374&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ufw&amp;nbsp;deny&amp;nbsp;22/udp&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 우분투(Ubuntu) 방화벽(UFW) 룰의 삭제&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ufw deny 22/tcp 설정이 되어있다고 가정&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725851125435&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ufw&amp;nbsp;delete&amp;nbsp;deny&amp;nbsp;22/tcp&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 우분투(Ubuntu) 방화벽(UFW) service 명을 이용한 설정&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서비스명 보기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725851168870&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;less&amp;nbsp;/etc/services&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서비스명으로 허용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725851186151&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;allow&amp;nbsp;&amp;lt;service&amp;nbsp;name&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예시 (SSH 서비스)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725851224988&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ufw&amp;nbsp;allow&amp;nbsp;ssh
ufw&amp;nbsp;deny&amp;nbsp;ssh&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 우분투(Ubuntu) 방화벽(UFW) 로그 기록&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;UFW 로그 기록&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725851308616&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ufw&amp;nbsp;logging&amp;nbsp;on
ufw&amp;nbsp;logging&amp;nbsp;off&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 우분투(Ubuntu) 방화벽(UFW) Advanced Syntax&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; 문법을 확장하여 목적지 주소와 포트, 프로토콜 등을 지정할 수 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;9.1 특정한 IP 주소 허가/거부&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;특정한 IP 주소 허용 사용 방법&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725851517215&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ufw&amp;nbsp;allow&amp;nbsp;from&amp;nbsp;&amp;lt;ip&amp;nbsp;address&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;192.168.0.100 주소 허용(IP 주소192.168.0.100 에서만 접속이 가능해진다.)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725851543302&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ufw&amp;nbsp;allow&amp;nbsp;from&amp;nbsp;192.168.0.100&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;네트워크 단위로 지정하여 같은 네트워크 상에 있는 컴퓨터들은 접속가능해진다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725851565068&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ufw&amp;nbsp;allow&amp;nbsp;from&amp;nbsp;192.168.0.0/24&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;특정한 IP 주소와 일치하는 포트 허용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725851665123&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ufw allow from &amp;lt;ip address&amp;gt; to &amp;lt;protocol&amp;gt; port &amp;lt;port number&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;192.168.0.100 주소와 tcp 프로토콜 22번 포트 허용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725851686544&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ufw allow from 192.168.0.100 to any port 22 proto tcp&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 예제에서 allow 대신 deny를 입력하면 거부가 된다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. 우분투(Ubuntu) 방화벽(UFW) ping (icmp) 허용/거부&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;UFW 기본설정은 ping 요청을 허용하도록 되어있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725851978861&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vi&amp;nbsp;/etc/ufw/before.rules&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725851986317&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#&amp;nbsp;ok&amp;nbsp;icmp&amp;nbsp;codes
-A&amp;nbsp;ufw-before-input&amp;nbsp;-p&amp;nbsp;icmp&amp;nbsp;--icmp-type&amp;nbsp;destination-unreachable&amp;nbsp;-j&amp;nbsp;ACCEPT
-A&amp;nbsp;ufw-before-input&amp;nbsp;-p&amp;nbsp;icmp&amp;nbsp;--icmp-type&amp;nbsp;source-quench&amp;nbsp;-j&amp;nbsp;ACCEPT
-A&amp;nbsp;ufw-before-input&amp;nbsp;-p&amp;nbsp;icmp&amp;nbsp;--icmp-type&amp;nbsp;time-exceeded&amp;nbsp;-j&amp;nbsp;ACCEPT
-A&amp;nbsp;ufw-before-input&amp;nbsp;-p&amp;nbsp;icmp&amp;nbsp;--icmp-type&amp;nbsp;parameter-problem&amp;nbsp;-j&amp;nbsp;ACCEPT
-A&amp;nbsp;ufw-before-input&amp;nbsp;-p&amp;nbsp;icmp&amp;nbsp;--icmp-type&amp;nbsp;echo-request&amp;nbsp;-j&amp;nbsp;ACCEPT&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드들의 ACCEPT 부분을 모두 DROP으로 변경하거나 삭제하면 ping 요청을 거부하게 된다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;11. 우분투(Ubuntu) 방화벽(UFW) ping (icmp) numbered rules&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; UFW 룰들에 숫자를 붙여서 볼 수 있다. 이를 이용해 룰에 수정이나 삭제, 추가를 할 수 있다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;nbsp;ufw number 보기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725852036547&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ufw&amp;nbsp;status&amp;nbsp;numbered&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ufw numbered 수정&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725852049845&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ufw&amp;nbsp;delete&amp;nbsp;1
ufw&amp;nbsp;insert&amp;nbsp;1&amp;nbsp;allow&amp;nbsp;from&amp;nbsp;192.168.0.100&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;12. 우분투(Ubuntu) 방화벽(UFW) 추천 방화벽 정책&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;추천 방화벽&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725852096219&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ufw&amp;nbsp;enable
ufw&amp;nbsp;allow&amp;nbsp;from&amp;nbsp;192.168.0.3&amp;nbsp;to&amp;nbsp;any&amp;nbsp;port&amp;nbsp;22&amp;nbsp;proto&amp;nbsp;tcp
ufw&amp;nbsp;allow&amp;nbsp;123/udp
ufw&amp;nbsp;allow&amp;nbsp;80/tcp
ufw&amp;nbsp;allow&amp;nbsp;3306/tcp
ufw&amp;nbsp;status&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>운영체제/Linux</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/13</guid>
      <comments>https://bigdwarf.tistory.com/13#entry13comment</comments>
      <pubDate>Fri, 13 Sep 2024 13:22:29 +0900</pubDate>
    </item>
    <item>
      <title>Proxmox WOL 설정</title>
      <link>https://bigdwarf.tistory.com/28</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CH0Iq/btsJBoQbLHa/KBg7BtQkjj6p3N2L7gp0D0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CH0Iq/btsJBoQbLHa/KBg7BtQkjj6p3N2L7gp0D0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CH0Iq/btsJBoQbLHa/KBg7BtQkjj6p3N2L7gp0D0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCH0Iq%2FbtsJBoQbLHa%2FKBg7BtQkjj6p3N2L7gp0D0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;640&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; 현재 집에서 개인 용도로 쓰고 있는 Proxmox 원격으로 부팅할 수 있도록 설정하기 위해 정리하는 글&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.1 WOL(Wake-on-Lan) 란?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;패킷을 이용해 원격으로 컴퓨터를 부팅하는 기술이며 네트워크에 연결된 컴퓨터의 전원을 켜기 위한 표준 특별하게 약속된 형태의 패킷을 대상 컴퓨터로 보내 컴퓨터가 꺼져있더라도 컴퓨터의 랜카드가 해당 패킷을 읽고 컴퓨터를 부팅하는 기술. LAN 뿐 아니라 WAN에서도 패킷만 잘 전달이 되면 작동이가 가능합니다. WI-FI 망에서 작동하는 보조 표준은 WoWLAN(Wake on Wireless LAN)이라고 부른다.&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 메인보드 WOL 활성화&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;메인보드 별 회사별 바이오스 설정이 다르므로 참고 바랍니다.&lt;/li&gt;
&lt;li&gt;저는 메인보드가 ASUS이며 아래 링크와 같이 설정 했습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure data-ke-type=&quot;opengraph&quot; data-og-title=&quot;[Commercial DT] WOL(Wake on LAN) 기능을 활성화하는 방법 | 공식지원 | ASUS 한국&quot; data-ke-align=&quot;alignCenter&quot; data-og-description=&quot; &quot; data-og-host=&quot;www.asus.com&quot; data-og-source-url=&quot;https://www.asus.com/kr/support/faq/1048459/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bHIBam/hyW2WS60Ee/CKvsKTLZnDIW1SnMblmdM0/img.png?width=1566&amp;amp;height=564&amp;amp;face=0_0_1566_564,https://scrap.kakaocdn.net/dn/DeJBB/hyW2Z3mKiX/Y0ztJyWLpdJpTbpQEVtjr0/img.png?width=1125&amp;amp;height=634&amp;amp;face=0_0_1125_634,https://scrap.kakaocdn.net/dn/1GpA7/hyW2ZI5cts/t6dJHbxqG5UwXAqG986Ak1/img.png?width=1125&amp;amp;height=634&amp;amp;face=0_0_1125_634&quot; data-og-url=&quot;https://www.asus.com/kr/support/faq/1048459/&quot;&gt;&lt;a href=&quot;https://www.asus.com/kr/support/faq/1048459/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.asus.com/kr/support/faq/1048459/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bHIBam/hyW2WS60Ee/CKvsKTLZnDIW1SnMblmdM0/img.png?width=1566&amp;amp;height=564&amp;amp;face=0_0_1566_564,https://scrap.kakaocdn.net/dn/DeJBB/hyW2Z3mKiX/Y0ztJyWLpdJpTbpQEVtjr0/img.png?width=1125&amp;amp;height=634&amp;amp;face=0_0_1125_634,https://scrap.kakaocdn.net/dn/1GpA7/hyW2ZI5cts/t6dJHbxqG5UwXAqG986Ak1/img.png?width=1125&amp;amp;height=634&amp;amp;face=0_0_1125_634');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[Commercial DT] WOL(Wake on LAN) 기능을 활성화하는 방법 | 공식지원 | ASUS 한국&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.asus.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. Proxmox WOL 설정&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;ip addr&lt;/code&gt; 명령어로 현재 사용하고 있는 어댑터 이름/ MAC 주소 / IP를 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;ip addr&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2231&quot; data-origin-height=&quot;1258&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qJ4tz/btsJCmqsG0M/mbzPEICllNSBiZmjKZlShK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qJ4tz/btsJCmqsG0M/mbzPEICllNSBiZmjKZlShK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qJ4tz/btsJCmqsG0M/mbzPEICllNSBiZmjKZlShK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqJ4tz%2FbtsJCmqsG0M%2FmbzPEICllNSBiZmjKZlShK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2231&quot; height=&quot;1258&quot; data-origin-width=&quot;2231&quot; data-origin-height=&quot;1258&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그리고 &lt;code&gt;ethtool&lt;/code&gt;로 현재 랜카드 상태 확인 &lt;code&gt;wake-on : d&lt;/code&gt; 인 것을 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;ethtool [어댑터이름]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2224&quot; data-origin-height=&quot;997&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/THL0t/btsJArtFUwK/k0TirABLwNXGKv7BDtU9X0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/THL0t/btsJArtFUwK/k0TirABLwNXGKv7BDtU9X0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/THL0t/btsJArtFUwK/k0TirABLwNXGKv7BDtU9X0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTHL0t%2FbtsJArtFUwK%2Fk0TirABLwNXGKv7BDtU9X0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2224&quot; height=&quot;997&quot; data-origin-width=&quot;2224&quot; data-origin-height=&quot;997&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아래 명령어로 WOL 기능을 활성화 ( &lt;code&gt;g:enable&lt;/code&gt;, &lt;code&gt;d:disable&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;ethtool -s [어댑터이름] wol g&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2224&quot; data-origin-height=&quot;1018&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rhhsC/btsJB5vRuph/7ayX809bWejMeqN9tkyJY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rhhsC/btsJB5vRuph/7ayX809bWejMeqN9tkyJY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rhhsC/btsJB5vRuph/7ayX809bWejMeqN9tkyJY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrhhsC%2FbtsJB5vRuph%2F7ayX809bWejMeqN9tkyJY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2224&quot; height=&quot;1018&quot; data-origin-width=&quot;2224&quot; data-origin-height=&quot;1018&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;재부팅 시 자동으로 WOL 켤 수 있게 옵션 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;post-up /usr/sbin/ethtool -s [인터페이스이름] wol g&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;bash&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;vi /etc/network/interfaces&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2208&quot; data-origin-height=&quot;1256&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBzuj9/btsJAADXp4N/d2bWMaWVJ9Ay2N8nMJNWtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBzuj9/btsJAADXp4N/d2bWMaWVJ9Ay2N8nMJNWtk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBzuj9/btsJAADXp4N/d2bWMaWVJ9Ay2N8nMJNWtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBzuj9%2FbtsJAADXp4N%2Fd2bWMaWVJ9Ay2N8nMJNWtk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2208&quot; height=&quot;1256&quot; data-origin-width=&quot;2208&quot; data-origin-height=&quot;1256&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;내용을 저장해주시고 proxmox를 &lt;code&gt;shutdown&lt;/code&gt; 명령어로 꺼주시면 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. Proxmox 원격(WOL)으로 켜기&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;저는 iptime 공유기 WOL 기능을 통해 실행하도록 하겠습니다.&lt;/li&gt;
&lt;li&gt;iptime접속 후 특수기능 &amp;rarr; WOL 기능 &amp;rarr; 등록된 PC 켜기&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3818&quot; data-origin-height=&quot;1851&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bChQCT/btsJA4RXhCN/QN9cfpHkikNf8yPUuTvXY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bChQCT/btsJA4RXhCN/QN9cfpHkikNf8yPUuTvXY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bChQCT/btsJA4RXhCN/QN9cfpHkikNf8yPUuTvXY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbChQCT%2FbtsJA4RXhCN%2FQN9cfpHkikNf8yPUuTvXY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3818&quot; height=&quot;1851&quot; data-origin-width=&quot;3818&quot; data-origin-height=&quot;1851&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;iptime 모바일 앱에서도 WOL 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240915_225633431.png&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;2436&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bep9sx/btsJFbJbR2c/XaNOFlRzga8fSKlnTSOHK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bep9sx/btsJFbJbR2c/XaNOFlRzga8fSKlnTSOHK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bep9sx/btsJFbJbR2c/XaNOFlRzga8fSKlnTSOHK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbep9sx%2FbtsJFbJbR2c%2FXaNOFlRzga8fSKlnTSOHK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1125&quot; height=&quot;2436&quot; data-filename=&quot;KakaoTalk_20240915_225633431.png&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;2436&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>서버/Hypervisor</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/28</guid>
      <comments>https://bigdwarf.tistory.com/28#entry28comment</comments>
      <pubDate>Fri, 13 Sep 2024 11:46:22 +0900</pubDate>
    </item>
    <item>
      <title>우분투(Ubuntu) 22.04 LTS Server 설치</title>
      <link>https://bigdwarf.tistory.com/12</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;우분투.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Z3BKb/btsJvtRBcoz/9zmg419k3s8PFQMaDh1Bsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Z3BKb/btsJvtRBcoz/9zmg419k3s8PFQMaDh1Bsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Z3BKb/btsJvtRBcoz/9zmg419k3s8PFQMaDh1Bsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZ3BKb%2FbtsJvtRBcoz%2F9zmg419k3s8PFQMaDh1Bsk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1280&quot; data-filename=&quot;우분투.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1280&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우분투(&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;a style=&quot;color: #009a87;&quot; href=&quot;https://namu.wiki/w/%EC%9A%B0%EB%B6%84%ED%88%AC&quot; data-cke-saved-href=&quot;https://namu.wiki/w/%EC%9A%B0%EB%B6%84%ED%88%AC&quot;&gt;Ubuntu&lt;/a&gt;&lt;/span&gt;) 22.04 LTS Server 설치 정리&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 우분투(&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;a style=&quot;color: #009a87;&quot; href=&quot;https://namu.wiki/w/%EC%9A%B0%EB%B6%84%ED%88%AC&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;Ubuntu&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;) 이미지 다운로드&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.1 우분투(&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;a style=&quot;color: #009a87;&quot; href=&quot;https://namu.wiki/w/%EC%9A%B0%EB%B6%84%ED%88%AC&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;Ubuntu&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;) 다운로드 링크&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;[&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;a style=&quot;color: #009a87;&quot; title=&quot;다운로드 링크&quot; href=&quot;https://releases.ubuntu.com/22.04/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;다운로드 링크&lt;/a&gt;&lt;/span&gt;]&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1725846312372&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Ubuntu 22.04.4 LTS (Jammy Jellyfish)&quot; data-og-description=&quot;Select an image Ubuntu is distributed on three types of images described below. Desktop image The desktop image allows you to try Ubuntu without changing your computer at all, and at your option to install it permanently later. This type of image is what m&quot; data-og-host=&quot;releases.ubuntu.com&quot; data-og-source-url=&quot;https://releases.ubuntu.com/22.04/&quot; data-og-url=&quot;https://releases.ubuntu.com/22.04/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://releases.ubuntu.com/22.04/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://releases.ubuntu.com/22.04/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Ubuntu 22.04.4 LTS (Jammy Jellyfish)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Select an image Ubuntu is distributed on three types of images described below. Desktop image The desktop image allows you to try Ubuntu without changing your computer at all, and at your option to install it permanently later. This type of image is what m&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;releases.ubuntu.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_ubuntu1.jpg&quot; data-origin-width=&quot;1255&quot; data-origin-height=&quot;1028&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zvTbV/btsJugMMrZr/FbhUzHzsip1oSR4jY7yZOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zvTbV/btsJugMMrZr/FbhUzHzsip1oSR4jY7yZOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zvTbV/btsJugMMrZr/FbhUzHzsip1oSR4jY7yZOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzvTbV%2FbtsJugMMrZr%2FFbhUzHzsip1oSR4jY7yZOK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1255&quot; height=&quot;1028&quot; data-filename=&quot;edited_ubuntu1.jpg&quot; data-origin-width=&quot;1255&quot; data-origin-height=&quot;1028&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;server용으로 설치하기 위해 &lt;code&gt;ubuntu-22.04.1-live-server-amd64.iso&lt;/code&gt; 다운로드 받습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 우분투(&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;a style=&quot;color: #009a87;&quot; href=&quot;https://namu.wiki/w/%EC%9A%B0%EB%B6%84%ED%88%AC&quot;&gt;Ubuntu&lt;/a&gt;&lt;/span&gt;) 부팅 USB 만들기&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.1 부팅 USB 만들기&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;부팅 USB 만들기위해서 프로그램 설치 필요 &amp;ndash; [&lt;a title=&quot;설치 링크&quot; href=&quot;https://rufus.ie/ko/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;Rufus 설치 링크&lt;/span&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1725847104060&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Rufus - 간편하게 부팅 가능한 USB 드라이브 만들기&quot; data-og-description=&quot;Rufus는 USB 메모리 및 플래시 드라이브를 포맷하고 부팅할 수 있도록 만드는 도구입니다. 이 페이지 아래에 나열된 ISO 이미지 이외에도 Rufus는 여러 종류의 ISO 이미지를 지원합니다. (1) Windows 8 이&quot; data-og-host=&quot;rufus.ie&quot; data-og-source-url=&quot;https://rufus.ie/ko/&quot; data-og-url=&quot;https://rufus.ie/ko/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bfk1Ky/hyW24C2PFy/IVFQBHW6aRsImpT8glWKfK/img.png?width=1018&amp;amp;height=1234&amp;amp;face=0_0_1018_1234,https://scrap.kakaocdn.net/dn/cgBMRh/hyW2WSxvwY/4m3bWxH0RipEnRgA4t33V1/img.png?width=983&amp;amp;height=1235&amp;amp;face=0_0_983_1235,https://scrap.kakaocdn.net/dn/bCy7hK/hyWY9Tx0pY/l7F3CPmZRORpN2LPFcDjc1/img.png?width=950&amp;amp;height=1266&amp;amp;face=0_0_950_1266&quot;&gt;&lt;a href=&quot;https://rufus.ie/ko/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://rufus.ie/ko/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bfk1Ky/hyW24C2PFy/IVFQBHW6aRsImpT8glWKfK/img.png?width=1018&amp;amp;height=1234&amp;amp;face=0_0_1018_1234,https://scrap.kakaocdn.net/dn/cgBMRh/hyW2WSxvwY/4m3bWxH0RipEnRgA4t33V1/img.png?width=983&amp;amp;height=1235&amp;amp;face=0_0_983_1235,https://scrap.kakaocdn.net/dn/bCy7hK/hyWY9Tx0pY/l7F3CPmZRORpN2LPFcDjc1/img.png?width=950&amp;amp;height=1266&amp;amp;face=0_0_950_1266');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Rufus - 간편하게 부팅 가능한 USB 드라이브 만들기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Rufus는 USB 메모리 및 플래시 드라이브를 포맷하고 부팅할 수 있도록 만드는 도구입니다. 이 페이지 아래에 나열된 ISO 이미지 이외에도 Rufus는 여러 종류의 ISO 이미지를 지원합니다. (1) Windows 8 이&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;rufus.ie&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ubuntu2.jpg&quot; data-origin-width=&quot;419&quot; data-origin-height=&quot;580&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VHxPR/btsJvbp1fsr/GkkV2bflVuaIJdqGukZjyK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VHxPR/btsJvbp1fsr/GkkV2bflVuaIJdqGukZjyK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VHxPR/btsJvbp1fsr/GkkV2bflVuaIJdqGukZjyK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVHxPR%2FbtsJvbp1fsr%2FGkkV2bflVuaIJdqGukZjyK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;419&quot; height=&quot;580&quot; data-filename=&quot;ubuntu2.jpg&quot; data-origin-width=&quot;419&quot; data-origin-height=&quot;580&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 우분투(&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;a style=&quot;color: #009a87;&quot; href=&quot;https://namu.wiki/w/%EC%9A%B0%EB%B6%84%ED%88%AC&quot;&gt;Ubuntu&lt;/a&gt;&lt;/span&gt;) &lt;b&gt;22.04 LTS Server 설치&lt;/b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;b&gt;4.1 우분투(&lt;a href=&quot;https://namu.wiki/w/%EC%9A%B0%EB%B6%84%ED%88%AC&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;Ubuntu&lt;/span&gt;&lt;/a&gt;) 22.04 LTS Server 설치 진행&lt;/b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;설치1.jpg&quot; data-origin-width=&quot;1023&quot; data-origin-height=&quot;652&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brClbv/btsJwc9CL3b/Jv1GqylfGrCuyR9GypqWkk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brClbv/btsJwc9CL3b/Jv1GqylfGrCuyR9GypqWkk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brClbv/btsJwc9CL3b/Jv1GqylfGrCuyR9GypqWkk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrClbv%2FbtsJwc9CL3b%2FJv1GqylfGrCuyR9GypqWkk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1023&quot; height=&quot;652&quot; data-filename=&quot;설치1.jpg&quot; data-origin-width=&quot;1023&quot; data-origin-height=&quot;652&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;설치2.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dJW3ft/btsJvQZZHoQ/9hk6CNVUbjUjRkAlZlJJw1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dJW3ft/btsJvQZZHoQ/9hk6CNVUbjUjRkAlZlJJw1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dJW3ft/btsJvQZZHoQ/9hk6CNVUbjUjRkAlZlJJw1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdJW3ft%2FbtsJvQZZHoQ%2F9hk6CNVUbjUjRkAlZlJJw1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;688&quot; data-filename=&quot;설치2.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;설치3.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cO4tfs/btsJuBpeBxE/rRREeGKOeMMzfTr2KFgc11/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cO4tfs/btsJuBpeBxE/rRREeGKOeMMzfTr2KFgc11/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cO4tfs/btsJuBpeBxE/rRREeGKOeMMzfTr2KFgc11/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcO4tfs%2FbtsJuBpeBxE%2FrRREeGKOeMMzfTr2KFgc11%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;688&quot; data-filename=&quot;설치3.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;설치4.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEJo4I/btsJvTCpUG6/3tQ0H1uSbPCIT5KneTWP91/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEJo4I/btsJvTCpUG6/3tQ0H1uSbPCIT5KneTWP91/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEJo4I/btsJvTCpUG6/3tQ0H1uSbPCIT5KneTWP91/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEJo4I%2FbtsJvTCpUG6%2F3tQ0H1uSbPCIT5KneTWP91%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;688&quot; data-filename=&quot;설치4.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;설치5.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TK3pg/btsJvduNOOz/f3jtqkwHKYa18kPbMEhlJ0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TK3pg/btsJvduNOOz/f3jtqkwHKYa18kPbMEhlJ0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TK3pg/btsJvduNOOz/f3jtqkwHKYa18kPbMEhlJ0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTK3pg%2FbtsJvduNOOz%2Ff3jtqkwHKYa18kPbMEhlJ0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;688&quot; data-filename=&quot;설치5.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아래 네트워크 설정은 기본적인 DHCP 네트워크 환경이라면 아래처럼 IP가 자동으로 할당됩니다. 필요에 따라 IP 수동으로 잡아주시면 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;설치6.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cctv3y/btsJweGmv8K/YctKUIGOB0S0pjiVXVkKsk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cctv3y/btsJweGmv8K/YctKUIGOB0S0pjiVXVkKsk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cctv3y/btsJweGmv8K/YctKUIGOB0S0pjiVXVkKsk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcctv3y%2FbtsJweGmv8K%2FYctKUIGOB0S0pjiVXVkKsk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;688&quot; data-filename=&quot;설치6.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;설치7.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8npU6/btsJvt45GMB/KN6coSII24GgY5IMKPIdLk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8npU6/btsJvt45GMB/KN6coSII24GgY5IMKPIdLk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8npU6/btsJvt45GMB/KN6coSII24GgY5IMKPIdLk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8npU6%2FbtsJvt45GMB%2FKN6coSII24GgY5IMKPIdLk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;688&quot; data-filename=&quot;설치7.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;설치9.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dPJJ5j/btsJucQ4OsC/f2D8Bs8EbVfg9JweU9UId0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dPJJ5j/btsJucQ4OsC/f2D8Bs8EbVfg9JweU9UId0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dPJJ5j/btsJucQ4OsC/f2D8Bs8EbVfg9JweU9UId0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdPJJ5j%2FbtsJucQ4OsC%2Ff2D8Bs8EbVfg9JweU9UId0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;688&quot; data-filename=&quot;설치9.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아래 DISK 설정 부분입니다. DISK 커스텀이 필요할 경우 설정 해주시면됩니다. 필자는 기본값으로 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;설치10.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k1QQ6/btsJuEGqC5m/GBIkAARLCYnkh0RzGTvAW1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k1QQ6/btsJuEGqC5m/GBIkAARLCYnkh0RzGTvAW1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k1QQ6/btsJuEGqC5m/GBIkAARLCYnkh0RzGTvAW1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk1QQ6%2FbtsJuEGqC5m%2FGBIkAARLCYnkh0RzGTvAW1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;688&quot; data-filename=&quot;설치10.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;설치11.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkXhBW/btsJvfsBeQj/09S6DcbJY6w6KhyJ7VQkB0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkXhBW/btsJvfsBeQj/09S6DcbJY6w6KhyJ7VQkB0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkXhBW/btsJvfsBeQj/09S6DcbJY6w6KhyJ7VQkB0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkXhBW%2FbtsJvfsBeQj%2F09S6DcbJY6w6KhyJ7VQkB0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;688&quot; data-filename=&quot;설치11.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;설치12.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9q4SJ/btsJubkh3Nb/Pn2Kd5L8oSEdUcLrOtafQ0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9q4SJ/btsJubkh3Nb/Pn2Kd5L8oSEdUcLrOtafQ0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9q4SJ/btsJubkh3Nb/Pn2Kd5L8oSEdUcLrOtafQ0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9q4SJ%2FbtsJubkh3Nb%2FPn2Kd5L8oSEdUcLrOtafQ0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;688&quot; data-filename=&quot;설치12.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;설치13.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWMZjd/btsJwbiGwXX/EE1s4faeAAAkXLBL7gpmkK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWMZjd/btsJwbiGwXX/EE1s4faeAAAkXLBL7gpmkK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWMZjd/btsJwbiGwXX/EE1s4faeAAAkXLBL7gpmkK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWMZjd%2FbtsJwbiGwXX%2FEE1s4faeAAAkXLBL7gpmkK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;688&quot; data-filename=&quot;설치13.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;설치14.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FM2sY/btsJwrlgP6d/hkcLg7Rsfnij8x8KVUPgv0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FM2sY/btsJwrlgP6d/hkcLg7Rsfnij8x8KVUPgv0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FM2sY/btsJwrlgP6d/hkcLg7Rsfnij8x8KVUPgv0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFM2sY%2FbtsJwrlgP6d%2FhkcLg7Rsfnij8x8KVUPgv0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;688&quot; data-filename=&quot;설치14.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;설치15.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NFAdo/btsJuZjaOtA/7KlZ5SUPTMIFxWKzCKokJ0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NFAdo/btsJuZjaOtA/7KlZ5SUPTMIFxWKzCKokJ0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NFAdo/btsJuZjaOtA/7KlZ5SUPTMIFxWKzCKokJ0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNFAdo%2FbtsJuZjaOtA%2F7KlZ5SUPTMIFxWKzCKokJ0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;688&quot; data-filename=&quot;설치15.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;설치16.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Eegt3/btsJuGRIEy7/kNkHeCujIHYj4MK39hooZ1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Eegt3/btsJuGRIEy7/kNkHeCujIHYj4MK39hooZ1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Eegt3/btsJuGRIEy7/kNkHeCujIHYj4MK39hooZ1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEegt3%2FbtsJuGRIEy7%2FkNkHeCujIHYj4MK39hooZ1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;688&quot; data-filename=&quot;설치16.jpg&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;688&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>운영체제/Linux</category>
      <category>22.04</category>
      <category>linux</category>
      <category>lts</category>
      <category>ubuntu</category>
      <category>리눅스</category>
      <category>설치방법</category>
      <category>우분투</category>
      <category>우분투22.04</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/12</guid>
      <comments>https://bigdwarf.tistory.com/12#entry12comment</comments>
      <pubDate>Thu, 12 Sep 2024 15:30:50 +0900</pubDate>
    </item>
    <item>
      <title>Proxmox 설치 및 초기 설정</title>
      <link>https://bigdwarf.tistory.com/27</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목을-입력해주세요_-002.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cSNydX/btsJza4GxbQ/jATvMSGHDzm02fRJAk5cs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cSNydX/btsJza4GxbQ/jATvMSGHDzm02fRJAk5cs1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cSNydX/btsJza4GxbQ/jATvMSGHDzm02fRJAk5cs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcSNydX%2FbtsJza4GxbQ%2FjATvMSGHDzm02fRJAk5cs1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;640&quot; data-filename=&quot;제목을-입력해주세요_-002.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-size: 16px; letter-spacing: 0px;&quot;&gt; 개인 서버 및 공부 용도로 현재 사용 중인 가상화 서비스이며 서버 재설치 겸 다시 정리하는 글&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.1 Proxmox 란?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데비안을&amp;nbsp;베이스로 하는&amp;nbsp;오픈소스&amp;nbsp;Type1&amp;nbsp;하이퍼바이저&amp;nbsp;운영체제로,&amp;nbsp;특이점으로&amp;nbsp;Qemu/KVM&amp;nbsp;기반&amp;nbsp;VM&amp;nbsp;이외에,&amp;nbsp;도커의&amp;nbsp;베이스가&amp;nbsp;되는&amp;nbsp;LXC를&amp;nbsp;지원한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1.2 &lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;하이퍼바이저(Hypervisor) 란?&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;하이퍼바이저는&amp;nbsp;호스트&amp;nbsp;컴퓨터로&amp;nbsp;다수의&amp;nbsp;운영체제를&amp;nbsp;동시에&amp;nbsp;실행하기&amp;nbsp;위한&amp;nbsp;논리적&amp;nbsp;플랫폼으로서&amp;nbsp;게스트&amp;nbsp;운영체제와&amp;nbsp;그&amp;nbsp;운영체제에서&amp;nbsp;구동되는&amp;nbsp;프로그램을&amp;nbsp;실제&amp;nbsp;물리적&amp;nbsp;장치에서&amp;nbsp;분리하는&amp;nbsp;프로세스를&amp;nbsp;가리킨다.&amp;nbsp;주로&amp;nbsp;소프트웨어&amp;nbsp;형태로&amp;nbsp;구현되지만,&amp;nbsp;임베디드 된&amp;nbsp;하드웨어의&amp;nbsp;형태로&amp;nbsp;제작되기도&amp;nbsp;한다.&amp;nbsp;하이퍼바이저는&amp;nbsp;'가상화&amp;nbsp;머신&amp;nbsp;모니터(virtual&amp;nbsp;machine&amp;nbsp;monitor)'&amp;nbsp;또는&amp;nbsp;'가상화&amp;nbsp;머신&amp;nbsp;매니저(virtual&amp;nbsp;machine&amp;nbsp;manager)'로&amp;nbsp;불리기도&amp;nbsp;하며,&amp;nbsp;준말인&amp;nbsp;'VMM'로도&amp;nbsp;불린다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Type&amp;nbsp;1&amp;nbsp;하이퍼바이저는&amp;nbsp;하드웨어에서&amp;nbsp;직접&amp;nbsp;하이퍼바이저가&amp;nbsp;실행되고&amp;nbsp;게스트&amp;nbsp;운영체제는&amp;nbsp;그&amp;nbsp;위에서&amp;nbsp;돌아가는&amp;nbsp;형태로,&amp;nbsp;게스트&amp;nbsp;운영체제가&amp;nbsp;하드웨어에서&amp;nbsp;두&amp;nbsp;번째&amp;nbsp;수준으로&amp;nbsp;실행된다.&lt;/li&gt;
&lt;li&gt;Type&amp;nbsp;2&amp;nbsp;하이퍼바이저는&amp;nbsp;운영체제&amp;nbsp;위에&amp;nbsp;하이퍼바이저가&amp;nbsp;있고,&amp;nbsp;그&amp;nbsp;위에&amp;nbsp;게스트&amp;nbsp;운영체제가&amp;nbsp;돌아가는&amp;nbsp;형태이다.&amp;nbsp;따라서&amp;nbsp;게스트&amp;nbsp;운영체제는&amp;nbsp;하드웨어에서&amp;nbsp;세&amp;nbsp;번째&amp;nbsp;수준으로&amp;nbsp;실행된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;다운로드.png&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;297&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UHub4/btsJy1mwyb2/fcktHtI9mMaNAttAB2tkw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UHub4/btsJy1mwyb2/fcktHtI9mMaNAttAB2tkw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UHub4/btsJy1mwyb2/fcktHtI9mMaNAttAB2tkw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUHub4%2FbtsJy1mwyb2%2FfcktHtI9mMaNAttAB2tkw0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;569&quot; height=&quot;297&quot; data-filename=&quot;다운로드.png&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;297&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. Proxmox 설치 전 준비&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.1 Proxmox 이미지 다운로드&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아래 링크 통해서 ISO 파일을 다운로드&lt;/li&gt;
&lt;li&gt;현재 설치하는 버전은 Proxmox 8.2 버전&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1726019595011&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Downloads&quot; data-og-description=&quot;Proxmox VE 8.2 ISO Installer Version 8.2-2 File Size 1.39 GB Last Updated August 22, 2024 SHA256SUM c96ad84eacbbcef299ab8f407f9602f832abb5ceb08a9aa288c1e1164df2da97&quot; data-og-host=&quot;www.proxmox.com&quot; data-og-source-url=&quot;https://www.proxmox.com/en/downloads&quot; data-og-url=&quot;https://www.proxmox.com/en/downloads&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/qARgH/hyW2TBOKtD/kLkP3vni8lDQMx6GApx1Pk/img.png?width=1240&amp;amp;height=698&amp;amp;face=0_0_1240_698,https://scrap.kakaocdn.net/dn/m3UUQ/hyW2VGokHP/TtU1m9NUdApXyt9JbVRotk/img.png?width=1240&amp;amp;height=698&amp;amp;face=0_0_1240_698&quot;&gt;&lt;a href=&quot;https://www.proxmox.com/en/downloads&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.proxmox.com/en/downloads&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/qARgH/hyW2TBOKtD/kLkP3vni8lDQMx6GApx1Pk/img.png?width=1240&amp;amp;height=698&amp;amp;face=0_0_1240_698,https://scrap.kakaocdn.net/dn/m3UUQ/hyW2VGokHP/TtU1m9NUdApXyt9JbVRotk/img.png?width=1240&amp;amp;height=698&amp;amp;face=0_0_1240_698');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Downloads&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Proxmox VE 8.2 ISO Installer Version 8.2-2 File Size 1.39 GB Last Updated August 22, 2024 SHA256SUM c96ad84eacbbcef299ab8f407f9602f832abb5ceb08a9aa288c1e1164df2da97&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.proxmox.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-11 105537.png&quot; data-origin-width=&quot;2392&quot; data-origin-height=&quot;1688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GY4vv/btsJx9eDtjr/a4rqt91iQj3yBvYQxeCGF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GY4vv/btsJx9eDtjr/a4rqt91iQj3yBvYQxeCGF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GY4vv/btsJx9eDtjr/a4rqt91iQj3yBvYQxeCGF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGY4vv%2FbtsJx9eDtjr%2Fa4rqt91iQj3yBvYQxeCGF1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2392&quot; height=&quot;1688&quot; data-filename=&quot;화면 캡처 2024-09-11 105537.png&quot; data-origin-width=&quot;2392&quot; data-origin-height=&quot;1688&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.2&lt;span&gt; 부팅&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;USB 만들기&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아래 링크 통해서 부팅 USB 드라이브 만들 수 있는 프로그램을 다운로드&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1726019892093&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Rufus - 간편하게 부팅 가능한 USB 드라이브 만들기&quot; data-og-description=&quot;Rufus는 USB 메모리 및 플래시 드라이브를 포맷하고 부팅할 수 있도록 만드는 도구입니다. 이 페이지 아래에 나열된 ISO 이미지 이외에도 Rufus는 여러 종류의 ISO 이미지를 지원합니다. (1) Windows 8 이&quot; data-og-host=&quot;rufus.ie&quot; data-og-source-url=&quot;https://rufus.ie/ko/&quot; data-og-url=&quot;https://rufus.ie/ko/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/co6IEv/hyWZkVm1Lo/xOmgzZrd65i1w3zVE5kq3K/img.png?width=1018&amp;amp;height=1234&amp;amp;face=0_0_1018_1234,https://scrap.kakaocdn.net/dn/dEfAs0/hyW2YXqioK/gCXGNlqy23CNANhP3t3Hq1/img.png?width=983&amp;amp;height=1235&amp;amp;face=0_0_983_1235,https://scrap.kakaocdn.net/dn/bdJ68G/hyW23j7gwc/bv4yXqF5eupKsUBbAlKTqk/img.png?width=950&amp;amp;height=1234&amp;amp;face=0_0_950_1234&quot;&gt;&lt;a href=&quot;https://rufus.ie/ko/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://rufus.ie/ko/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/co6IEv/hyWZkVm1Lo/xOmgzZrd65i1w3zVE5kq3K/img.png?width=1018&amp;amp;height=1234&amp;amp;face=0_0_1018_1234,https://scrap.kakaocdn.net/dn/dEfAs0/hyW2YXqioK/gCXGNlqy23CNANhP3t3Hq1/img.png?width=983&amp;amp;height=1235&amp;amp;face=0_0_983_1235,https://scrap.kakaocdn.net/dn/bdJ68G/hyW23j7gwc/bv4yXqF5eupKsUBbAlKTqk/img.png?width=950&amp;amp;height=1234&amp;amp;face=0_0_950_1234');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Rufus - 간편하게 부팅 가능한 USB 드라이브 만들기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Rufus는 USB 메모리 및 플래시 드라이브를 포맷하고 부팅할 수 있도록 만드는 도구입니다. 이 페이지 아래에 나열된 ISO 이미지 이외에도 Rufus는 여러 종류의 ISO 이미지를 지원합니다. (1) Windows 8 이&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;rufus.ie&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;708&quot; data-origin-height=&quot;960&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwTr9Z/btsJy17Tfwt/EthRH7zrzUTntPE7hAK90K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwTr9Z/btsJy17Tfwt/EthRH7zrzUTntPE7hAK90K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwTr9Z/btsJy17Tfwt/EthRH7zrzUTntPE7hAK90K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwTr9Z%2FbtsJy17Tfwt%2FEthRH7zrzUTntPE7hAK90K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;708&quot; height=&quot;960&quot; data-origin-width=&quot;708&quot; data-origin-height=&quot;960&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. Proxmox 설치하기&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.1 PC 부팅 순서 변경&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;메인보드 BIOS 메뉴로 들어가서 부팅 순서를 USB가 먼저 부팅되도록 변경&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;boot_priority_002.jpg&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pfTY9/btsJzbJiuMT/cmYlaFXJG6LP9JmUXkZoVk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pfTY9/btsJzbJiuMT/cmYlaFXJG6LP9JmUXkZoVk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pfTY9/btsJzbJiuMT/cmYlaFXJG6LP9JmUXkZoVk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpfTY9%2FbtsJzbJiuMT%2FcmYlaFXJG6LP9JmUXkZoVk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; data-filename=&quot;boot_priority_002.jpg&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.2 Proxmox 설치 과정&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Install Proxmox VE (Graphical)을 선택하여 설치를 계속 진행합니다. Proxomx GUI가 잘되어있기 때문에 CLI(Terminal UI)로 설치하실 필요는 없습니다. Install Proxmox VE (Graphical) 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1.png&quot; data-origin-width=&quot;1017&quot; data-origin-height=&quot;759&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dmIOFD/btsJx038s55/2dYu8EwgAUAt3nLhYBncz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dmIOFD/btsJx038s55/2dYu8EwgAUAt3nLhYBncz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dmIOFD/btsJx038s55/2dYu8EwgAUAt3nLhYBncz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdmIOFD%2FbtsJx038s55%2F2dYu8EwgAUAt3nLhYBncz0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1017&quot; height=&quot;759&quot; data-filename=&quot;1.png&quot; data-origin-width=&quot;1017&quot; data-origin-height=&quot;759&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;라이선스 관련 부분인데 읽어보시고 동의하시면 됩니다. I agree 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2.png&quot; data-origin-width=&quot;1275&quot; data-origin-height=&quot;798&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bl1O9a/btsJAklXGIc/uch1Ghh7q4YzavevmMkVI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bl1O9a/btsJAklXGIc/uch1Ghh7q4YzavevmMkVI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bl1O9a/btsJAklXGIc/uch1Ghh7q4YzavevmMkVI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbl1O9a%2FbtsJAklXGIc%2Fuch1Ghh7q4YzavevmMkVI1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1275&quot; height=&quot;798&quot; data-filename=&quot;2.png&quot; data-origin-width=&quot;1275&quot; data-origin-height=&quot;798&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;디스크 설정 부분인데 Options 버튼 통해 설정해 주시면 되는데 저는 기본값으로 진행하였습니다. Next 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;3.png&quot; data-origin-width=&quot;1277&quot; data-origin-height=&quot;796&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uG6iv/btsJzt5guKc/J4HKLogDGUlgZvH834Ae11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uG6iv/btsJzt5guKc/J4HKLogDGUlgZvH834Ae11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uG6iv/btsJzt5guKc/J4HKLogDGUlgZvH834Ae11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuG6iv%2FbtsJzt5guKc%2FJ4HKLogDGUlgZvH834Ae11%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1277&quot; height=&quot;796&quot; data-filename=&quot;3.png&quot; data-origin-width=&quot;1277&quot; data-origin-height=&quot;796&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Location and Time Zone 설정 국가 타임존 및 키보드 설정입니다. 저는 국가 South Korea 선택 키보드는 기본값(U. S. English)으로 진행하였습니다. Next 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;4.png&quot; data-origin-width=&quot;1268&quot; data-origin-height=&quot;792&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2wQX3/btsJzTvvV4b/kTZXaaU9nKtcgB2RK5IKkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2wQX3/btsJzTvvV4b/kTZXaaU9nKtcgB2RK5IKkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2wQX3/btsJzTvvV4b/kTZXaaU9nKtcgB2RK5IKkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2wQX3%2FbtsJzTvvV4b%2FkTZXaaU9nKtcgB2RK5IKkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1268&quot; height=&quot;792&quot; data-filename=&quot;4.png&quot; data-origin-width=&quot;1268&quot; data-origin-height=&quot;792&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버의 root 계정의 패스워드 설정하는 부분입니다. WebUI에서 사용하는 root의 패스워드로 사용됩니다. Proxmox 서버 이슈에 대한 내용을 메일로 받아볼 수 있습니다. 받아보실 이메일 계정을 입력해 줍니다. Next 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;5.png&quot; data-origin-width=&quot;1275&quot; data-origin-height=&quot;794&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/18OCb/btsJy2mJZaT/O8FIXpI1ux4RZKt4zcTdUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/18OCb/btsJy2mJZaT/O8FIXpI1ux4RZKt4zcTdUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/18OCb/btsJy2mJZaT/O8FIXpI1ux4RZKt4zcTdUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F18OCb%2FbtsJy2mJZaT%2FO8FIXpI1ux4RZKt4zcTdUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1275&quot; height=&quot;794&quot; data-filename=&quot;5.png&quot; data-origin-width=&quot;1275&quot; data-origin-height=&quot;794&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Network&amp;nbsp;Configuration&amp;nbsp;네트워크&amp;nbsp;설정하는&amp;nbsp;부분으로&amp;nbsp;IP&amp;nbsp;설정과&amp;nbsp;호스트네임&amp;nbsp;설정을&amp;nbsp;진행합니다.&amp;nbsp;저는&amp;nbsp;기본&amp;nbsp;값으로&amp;nbsp;진행하였습니다.&amp;nbsp;Next&amp;nbsp;클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;6.png&quot; data-origin-width=&quot;1277&quot; data-origin-height=&quot;794&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Jtc3W/btsJz6OTsLK/WG9PlBm3nzXHdkxBDeEkdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Jtc3W/btsJz6OTsLK/WG9PlBm3nzXHdkxBDeEkdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Jtc3W/btsJz6OTsLK/WG9PlBm3nzXHdkxBDeEkdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJtc3W%2FbtsJz6OTsLK%2FWG9PlBm3nzXHdkxBDeEkdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1277&quot; height=&quot;794&quot; data-filename=&quot;6.png&quot; data-origin-width=&quot;1277&quot; data-origin-height=&quot;794&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;지금까지&amp;nbsp;설정한 것을&amp;nbsp;확인해 주시고&amp;nbsp;수정하실 게&amp;nbsp;없으시다면&amp;nbsp;Install을&amp;nbsp;수정하실게&amp;nbsp;필요하시다면&amp;nbsp;Previous을&amp;nbsp;선택하셔서&amp;nbsp;다시&amp;nbsp;작성하시면&amp;nbsp;됩니다.&amp;nbsp;확인을&amp;nbsp;다하셨다면&amp;nbsp;Install&amp;nbsp;클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;7.png&quot; data-origin-width=&quot;1272&quot; data-origin-height=&quot;792&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JA8v2/btsJyV17KQ6/9m9kV4D1yqRJfQw8VsFa91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JA8v2/btsJyV17KQ6/9m9kV4D1yqRJfQw8VsFa91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JA8v2/btsJyV17KQ6/9m9kV4D1yqRJfQw8VsFa91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJA8v2%2FbtsJyV17KQ6%2F9m9kV4D1yqRJfQw8VsFa91%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1272&quot; height=&quot;792&quot; data-filename=&quot;7.png&quot; data-origin-width=&quot;1272&quot; data-origin-height=&quot;792&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치 진행 중&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;8.png&quot; data-origin-width=&quot;1272&quot; data-origin-height=&quot;796&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/McWXc/btsJzGQOdhU/ILgO5Lf9kSb9OzEtkqbz6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/McWXc/btsJzGQOdhU/ILgO5Lf9kSb9OzEtkqbz6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/McWXc/btsJzGQOdhU/ILgO5Lf9kSb9OzEtkqbz6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMcWXc%2FbtsJzGQOdhU%2FILgO5Lf9kSb9OzEtkqbz6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1272&quot; height=&quot;796&quot; data-filename=&quot;8.png&quot; data-origin-width=&quot;1272&quot; data-origin-height=&quot;796&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치가 완료되었으면 CLI 콘솔 화면이 띄워지게 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1354&quot; data-origin-height=&quot;978&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/InXwG/btsJx6Djdfo/lw4oyN9zKP9Em6DywVYhd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/InXwG/btsJx6Djdfo/lw4oyN9zKP9Em6DywVYhd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/InXwG/btsJx6Djdfo/lw4oyN9zKP9Em6DywVYhd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FInXwG%2FbtsJx6Djdfo%2Flw4oyN9zKP9Em6DywVYhd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1354&quot; height=&quot;978&quot; data-origin-width=&quot;1354&quot; data-origin-height=&quot;978&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. Proxmox WebUI 접속&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;https://Proxmox IP:8006으로 접속하시면 됩니다. 위에서 설정한 비밀번호를 입력 후 로그인&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;10.png&quot; data-origin-width=&quot;3834&quot; data-origin-height=&quot;1862&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgrkQr/btsJx73gHf3/mBWZk67gYGSllLfIjMgJAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgrkQr/btsJx73gHf3/mBWZk67gYGSllLfIjMgJAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgrkQr/btsJx73gHf3/mBWZk67gYGSllLfIjMgJAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgrkQr%2FbtsJx73gHf3%2FmBWZk67gYGSllLfIjMgJAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3834&quot; height=&quot;1862&quot; data-filename=&quot;10.png&quot; data-origin-width=&quot;3834&quot; data-origin-height=&quot;1862&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Proxmox WebUI 모습을 보실 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;11.png&quot; data-origin-width=&quot;3825&quot; data-origin-height=&quot;1856&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c0UPr2/btsJzrfhrfo/qfDrclbkEuaEZFBQ3gqNmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c0UPr2/btsJzrfhrfo/qfDrclbkEuaEZFBQ3gqNmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c0UPr2/btsJzrfhrfo/qfDrclbkEuaEZFBQ3gqNmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0UPr2%2FbtsJzrfhrfo%2FqfDrclbkEuaEZFBQ3gqNmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3825&quot; height=&quot;1856&quot; data-filename=&quot;11.png&quot; data-origin-width=&quot;3825&quot; data-origin-height=&quot;1856&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. Proxmox 초기 설정&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.1 &lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;엔터프라이즈 리포지토리 비활성화&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Proxmox WebUI 통해서 확인하시면 Enterprise 라이선스의 리포지터리가 포함되어 있는 것을 보실 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-12 001036.png&quot; data-origin-width=&quot;3827&quot; data-origin-height=&quot;1851&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xoH6t/btsJAhCLCGL/4u0JepIOGI0SGsmghc1IkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xoH6t/btsJAhCLCGL/4u0JepIOGI0SGsmghc1IkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xoH6t/btsJAhCLCGL/4u0JepIOGI0SGsmghc1IkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxoH6t%2FbtsJAhCLCGL%2F4u0JepIOGI0SGsmghc1IkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3827&quot; height=&quot;1851&quot; data-filename=&quot;화면 캡처 2024-09-12 001036.png&quot; data-origin-width=&quot;3827&quot; data-origin-height=&quot;1851&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해결하기에 앞서 유료 구독 서비스를 사용하지 않고 개인 용도로 사용할 경우 Proxmox에서 공식적으로 구독 내용을 스킵하도록 가이드라인 존재 합니다.&lt;/li&gt;
&lt;li&gt;Proxmox 쉘로 접속 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-12 000732.png&quot; data-origin-width=&quot;3827&quot; data-origin-height=&quot;1855&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJjfny/btsJx8HXlbg/F3plHgJjKcvKgyX69sIn4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJjfny/btsJx8HXlbg/F3plHgJjKcvKgyX69sIn4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJjfny/btsJx8HXlbg/F3plHgJjKcvKgyX69sIn4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJjfny%2FbtsJx8HXlbg%2FF3plHgJjKcvKgyX69sIn4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3827&quot; height=&quot;1855&quot; data-filename=&quot;화면 캡처 2024-09-12 000732.png&quot; data-origin-width=&quot;3827&quot; data-origin-height=&quot;1855&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2077&quot; data-origin-height=&quot;1107&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vgwgH/btsJxZ5g9VJ/ZAmEUKaJhQbqvmvrsQLm11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vgwgH/btsJxZ5g9VJ/ZAmEUKaJhQbqvmvrsQLm11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vgwgH/btsJxZ5g9VJ/ZAmEUKaJhQbqvmvrsQLm11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvgwgH%2FbtsJxZ5g9VJ%2FZAmEUKaJhQbqvmvrsQLm11%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2077&quot; height=&quot;1107&quot; data-origin-width=&quot;2077&quot; data-origin-height=&quot;1107&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;/etc/apt/sources.list.d/pve-enterprise.list에서 enterprise를 주석 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1726068068244&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vi /etc/apt/sources.list.d/pve-enterprise.list&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1726068195728&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# deb https://enterprise.proxmox.com/debian/pve bookworm pve-enterprise&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1368&quot; data-origin-height=&quot;764&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFinen/btsJSH80Xq9/4tBE5OdbmajLk69y1SHjHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFinen/btsJSH80Xq9/4tBE5OdbmajLk69y1SHjHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFinen/btsJSH80Xq9/4tBE5OdbmajLk69y1SHjHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFinen%2FbtsJSH80Xq9%2F4tBE5OdbmajLk69y1SHjHK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1368&quot; height=&quot;764&quot; data-origin-width=&quot;1368&quot; data-origin-height=&quot;764&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;/etc/apt/sources.list.d/ceph.list에서 enterprise를 주석 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1727680618404&quot; class=&quot;vim&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vi /etc/apt/sources.list.d/ceph.list&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1727680624056&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#deb http://download.proxmox.com/debian/ceph-quincy bookworm enterprise&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1375&quot; data-origin-height=&quot;763&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p3IKv/btsJRDT6x1h/YD1RaAVxUBZNyX8iX6doK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p3IKv/btsJRDT6x1h/YD1RaAVxUBZNyX8iX6doK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p3IKv/btsJRDT6x1h/YD1RaAVxUBZNyX8iX6doK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp3IKv%2FbtsJRDT6x1h%2FYD1RaAVxUBZNyX8iX6doK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1375&quot; height=&quot;763&quot; data-origin-width=&quot;1375&quot; data-origin-height=&quot;763&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Proxmox WebUI에서 아래와 같이 비활성화 된것을 볼 수 있습니다.&lt;/li&gt;
&lt;li&gt;비활성화는 WebUI에서도 가능하며 참고바랍니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-30 161443.png&quot; data-origin-width=&quot;3298&quot; data-origin-height=&quot;1438&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PtAMz/btsJSbQvKVG/iSrLyOpakqN8aKAdkMZVdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PtAMz/btsJSbQvKVG/iSrLyOpakqN8aKAdkMZVdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PtAMz/btsJSbQvKVG/iSrLyOpakqN8aKAdkMZVdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPtAMz%2FbtsJSbQvKVG%2FiSrLyOpakqN8aKAdkMZVdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3298&quot; height=&quot;1438&quot; data-filename=&quot;화면 캡처 2024-09-30 161443.png&quot; data-origin-width=&quot;3298&quot; data-origin-height=&quot;1438&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.2&lt;span&gt; 미구독자용 리포지토리 추가&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;/etc/apt/sources.list.d/ceph.list 에서 미구독자용 리포지토리를 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1727680539320&quot; class=&quot;vim&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;vi /etc/apt/sources.list.d/ceph.list&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;맨 아래에 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1727680543422&quot; class=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;# No Subscription
deb http://download.proxmox.com/debian/ceph-quincy bookworm no-subscription&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1363&quot; data-origin-height=&quot;757&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GPStE/btsJRYX3HQW/mj8RJn4bPmeCdUiHX3yHg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GPStE/btsJRYX3HQW/mj8RJn4bPmeCdUiHX3yHg1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GPStE/btsJRYX3HQW/mj8RJn4bPmeCdUiHX3yHg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGPStE%2FbtsJRYX3HQW%2Fmj8RJn4bPmeCdUiHX3yHg1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1363&quot; height=&quot;757&quot; data-origin-width=&quot;1363&quot; data-origin-height=&quot;757&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;/etc/apt/sources.list에 미구독자용 리포지토리 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1726069114496&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vi /etc/apt/sources.list&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;맨 아래에 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1726069133150&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# No Subscription
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1884&quot; data-origin-height=&quot;1286&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctIo0a/btsJz5oV03Y/oS8mP3lXmVFgTJCAC4k2Ak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctIo0a/btsJz5oV03Y/oS8mP3lXmVFgTJCAC4k2Ak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctIo0a/btsJz5oV03Y/oS8mP3lXmVFgTJCAC4k2Ak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FctIo0a%2FbtsJz5oV03Y%2FoS8mP3lXmVFgTJCAC4k2Ak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1884&quot; height=&quot;1286&quot; data-origin-width=&quot;1884&quot; data-origin-height=&quot;1286&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;vi 편집기 저장 후 Proxmox WebUI 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-30 162102.png&quot; data-origin-width=&quot;3274&quot; data-origin-height=&quot;1428&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPo4TM/btsJRADkfa8/pnNiZBLnagBd4eRYola281/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPo4TM/btsJRADkfa8/pnNiZBLnagBd4eRYola281/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPo4TM/btsJRADkfa8/pnNiZBLnagBd4eRYola281/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPo4TM%2FbtsJRADkfa8%2FpnNiZBLnagBd4eRYola281%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3274&quot; height=&quot;1428&quot; data-filename=&quot;화면 캡처 2024-09-30 162102.png&quot; data-origin-width=&quot;3274&quot; data-origin-height=&quot;1428&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;apt 업데이트 및 업그레이드&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1726070518096&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apt update &amp;amp;&amp;amp; apt upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;만약 아래와 같은 경고가 뜰 경우 DNS 등록이 안되어서 뜨는 경고이므로 DNS 설정 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-12 005729.png&quot; data-origin-width=&quot;1886&quot; data-origin-height=&quot;1296&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVTXMB/btsJzMJZlbH/PkEGV5D5XU81vkSRau5sNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVTXMB/btsJzMJZlbH/PkEGV5D5XU81vkSRau5sNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVTXMB/btsJzMJZlbH/PkEGV5D5XU81vkSRau5sNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVTXMB%2FbtsJzMJZlbH%2FPkEGV5D5XU81vkSRau5sNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1886&quot; height=&quot;1296&quot; data-filename=&quot;화면 캡처 2024-09-12 005729.png&quot; data-origin-width=&quot;1886&quot; data-origin-height=&quot;1296&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;8.8.8.8 / 8.8.4.4 (구글 네임서버)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3804&quot; data-origin-height=&quot;1492&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDuHkF/btsJSlLZ9pH/gE4BLijNFPsSO7q2uo4g01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDuHkF/btsJSlLZ9pH/gE4BLijNFPsSO7q2uo4g01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDuHkF/btsJSlLZ9pH/gE4BLijNFPsSO7q2uo4g01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDuHkF%2FbtsJSlLZ9pH%2FgE4BLijNFPsSO7q2uo4g01%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3804&quot; height=&quot;1492&quot; data-origin-width=&quot;3804&quot; data-origin-height=&quot;1492&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5.3 &lt;span&gt;&lt;span&gt;라이선스&amp;nbsp;구독&amp;nbsp;팝업창&amp;nbsp;지우기&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;두 가지 방법이 있으며 선택하여 설정하시면 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3834&quot; data-origin-height=&quot;1870&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lDvFr/btsJz5vHiCC/NLZvOINt95gUVmfwKBTAt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lDvFr/btsJz5vHiCC/NLZvOINt95gUVmfwKBTAt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lDvFr/btsJz5vHiCC/NLZvOINt95gUVmfwKBTAt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlDvFr%2FbtsJz5vHiCC%2FNLZvOINt95gUVmfwKBTAt1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3834&quot; height=&quot;1870&quot; data-origin-width=&quot;3834&quot; data-origin-height=&quot;1870&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;첫 번째 자동으로 수정하기&lt;/span&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1726071236790&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cp /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js.bak
sed -i &quot;s/\tExt.Msg.show/void/g&quot; /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;두 번째 수동으로 수정하기&lt;/span&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1726071314321&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cd /usr/share/javascript/proxmox-widget-toolkit&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1726071327380&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cp proxmoxlib.js proxmoxlib.js.bak&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1726071338315&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vi proxmoxlib.js&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;vi 편집기에서 /No valid 문자 검색을 하여 아래 내용을 수정&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1726071583116&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 변경 전
Ext.Msg.show({
# 변경 후
void({ // Ext.Msg.show({&lt;/code&gt;&lt;/pre&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-12 011748.png&quot; data-origin-width=&quot;1874&quot; data-origin-height=&quot;1279&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mXXKC/btsJx5karxY/PFp3HdIBZJYH8ybGN8JdrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mXXKC/btsJx5karxY/PFp3HdIBZJYH8ybGN8JdrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mXXKC/btsJx5karxY/PFp3HdIBZJYH8ybGN8JdrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmXXKC%2FbtsJx5karxY%2FPFp3HdIBZJYH8ybGN8JdrK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1874&quot; height=&quot;1279&quot; data-filename=&quot;화면 캡처 2024-09-12 011748.png&quot; data-origin-width=&quot;1874&quot; data-origin-height=&quot;1279&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-12 011845.png&quot; data-origin-width=&quot;1872&quot; data-origin-height=&quot;1284&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cITJhq/btsJzAwbAlp/iLM77aytKJMLx1h8lwjhl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cITJhq/btsJzAwbAlp/iLM77aytKJMLx1h8lwjhl0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cITJhq/btsJzAwbAlp/iLM77aytKJMLx1h8lwjhl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcITJhq%2FbtsJzAwbAlp%2FiLM77aytKJMLx1h8lwjhl0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1872&quot; height=&quot;1284&quot; data-filename=&quot;화면 캡처 2024-09-12 011845.png&quot; data-origin-width=&quot;1872&quot; data-origin-height=&quot;1284&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;vi 편집기 저장&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;첫 번째 두 번째 선택해서 설정하신 뒤 아래 명령어를 통해 서비스 재시작&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1726071940417&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl restart pveproxy.service&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>서버/Hypervisor</category>
      <category>Hypervisor</category>
      <category>PROXMOX</category>
      <category>type1</category>
      <category>설치방법</category>
      <category>프록시모스</category>
      <category>하이퍼바이저</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/27</guid>
      <comments>https://bigdwarf.tistory.com/27#entry27comment</comments>
      <pubDate>Thu, 12 Sep 2024 01:27:38 +0900</pubDate>
    </item>
    <item>
      <title>VMware Workstation Pro 17 설치 및 한글패치</title>
      <link>https://bigdwarf.tistory.com/26</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;5e39b2955afe5fcea43c2fc545ef3fd8.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kZxmE/btsJygY1Yws/GLJWiyCR8nxx4knoN2bZgk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kZxmE/btsJygY1Yws/GLJWiyCR8nxx4knoN2bZgk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kZxmE/btsJygY1Yws/GLJWiyCR8nxx4knoN2bZgk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkZxmE%2FbtsJygY1Yws%2FGLJWiyCR8nxx4knoN2bZgk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;5e39b2955afe5fcea43c2fc545ef3fd8.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. VMware Workstation Pro 17 다운로드 및 설치&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;a style=&quot;color: #009a87;&quot; title=&quot;다운로드 링크&quot; href=&quot;https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;다운로드 링크&lt;/a&gt;&lt;/span&gt;]&lt;/p&gt;
&lt;figure id=&quot;og_1726059632799&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Desktop Hypervisor Solutions | VMware&quot; data-og-description=&quot;VMware Workstation and VMware Fusion desktop hypervisors are the industry leaders in local virtualization. Learn how VMware&amp;rsquo;s local virtualization solutions provide an easier way to build, test and deliver any app for any device or cloud.&quot; data-og-host=&quot;www.vmware.com&quot; data-og-source-url=&quot;https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion&quot; data-og-url=&quot;https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/drv4LU/hyW2P7ktqg/dBXxQePUxw8AqsHA6vpVFk/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400&quot;&gt;&lt;a href=&quot;https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/drv4LU/hyW2P7ktqg/dBXxQePUxw8AqsHA6vpVFk/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Desktop Hypervisor Solutions | VMware&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;VMware Workstation and VMware Fusion desktop hypervisors are the industry leaders in local virtualization. Learn how VMware&amp;rsquo;s local virtualization solutions provide an easier way to build, test and deliver any app for any device or cloud.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.vmware.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자신과 맞는 OS 환경을 선택해 다운로드 받아주시면 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-11 220112.png&quot; data-origin-width=&quot;2315&quot; data-origin-height=&quot;766&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brr6qM/btsJz0OMNjv/rLDXjpxlhUKGqniRyU0TQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brr6qM/btsJz0OMNjv/rLDXjpxlhUKGqniRyU0TQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brr6qM/btsJz0OMNjv/rLDXjpxlhUKGqniRyU0TQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbrr6qM%2FbtsJz0OMNjv%2FrLDXjpxlhUKGqniRyU0TQ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2315&quot; height=&quot;766&quot; data-filename=&quot;화면 캡처 2024-09-11 220112.png&quot; data-origin-width=&quot;2315&quot; data-origin-height=&quot;766&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치 파일을 실행 &amp;rarr; Next 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-11 220342.png&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;686&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UEdrw/btsJzErSSX2/LT1qJDiSZ0wfrPlD4TEdJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UEdrw/btsJzErSSX2/LT1qJDiSZ0wfrPlD4TEdJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UEdrw/btsJzErSSX2/LT1qJDiSZ0wfrPlD4TEdJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUEdrw%2FbtsJzErSSX2%2FLT1qJDiSZ0wfrPlD4TEdJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;866&quot; height=&quot;686&quot; data-filename=&quot;화면 캡처 2024-09-11 220342.png&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;686&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;I accept the terms in the License Agreement ✅ &amp;rarr; Next 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-11 220524.png&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;686&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9ZIPp/btsJAhbFec3/roxHAZuxDJdJaErcqFuRc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9ZIPp/btsJAhbFec3/roxHAZuxDJdJaErcqFuRc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9ZIPp/btsJAhbFec3/roxHAZuxDJdJaErcqFuRc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9ZIPp%2FbtsJAhbFec3%2FroxHAZuxDJdJaErcqFuRc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;866&quot; height=&quot;686&quot; data-filename=&quot;화면 캡처 2024-09-11 220524.png&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;686&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Add VMware Workstation console tools into system PATH ✅ &amp;rarr; Next 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-11 220608.png&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;686&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5LtnV/btsJzg58fFW/Kvr2kAoLbxeRZfwGpaGWek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5LtnV/btsJzg58fFW/Kvr2kAoLbxeRZfwGpaGWek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5LtnV/btsJzg58fFW/Kvr2kAoLbxeRZfwGpaGWek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5LtnV%2FbtsJzg58fFW%2FKvr2kAoLbxeRZfwGpaGWek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;866&quot; height=&quot;686&quot; data-filename=&quot;화면 캡처 2024-09-11 220608.png&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;686&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Check for produck updates on startup / join the VMware Customer Experience Improvement Program ✅ &amp;rarr; Next 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-11 220714.png&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;686&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ziwFt/btsJz6BmUGl/KehLzOXx5SBbmqviViyz0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ziwFt/btsJz6BmUGl/KehLzOXx5SBbmqviViyz0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ziwFt/btsJz6BmUGl/KehLzOXx5SBbmqviViyz0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FziwFt%2FbtsJz6BmUGl%2FKehLzOXx5SBbmqviViyz0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;866&quot; height=&quot;686&quot; data-filename=&quot;화면 캡처 2024-09-11 220714.png&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;686&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Desktop / Start Menu Programs Folder ✅ &amp;rarr; Next 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-11 220852.png&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;686&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdVFXx/btsJyf8cKLN/kmteSd1w6MHN3CmKnpYkK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdVFXx/btsJyf8cKLN/kmteSd1w6MHN3CmKnpYkK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdVFXx/btsJyf8cKLN/kmteSd1w6MHN3CmKnpYkK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdVFXx%2FbtsJyf8cKLN%2FkmteSd1w6MHN3CmKnpYkK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;866&quot; height=&quot;686&quot; data-filename=&quot;화면 캡처 2024-09-11 220852.png&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;686&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Install&amp;nbsp;클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-11 221059.png&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;686&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ewMJUL/btsJy28apMD/1FnT3FS83ZeTUuD7fUwIC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ewMJUL/btsJy28apMD/1FnT3FS83ZeTUuD7fUwIC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ewMJUL/btsJy28apMD/1FnT3FS83ZeTUuD7fUwIC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FewMJUL%2FbtsJy28apMD%2F1FnT3FS83ZeTUuD7fUwIC1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;866&quot; height=&quot;686&quot; data-filename=&quot;화면 캡처 2024-09-11 221059.png&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;686&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치 진행 중&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-11 221152.png&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;686&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bo87Vy/btsJzHIXONJ/hZwtyLAik3GfIXkHo2O2zK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bo87Vy/btsJzHIXONJ/hZwtyLAik3GfIXkHo2O2zK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bo87Vy/btsJzHIXONJ/hZwtyLAik3GfIXkHo2O2zK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbo87Vy%2FbtsJzHIXONJ%2FhZwtyLAik3GfIXkHo2O2zK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;866&quot; height=&quot;686&quot; data-filename=&quot;화면 캡처 2024-09-11 221152.png&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;686&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치가 정상적으로 되었으면 Finish 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2024-09-11 221248.png&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;686&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lBkJk/btsJzPtafuk/YCHWQLyN5ls613lG4bFMzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lBkJk/btsJzPtafuk/YCHWQLyN5ls613lG4bFMzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lBkJk/btsJzPtafuk/YCHWQLyN5ls613lG4bFMzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlBkJk%2FbtsJzPtafuk%2FYCHWQLyN5ls613lG4bFMzK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;866&quot; height=&quot;686&quot; data-filename=&quot;화면 캡처 2024-09-11 221248.png&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;686&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;라이센스키는 공개된 키들이 존재하나 여기서 설명은 따로 드리지 않겠습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. VMware Workstation Pro 17 한글패치&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아래 블로그에 가셔서 진행하시면 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[&lt;a title=&quot;한글패치 링크&quot; href=&quot;https://uniblog.tistory.com/232&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;한글패치 링크&lt;/span&gt;&lt;/a&gt;]&lt;/b&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1726060811907&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[한글] VMware Workstation 17 Pro 17.6.0 Build 24238078&quot; data-og-description=&quot;한국어 홈페이지: https://www.vmware.com/kr/products/workstation-pro/workstation-pro-evaluation.html 언어지원: 영어, 일어, 중국어 Vmware Workstation 17 버전에 해당하는 언어 파일만 있습니다 1차 작업완료 (2022-12-02) - &quot; data-og-host=&quot;uniblog.tistory.com&quot; data-og-source-url=&quot;https://uniblog.tistory.com/232&quot; data-og-url=&quot;https://uniblog.tistory.com/232&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cf7N5K/hyWZbqDSsG/z1Y5MdgkWJrQUSh2fup33k/img.png?width=800&amp;amp;height=574&amp;amp;face=0_0_800_574,https://scrap.kakaocdn.net/dn/ElDNw/hyW23drCt4/7yrBbYFKHSqiI323KKcjYK/img.png?width=800&amp;amp;height=574&amp;amp;face=0_0_800_574,https://scrap.kakaocdn.net/dn/iLpHS/hyW2SwcuSU/L0ks5SFEm7eB8FprSLl0D0/img.png?width=1098&amp;amp;height=788&amp;amp;face=0_0_1098_788&quot;&gt;&lt;a href=&quot;https://uniblog.tistory.com/232&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://uniblog.tistory.com/232&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cf7N5K/hyWZbqDSsG/z1Y5MdgkWJrQUSh2fup33k/img.png?width=800&amp;amp;height=574&amp;amp;face=0_0_800_574,https://scrap.kakaocdn.net/dn/ElDNw/hyW23drCt4/7yrBbYFKHSqiI323KKcjYK/img.png?width=800&amp;amp;height=574&amp;amp;face=0_0_800_574,https://scrap.kakaocdn.net/dn/iLpHS/hyW2SwcuSU/L0ks5SFEm7eB8FprSLl0D0/img.png?width=1098&amp;amp;height=788&amp;amp;face=0_0_1098_788');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[한글] VMware Workstation 17 Pro 17.6.0 Build 24238078&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;한국어 홈페이지: https://www.vmware.com/kr/products/workstation-pro/workstation-pro-evaluation.html 언어지원: 영어, 일어, 중국어 Vmware Workstation 17 버전에 해당하는 언어 파일만 있습니다 1차 작업완료 (2022-12-02) -&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;uniblog.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>서버/Hypervisor</category>
      <category>Hypervisor</category>
      <category>Type2</category>
      <category>vmware</category>
      <category>VMware Workstation</category>
      <category>vmware workstation pro 17</category>
      <category>가상화</category>
      <category>하이퍼바이저</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/26</guid>
      <comments>https://bigdwarf.tistory.com/26#entry26comment</comments>
      <pubDate>Wed, 11 Sep 2024 22:24:58 +0900</pubDate>
    </item>
    <item>
      <title>SVN(Subversion) 백업 및 복구</title>
      <link>https://bigdwarf.tistory.com/11</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;SVN.jpg&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;550&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcU81a/btsJuGYq59b/PYB3aNBUR0eakeQPKuDtvk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcU81a/btsJuGYq59b/PYB3aNBUR0eakeQPKuDtvk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcU81a/btsJuGYq59b/PYB3aNBUR0eakeQPKuDtvk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcU81a%2FbtsJuGYq59b%2FPYB3aNBUR0eakeQPKuDtvk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;550&quot; height=&quot;550&quot; data-filename=&quot;SVN.jpg&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;550&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; 개발 형상관리 툴 SVN(Subversion) 오류로 백업 작업하면서 정리&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. SVN(Subversion)&lt;/b&gt;&amp;nbsp;&lt;b&gt;Dump (백업)&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.1 도커 SVN 설치 되있는 경우&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도커 컨테이너 접속 후 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725842893480&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#&amp;nbsp;도커&amp;nbsp;컨테이너&amp;nbsp;확인
docker&amp;nbsp;ps&amp;nbsp;-a&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컨테이너 NAMES 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725842912794&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#&amp;nbsp;아래&amp;nbsp;리스트에서&amp;nbsp;접속할&amp;nbsp;컨테이너의&amp;nbsp;아이디&amp;nbsp;또는&amp;nbsp;네임을&amp;nbsp;확인한다.
CONTAINER&amp;nbsp;ID&amp;nbsp;&amp;nbsp;&amp;nbsp;IMAGE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;COMMAND&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CREATED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;STATUS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PORTS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NAMES
66f9622cb80c&amp;nbsp;&amp;nbsp;&amp;nbsp;mcr.microsoft.com/mssql/server:2019-latest&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;/opt/mssql/bin/perm&amp;hellip;&quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&amp;nbsp;months&amp;nbsp;ago&amp;nbsp;&amp;nbsp;&amp;nbsp;Up&amp;nbsp;59&amp;nbsp;minutes&amp;nbsp;&amp;nbsp;&amp;nbsp;0.0.0.0:1433-&amp;gt;1433/tcp,&amp;nbsp;:::1433-&amp;gt;1433/tcp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mssql
09aada2c8ee2&amp;nbsp;&amp;nbsp;&amp;nbsp;elleflorio/svn-server&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;/init&quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&amp;nbsp;months&amp;nbsp;ago&amp;nbsp;&amp;nbsp;&amp;nbsp;Up&amp;nbsp;2&amp;nbsp;hours&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.0.0.0:80-&amp;gt;80/tcp,&amp;nbsp;:::80-&amp;gt;80/tcp,&amp;nbsp;0.0.0.0:3690-&amp;gt;3690/tcp,&amp;nbsp;:::3690-&amp;gt;3690/tcp,&amp;nbsp;443/tcp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;svn-server
e45a0abf71aa&amp;nbsp;&amp;nbsp;&amp;nbsp;portainer/portainer-ce&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;/portainer&quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&amp;nbsp;months&amp;nbsp;ago&amp;nbsp;&amp;nbsp;&amp;nbsp;Up&amp;nbsp;2&amp;nbsp;hours&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.0.0.0:8000-&amp;gt;8000/tcp,&amp;nbsp;:::8000-&amp;gt;8000/tcp,&amp;nbsp;0.0.0.0:9000-&amp;gt;9000/tcp,&amp;nbsp;:::9000-&amp;gt;9000/tcp,&amp;nbsp;9443/tcp&amp;nbsp;&amp;nbsp;&amp;nbsp;portainer&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컨테이너 접속&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725842929526&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#&amp;nbsp;SVN&amp;nbsp;컨테이너&amp;nbsp;접속
docker&amp;nbsp;exec&amp;nbsp;-it&amp;nbsp;svn-server&amp;nbsp;/bin/sh&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.2 SVN(Subversion) Dump 진행&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1725843055751&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;svnadmin&amp;nbsp;dump&amp;nbsp;/svn/repoName&amp;nbsp;-r&amp;nbsp;100(리비전&amp;nbsp;번호)&amp;nbsp;&amp;gt;&amp;nbsp;/원하는디렉토리/repoName.dump&amp;nbsp;//&amp;nbsp;100번&amp;nbsp;리비전&amp;nbsp;덤프
svnadmin&amp;nbsp;dump&amp;nbsp;/svn/repoName&amp;nbsp;-r&amp;nbsp;head&amp;nbsp;&amp;gt;&amp;nbsp;/원하는디렉토리/repoName.dump&amp;nbsp;//&amp;nbsp;Head&amp;nbsp;리비전&amp;nbsp;덤프
svnadmin&amp;nbsp;dump&amp;nbsp;/svn/repoName&amp;nbsp;-r&amp;nbsp;100:head&amp;nbsp;&amp;gt;&amp;nbsp;/원하는디렉토리/repoName.dump&amp;nbsp;//&amp;nbsp;100~head&amp;nbsp;리비전&amp;nbsp;덤프
svnadmin&amp;nbsp;dump&amp;nbsp;/svn/repoName&amp;nbsp;-r&amp;nbsp;1:100&amp;gt;&amp;nbsp;/원하는디렉토리/repoName.dump&amp;nbsp;//&amp;nbsp;1~100&amp;nbsp;리비전&amp;nbsp;덤프&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.3 SVN(Subversion)&amp;nbsp;Load 진행&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1725843078274&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;svnadmin&amp;nbsp;load&amp;nbsp;/svn/repoName&amp;nbsp;&amp;lt;&amp;nbsp;/덤프파일디렉토리/repoName.dump&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.4 SVN(Subversion) Dump 및&amp;nbsp;Load 예시&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1725843093739&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;svnadmin&amp;nbsp;dump&amp;nbsp;/svn/test&amp;nbsp;-r&amp;nbsp;1:100&amp;gt;&amp;nbsp;/root/svnbackup/test.dump&amp;nbsp;//&amp;nbsp;리포지토리&amp;nbsp;덤프(백업)
svnadmin&amp;nbsp;create&amp;nbsp;test2&amp;nbsp;//&amp;nbsp;리포지토리&amp;nbsp;생성
svnadmin&amp;nbsp;load&amp;nbsp;/svn/test2&amp;nbsp;&amp;lt;&amp;nbsp;/root/svnbackup/test.dump&amp;nbsp;//&amp;nbsp;백업&amp;nbsp;리포지토리&amp;nbsp;&amp;gt;&amp;nbsp;test2로&amp;nbsp;이전&amp;nbsp;작업
##&amp;nbsp;정상&amp;nbsp;동작&amp;nbsp;하는지&amp;nbsp;확인&amp;nbsp;후&amp;nbsp;기존&amp;nbsp;리포지토리&amp;nbsp;삭제
rm&amp;nbsp;-rf&amp;nbsp;/svn/test&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>데브옵스/VCS</category>
      <category>backup</category>
      <category>docker</category>
      <category>subversion</category>
      <category>SVN</category>
      <category>도커</category>
      <category>백업</category>
      <category>형상관리</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/11</guid>
      <comments>https://bigdwarf.tistory.com/11#entry11comment</comments>
      <pubDate>Wed, 11 Sep 2024 18:40:40 +0900</pubDate>
    </item>
    <item>
      <title>JAVA에서 네이버클라우드플랫폼 Cloud Outbound Mailer API 사용</title>
      <link>https://bigdwarf.tistory.com/9</link>
      <description>&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;526&quot; data-origin-height=&quot;274&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwaQgH/btsJrGjH1xV/9t7RmOlYVrBpJ5M8iyMRJK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwaQgH/btsJrGjH1xV/9t7RmOlYVrBpJ5M8iyMRJK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwaQgH/btsJrGjH1xV/9t7RmOlYVrBpJ5M8iyMRJK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwaQgH%2FbtsJrGjH1xV%2F9t7RmOlYVrBpJ5M8iyMRJK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;526&quot; height=&quot;274&quot; data-origin-width=&quot;526&quot; data-origin-height=&quot;274&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot;&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt; nCloud&amp;nbsp;통해서&amp;nbsp;서비스되고 있는&amp;nbsp;프로젝트에&amp;nbsp;클라우드&amp;nbsp;메일&amp;nbsp;전송&amp;nbsp;서비스를&amp;nbsp;개발하면서&amp;nbsp;정리한&amp;nbsp;글&lt;/li&gt;&lt;li&gt;네이버&amp;nbsp;클라우드는&amp;nbsp;개인/일반&amp;nbsp;기업용과&amp;nbsp;공공기관용이&amp;nbsp;따로&amp;nbsp;있으며&amp;nbsp;가이드&amp;nbsp;내용이&amp;nbsp;상이할 수 있습니다.&lt;/li&gt;&lt;/ul&gt;&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot;&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. Cloud&amp;nbsp;Outbound&amp;nbsp;Mailer&amp;nbsp;사전&amp;nbsp;준비&lt;/b&gt;&lt;/h2&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.1 JAVA&amp;nbsp;SDK&amp;nbsp;다운로드&lt;/b&gt;&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;지원하는 API 별로 SDK 제공되고 있어 확인 후 다운로드 [&lt;a href=&quot;https://api.ncloud-docs.com/docs/common-ncpapi&quot; target=&quot;_blank&quot; title=&quot;바로가기&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;바로가기&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Cloud&amp;nbsp;Outbound&amp;nbsp;Mailer&amp;nbsp;제공하는&amp;nbsp;SDK&amp;nbsp;다운로드&amp;nbsp;(공공기관용이&amp;nbsp;따로&amp;nbsp;있으니&amp;nbsp;확인&amp;nbsp;후&amp;nbsp;다운로드&amp;nbsp;바랍니다.)&lt;/li&gt;&lt;/ul&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1284&quot; data-origin-height=&quot;659&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4jwGp/btsJrHCOeIj/1XAEWn7aEekdV8Mi8AiuMk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4jwGp/btsJrHCOeIj/1XAEWn7aEekdV8Mi8AiuMk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4jwGp/btsJrHCOeIj/1XAEWn7aEekdV8Mi8AiuMk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4jwGp%2FbtsJrHCOeIj%2F1XAEWn7aEekdV8Mi8AiuMk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1284&quot; height=&quot;659&quot; data-origin-width=&quot;1284&quot; data-origin-height=&quot;659&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.2 JAVA SDK 사용하기 위한 준비&lt;/b&gt;&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
 &lt;li&gt;압출 풀면 나오는 java 소스 또는&lt;code&gt;nes-client-1.6.1.jar&lt;/code&gt;를&amp;nbsp;추가&lt;/li&gt; 
 &lt;li&gt;SDK&amp;nbsp;사용에&amp;nbsp;있어&amp;nbsp;필요한&amp;nbsp;라이브러리&amp;nbsp;설치&amp;nbsp;필자는&amp;nbsp;maven&amp;nbsp;프로젝트로&amp;nbsp;&lt;code&gt;pom.xml&lt;/code&gt;&amp;nbsp;아래&amp;nbsp;내용을&amp;nbsp;추가&lt;/li&gt; 
&lt;/ul&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;&amp;lt;!-- https://mvnrepository.com/artifact/junit/junit --&amp;gt;
&amp;lt;dependency&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;groupId&amp;gt;junit&amp;lt;/groupId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;artifactId&amp;gt;junit&amp;lt;/artifactId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;4.12&amp;lt;/version&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;
&amp;lt;/dependency&amp;gt;
&amp;lt;!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp --&amp;gt;
&amp;lt;dependency&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;groupId&amp;gt;com.squareup.okhttp3&amp;lt;/groupId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;artifactId&amp;gt;okhttp&amp;lt;/artifactId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;${okhttp-version}&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&amp;lt;!-- https://mvnrepository.com/artifact/com.squareup.okhttp/logging-interceptor --&amp;gt;
&amp;lt;dependency&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;groupId&amp;gt;com.squareup.okhttp3&amp;lt;/groupId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;artifactId&amp;gt;logging-interceptor&amp;lt;/artifactId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;${okhttp-version}&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&amp;lt;!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --&amp;gt;
&amp;lt;dependency&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;groupId&amp;gt;com.fasterxml.jackson.core&amp;lt;/groupId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;artifactId&amp;gt;jackson-databind&amp;lt;/artifactId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;${fasterxml-version}&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&amp;lt;!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-xml --&amp;gt;
&amp;lt;dependency&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;groupId&amp;gt;com.fasterxml.jackson.dataformat&amp;lt;/groupId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;artifactId&amp;gt;jackson-dataformat-xml&amp;lt;/artifactId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;${fasterxml-version}&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&amp;lt;!-- https://mvnrepository.com/artifact/commons-codec/commons-codec --&amp;gt;
&amp;lt;dependency&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;groupId&amp;gt;commons-codec&amp;lt;/groupId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;artifactId&amp;gt;commons-codec&amp;lt;/artifactId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;${common-codec-version}&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&amp;lt;!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --&amp;gt;
&amp;lt;dependency&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;groupId&amp;gt;org.apache.commons&amp;lt;/groupId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;artifactId&amp;gt;commons-lang3&amp;lt;/artifactId&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;3.7&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.3 credentials.properties&amp;nbsp;파일&amp;nbsp;생성&lt;/b&gt;&lt;/h3&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;type=iam
apiKey=&quot;API Gateway에 설정된 API Key&quot;
accessKey=&quot;Sub Account에 설정된 서브계정의 Access Key&quot;
secretKey=&quot;Sub Account에 설정된 서브계정의 Secret Key&quot;&lt;/code&gt;&lt;/pre&gt;&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot;&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. Cloud&amp;nbsp;Outbound&amp;nbsp;Mailer&amp;nbsp;JAVA&amp;nbsp;구현&amp;nbsp;소스&lt;/b&gt;&lt;/h2&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.1&lt;/b&gt;&lt;b&gt; ApiClient&amp;nbsp;객체&amp;nbsp;인증&amp;nbsp;정보&amp;nbsp;설정&lt;/b&gt;&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;프로퍼티&amp;nbsp;파일을&amp;nbsp;이용한&amp;nbsp;인증&lt;/li&gt;&lt;/ul&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;public void setUp() {
&amp;nbsp;&amp;nbsp;apiClient = new ApiClient.ApiClientBuilder()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.addMarshaller(JsonMarshaller.getInstance())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.addMarshaller(XmlMarshaller.getInstance())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.addMarshaller(FormMarshaller.getInstance())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.setCredentials(new PropertiesFileCredentialsProvider(&quot;credentials.properties&quot;).getCredentials()) // 인증 정보 설정
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.setLogging(true)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.build();

&amp;nbsp;&amp;nbsp;api = new V1Api(apiClient);
}&lt;/code&gt;&lt;/pre&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.2&lt;/b&gt;&lt;b&gt; createMailRequest (메일 발송)&lt;/b&gt;&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;Email&amp;nbsp;발송을&amp;nbsp;요청합니다.&amp;nbsp;요청&amp;nbsp;파라미터는&amp;nbsp;공식&amp;nbsp;API&amp;nbsp;문서&amp;nbsp;확인&amp;nbsp;바랍니다.&amp;nbsp;[&lt;a href=&quot;https://api.ncloud-docs.com/docs/ai-application-service-cloudoutboundmailer-createmailrequest&quot; target=&quot;_blank&quot; title=&quot;바로가기&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;바로가기&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;]&lt;/li&gt;&lt;/ul&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;public class CloudOutboundMailer {

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public V1Api setUp() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ApiClient apiClient = new ApiClient.ApiClientBuilder()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.addMarshaller(JsonMarshaller.getInstance())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.addMarshaller(XmlMarshaller.getInstance())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.addMarshaller(FormMarshaller.getInstance())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.setCredentials(new PropertiesFileCredentialsProvider(&quot;lib/credentials.properties&quot;).getCredentials())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.setLogging(true)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.build();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;V1Api apiInstance = new V1Api(apiClient);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return apiInstance;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void createMailRequest() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;V1Api apiInstance = setUp();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&amp;lt;EmailSendRequestRecipients&amp;gt; esrrList = new ArrayList&amp;lt;EmailSendRequestRecipients&amp;gt;();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EmailSendRequestRecipients emailSendRequestRecipients = new EmailSendRequestRecipients();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;emailSendRequestRecipients.setAddress(&quot;수신자 메일&quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;emailSendRequestRecipients.setName(&quot;수신자 이름&quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;emailSendRequestRecipients.setType(&quot;R&quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;esrrList.add(emailSendRequestRecipients);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EmailSendRequest requestBody = new EmailSendRequest();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//requestBody.setTemplateSid({templateID}); 템플릿 사용시 템플릿 번호
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//requestBody.attachFileIds(&quot;{fileID}&quot;); // createFile를 통해서 생성된 fileId 리스트
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;requestBody.setRecipients(esrrList);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;requestBody.setBody(&quot;본문영역&quot;);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;requestBody.setSenderAddress(&quot;발송자 메일&quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;requestBody.setSenderName(&quot;발송자 이름&quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;requestBody.setTitle(&quot;메일 제목&quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;requestBody.setConfirmAndSend(false);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String X_NCP_LANG = &quot;ko-KR&quot;; // String | 언어 (ko-KR, en-US, zh-CN), default:en-US
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(requestBody);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Handler Successful response
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ApiResponse&amp;lt;EmailSendResponse&amp;gt; result = apiInstance.mailsPost(requestBody, X_NCP_LANG);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} catch (ApiException e) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Handler Failed response
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int statusCode = e.getHttpStatusCode();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Map&amp;lt;String, List&amp;lt;String&amp;gt;&amp;gt; responseHeaders = e.getHttpHeaders();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InputStream byteStream = e.getByteStream();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.printStackTrace();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} catch (SdkException e) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Handle exceptions that occurred before communication with the server
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.printStackTrace();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.3&lt;/b&gt;&lt;b&gt; createFile (메일에 파일 첨부가 필요할 경우)&lt;/b&gt;&lt;/h3&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;파일을&amp;nbsp;업로드할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;기능을&amp;nbsp;제공합니다.&amp;nbsp;업로드된&amp;nbsp;파일의&amp;nbsp;fileId는&amp;nbsp;업로드&amp;nbsp;후&amp;nbsp;24시간&amp;nbsp;동안&amp;nbsp;재사용할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;24시간이&amp;nbsp;경과하면&amp;nbsp;업로드된&amp;nbsp;파일은&amp;nbsp;삭제되며&amp;nbsp;fileId도&amp;nbsp;유효하지&amp;nbsp;않게&amp;nbsp;됩니다.&amp;nbsp;요청&amp;nbsp;파라미터는&amp;nbsp;공식&amp;nbsp;API&amp;nbsp;문서&amp;nbsp;확인&amp;nbsp;바랍니다.&amp;nbsp;[&lt;a href=&quot;https://api.ncloud-docs.com/docs/ai-application-service-cloudoutboundmailer-createfile&quot; target=&quot;_blank&quot; title=&quot;바로가기&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;바로가기&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;]&lt;/li&gt;&lt;/ul&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;ublic class CloudOutboundMailer {

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public V1Api setUp() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ApiClient apiClient = new ApiClient.ApiClientBuilder()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.addMarshaller(JsonMarshaller.getInstance())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.addMarshaller(XmlMarshaller.getInstance())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.addMarshaller(FormMarshaller.getInstance())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.setCredentials(new PropertiesFileCredentialsProvider(&quot;lib/credentials.properties&quot;).getCredentials())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.setLogging(true)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.build();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;V1Api apiInstance = new V1Api(apiClient);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return apiInstance;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void createFile() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;V1Api apiInstance = setUp();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;File files = new File(&quot;업로드할 파일 경로&quot;);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String X_NCP_LANG = &quot;ko-KR&quot;; // String | 언어 (ko-KR, en-US, zh-CN), default:en-US
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Handler Successful response
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ApiResponse&amp;lt;FileUploadResponse&amp;gt; result = apiInstance.filesPost(files, X_NCP_LANG);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} catch (ApiException e) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Handler Failed response
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int statusCode = e.getHttpStatusCode();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Map&amp;lt;String, List&amp;lt;String&amp;gt;&amp;gt; responseHeaders = e.getHttpHeaders();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InputStream byteStream = e.getByteStream();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.printStackTrace();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} catch (SdkException e) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Handle exceptions that occurred before communication with the server
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.printStackTrace();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/code&gt;&lt;/pre&gt;&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;li&gt;createFile&amp;nbsp;통해서&amp;nbsp;리턴 받는&amp;nbsp;fileId&amp;nbsp;사용해&amp;nbsp;메일에&amp;nbsp;파일&amp;nbsp;첨부&amp;nbsp;하시면&amp;nbsp;됩니다.&lt;/li&gt;&lt;/ul&gt;&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot;&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 마치며&lt;/b&gt;&lt;/h2&gt;&lt;p data-ke-size=&quot;size14&quot;&gt;나머지&amp;nbsp;궁금한&amp;nbsp;사항&amp;nbsp;등은&amp;nbsp;공식&amp;nbsp;API&amp;nbsp;가이드&amp;nbsp;문서&amp;nbsp;통해서&amp;nbsp;확인&amp;nbsp;바랍니다.&amp;nbsp;[&lt;a href=&quot;https://api.ncloud-docs.com/docs/ko/home&quot; target=&quot;_blank&quot; title=&quot;바로가기&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;바로가기&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;]&lt;/p&gt;&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot;&gt;&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>클라우드/Ncloud</category>
      <category>Cloud</category>
      <category>java</category>
      <category>ncloud</category>
      <category>네이버클라우드플랫폼</category>
      <category>자바</category>
      <category>클라우드</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/9</guid>
      <comments>https://bigdwarf.tistory.com/9#entry9comment</comments>
      <pubDate>Tue, 10 Sep 2024 00:10:25 +0900</pubDate>
    </item>
    <item>
      <title>맥 실리콘 M1 환경에서 JDK 버전 변경하기</title>
      <link>https://bigdwarf.tistory.com/8</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;맥 실리콘 M1 환경에서 JDK 버전 변경하기_1.jpg&quot; data-origin-width=&quot;980&quot; data-origin-height=&quot;630&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biB8Aq/btsJrIVR4hM/Y3zVhvkfO134TeBDf9cRI0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biB8Aq/btsJrIVR4hM/Y3zVhvkfO134TeBDf9cRI0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biB8Aq/btsJrIVR4hM/Y3zVhvkfO134TeBDf9cRI0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiB8Aq%2FbtsJrIVR4hM%2FY3zVhvkfO134TeBDf9cRI0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;980&quot; height=&quot;630&quot; data-filename=&quot;맥 실리콘 M1 환경에서 JDK 버전 변경하기_1.jpg&quot; data-origin-width=&quot;980&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;a href=&quot;https://bigdwarf.tistory.com/7&quot;&gt;2024.09.05 - [Language/JAVA] - 맥 실리콘 M1 환경에서 JDK8 설치하기&lt;/a&gt;&lt;/blockquote&gt;
&lt;figure id=&quot;og_1728614933247&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;맥 실리콘 M1 환경에서 JDK8 설치하기&quot; data-og-description=&quot;1. 맥 실리콘 M1 ARM용 JDK 설치1.1 JDK 설치[설치링크]&amp;nbsp;Azul DownloadsNo matter the size of your company, Azul offers competitive pricing options to fit your needs, your budget, and your ambition.www.azul.com해당 링크에서 설치할 JDK를 &quot; data-og-host=&quot;bigdwarf.blog&quot; data-og-source-url=&quot;https://bigdwarf.tistory.com/7&quot; data-og-url=&quot;https://bigdwarf.blog/7&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/csLcU7/hyXhV0gvQj/DAnaRl79CZQXmmPGyxRkKK/img.jpg?width=800&amp;amp;height=514&amp;amp;face=0_0_800_514,https://scrap.kakaocdn.net/dn/GCV38/hyXd5wGUKk/Rk9P4ksQ5ANhCArFBejpJk/img.jpg?width=800&amp;amp;height=514&amp;amp;face=0_0_800_514,https://scrap.kakaocdn.net/dn/eEUrq/hyXhMhWZEp/dA1uBvvSuJicZX5esbmb0K/img.png?width=1280&amp;amp;height=1014&amp;amp;face=0_0_1280_1014&quot;&gt;&lt;a href=&quot;https://bigdwarf.tistory.com/7&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://bigdwarf.tistory.com/7&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/csLcU7/hyXhV0gvQj/DAnaRl79CZQXmmPGyxRkKK/img.jpg?width=800&amp;amp;height=514&amp;amp;face=0_0_800_514,https://scrap.kakaocdn.net/dn/GCV38/hyXd5wGUKk/Rk9P4ksQ5ANhCArFBejpJk/img.jpg?width=800&amp;amp;height=514&amp;amp;face=0_0_800_514,https://scrap.kakaocdn.net/dn/eEUrq/hyXhMhWZEp/dA1uBvvSuJicZX5esbmb0K/img.png?width=1280&amp;amp;height=1014&amp;amp;face=0_0_1280_1014');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;맥 실리콘 M1 환경에서 JDK8 설치하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. 맥 실리콘 M1 ARM용 JDK 설치1.1 JDK 설치[설치링크]&amp;nbsp;Azul DownloadsNo matter the size of your company, Azul offers competitive pricing options to fit your needs, your budget, and your ambition.www.azul.com해당 링크에서 설치할 JDK를&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;bigdwarf.blog&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 맥 실리콘 M1 ARM용 환경변수 추가 설정&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.1 정상적으로 설치가 완료되었는지 JDK 경로 확인&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재&amp;nbsp;JDK&amp;nbsp;8&amp;nbsp;버전&amp;nbsp;설치&amp;nbsp;되어있어&amp;nbsp;필자는&amp;nbsp;JDK&amp;nbsp;11&amp;nbsp;버전을&amp;nbsp;설치&lt;/li&gt;
&lt;li&gt;필요한&amp;nbsp;JDK&amp;nbsp;설치가&amp;nbsp;완료&amp;nbsp;후&amp;nbsp;경로&amp;nbsp;&amp;nbsp;&lt;code&gt;/Library/Java/JavaVirtualMachines/설치한&amp;nbsp;버전/Contents/Home&lt;/code&gt;&amp;nbsp;복사합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.2 ~/.zshrc&amp;nbsp;파일에&amp;nbsp;조금 전&amp;nbsp;복사한&amp;nbsp;경로를&amp;nbsp;JAVA_PATH&amp;nbsp;환경&amp;nbsp;변수로&amp;nbsp;등록&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;vi&amp;nbsp;편집기를&amp;nbsp;통해&amp;nbsp;&lt;code&gt;~/.zshrc&lt;/code&gt;&amp;nbsp;열기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725510335588&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vi ~/.zshrc&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;맥 실리콘 M1 환경에서 JDK 버전 변경하기_2.png&quot; data-origin-width=&quot;955&quot; data-origin-height=&quot;735&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c80TQg/btsJqYSyD0Y/0GQPTIZYgurYl3JtMhgrR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c80TQg/btsJqYSyD0Y/0GQPTIZYgurYl3JtMhgrR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c80TQg/btsJqYSyD0Y/0GQPTIZYgurYl3JtMhgrR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc80TQg%2FbtsJqYSyD0Y%2F0GQPTIZYgurYl3JtMhgrR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;955&quot; height=&quot;735&quot; data-filename=&quot;맥 실리콘 M1 환경에서 JDK 버전 변경하기_2.png&quot; data-origin-width=&quot;955&quot; data-origin-height=&quot;735&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1725510362844&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#JAVA 8
#export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home

#JAVA 11
export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr;JAVA8 &lt;code&gt;#export&amp;nbsp;JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home&lt;/code&gt;&amp;nbsp;주석&amp;nbsp;처리&amp;nbsp;후&amp;nbsp;저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.3 환경변수에서&amp;nbsp;변경한&amp;nbsp;JDK&amp;nbsp;적용&amp;nbsp;시키려면&amp;nbsp;아래의&amp;nbsp;명령어를&amp;nbsp;입력&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1725510460580&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;source ~/.zshrc&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;맥 실리콘 M1 환경에서 JDK 버전 변경하기_3.png&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;763&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lz4vc/btsJsRElq2G/wHKVQkGZEHFB0PIPcHHrvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lz4vc/btsJsRElq2G/wHKVQkGZEHFB0PIPcHHrvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lz4vc/btsJsRElq2G/wHKVQkGZEHFB0PIPcHHrvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flz4vc%2FbtsJsRElq2G%2FwHKVQkGZEHFB0PIPcHHrvk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;962&quot; height=&quot;763&quot; data-filename=&quot;맥 실리콘 M1 환경에서 JDK 버전 변경하기_3.png&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;763&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.4&lt;span&gt; 현재&amp;nbsp;사용하고있는&amp;nbsp;JDK&amp;nbsp;버전&amp;nbsp;확인&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1725510498389&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;java -version&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;맥 실리콘 M1 환경에서 JDK 버전 변경하기_4.png&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;763&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VFEma/btsJr1Vexrw/LthAbTKiwKkVWi3gQfwcS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VFEma/btsJr1Vexrw/LthAbTKiwKkVWi3gQfwcS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VFEma/btsJr1Vexrw/LthAbTKiwKkVWi3gQfwcS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVFEma%2FbtsJr1Vexrw%2FLthAbTKiwKkVWi3gQfwcS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;962&quot; height=&quot;763&quot; data-filename=&quot;맥 실리콘 M1 환경에서 JDK 버전 변경하기_4.png&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;763&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>프로그래밍 언어/Java</category>
      <category>Apple Silicon</category>
      <category>java</category>
      <category>M1</category>
      <category>애플실리콘</category>
      <category>자바</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/8</guid>
      <comments>https://bigdwarf.tistory.com/8#entry8comment</comments>
      <pubDate>Mon, 9 Sep 2024 00:10:44 +0900</pubDate>
    </item>
    <item>
      <title>맥 실리콘 M1 환경에서 JDK8 설치하기</title>
      <link>https://bigdwarf.tistory.com/7</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;맥 실리콘 M1 환경에서 JDK8 설치하기_1.jpg&quot; data-origin-width=&quot;980&quot; data-origin-height=&quot;630&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjzpjs/btsJqSLxOzG/LTjUkkH8ZWNq6et4aMX8SK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjzpjs/btsJqSLxOzG/LTjUkkH8ZWNq6et4aMX8SK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjzpjs/btsJqSLxOzG/LTjUkkH8ZWNq6et4aMX8SK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbjzpjs%2FbtsJqSLxOzG%2FLTjUkkH8ZWNq6et4aMX8SK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;980&quot; height=&quot;630&quot; data-filename=&quot;맥 실리콘 M1 환경에서 JDK8 설치하기_1.jpg&quot; data-origin-width=&quot;980&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 맥 실리콘 M1 ARM용 JDK 설치&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.1 JDK 설치&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;[&lt;a style=&quot;color: #0070d1; text-align: start;&quot; href=&quot;https://www.azul.com/downloads/?os=macos&amp;amp;architecture=arm-64-bit&amp;amp;package=jdk#download-openjdk&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;설치링크&lt;/span&gt;&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1725508605698&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Azul Downloads&quot; data-og-description=&quot;No matter the size of your company, Azul offers competitive pricing options to fit your needs, your budget, and your ambition.&quot; data-og-host=&quot;www.azul.com&quot; data-og-source-url=&quot;https://www.azul.com/downloads/?os=macos&amp;amp;architecture=arm-64-bit&amp;amp;package=jdk#download-openjdk&quot; data-og-url=&quot;https://www.azul.com/downloads/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cpl5rF/hyWZfrJnCV/Og5exBgcPvFcAG9oPzHvbK/img.jpg?width=2422&amp;amp;height=1268&amp;amp;face=0_0_2422_1268,https://scrap.kakaocdn.net/dn/b05u7F/hyWZa4ZXUw/rOWzvkKNbBozewvGaDRWVk/img.jpg?width=1200&amp;amp;height=627&amp;amp;face=0_0_1200_627,https://scrap.kakaocdn.net/dn/bBQx4s/hyWZc9A35E/g7cxU45o3f3qxFJMpXCXfK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://www.azul.com/downloads/?os=macos&amp;amp;architecture=arm-64-bit&amp;amp;package=jdk#download-openjdk&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.azul.com/downloads/?os=macos&amp;amp;architecture=arm-64-bit&amp;amp;package=jdk#download-openjdk&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cpl5rF/hyWZfrJnCV/Og5exBgcPvFcAG9oPzHvbK/img.jpg?width=2422&amp;amp;height=1268&amp;amp;face=0_0_2422_1268,https://scrap.kakaocdn.net/dn/b05u7F/hyWZa4ZXUw/rOWzvkKNbBozewvGaDRWVk/img.jpg?width=1200&amp;amp;height=627&amp;amp;face=0_0_1200_627,https://scrap.kakaocdn.net/dn/bBQx4s/hyWZc9A35E/g7cxU45o3f3qxFJMpXCXfK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Azul Downloads&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;No matter the size of your company, Azul offers competitive pricing options to fit your needs, your budget, and your ambition.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.azul.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;맥 실리콘 M1 환경에서 JDK8 설치하기_2.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baIjNB/btsJqEmx1qr/G0S4lb5amznmUa2vKUBX7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baIjNB/btsJqEmx1qr/G0S4lb5amznmUa2vKUBX7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baIjNB/btsJqEmx1qr/G0S4lb5amznmUa2vKUBX7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaIjNB%2FbtsJqEmx1qr%2FG0S4lb5amznmUa2vKUBX7K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;464&quot; data-filename=&quot;맥 실리콘 M1 환경에서 JDK8 설치하기_2.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해당 링크에서 설치할 JDK를 원하는 포맷에 파일(&lt;code&gt;.dmg&lt;/code&gt;,&lt;code&gt;.tar.gz&lt;/code&gt;,&lt;code&gt;.zip&lt;/code&gt;)중 선택 후 설치 진행&lt;/li&gt;
&lt;li&gt;편하게 &lt;code&gt;.dmg&lt;/code&gt; 파일을 선택해 설치하도록 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.2 설치된 JAVA 버전 확인&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치가 완료 됐으면,&lt;code&gt;Command + space&lt;/code&gt;키를&amp;nbsp;눌러&amp;nbsp;터미널을&amp;nbsp;열고&amp;nbsp;JDK가&amp;nbsp;정상적으로&amp;nbsp;설치가 됐는지&amp;nbsp;확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725508789144&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;java -version&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;맥 실리콘 M1 환경에서 JDK8 설치하기_3.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;815&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUb0aq/btsJqAqWhmI/v7DLqnRKJdADhC4SDSYEZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUb0aq/btsJqAqWhmI/v7DLqnRKJdADhC4SDSYEZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUb0aq/btsJqAqWhmI/v7DLqnRKJdADhC4SDSYEZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUb0aq%2FbtsJqAqWhmI%2Fv7DLqnRKJdADhC4SDSYEZ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;815&quot; data-filename=&quot;맥 실리콘 M1 환경에서 JDK8 설치하기_3.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;815&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 맥 실리콘 M1 ARM용 환경 변수 설정&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.1 정상적으로 설치가 완료 됐는지 JDK 경로를 확인&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;.dmg를 통해 설치했다면 JDK 경로는 기본 경로인&lt;code&gt;/Library/Java/JavaVirtualMachines&lt;/code&gt;입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725509206891&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cd /Library/Java/JavaVirtualMachines
ls&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;맥 실리콘 M1 환경에서 JDK8 설치하기_4.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;811&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/emt1hv/btsJry6Wr7n/cvEqj5YOkPkROMeoxKoo21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/emt1hv/btsJry6Wr7n/cvEqj5YOkPkROMeoxKoo21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/emt1hv/btsJry6Wr7n/cvEqj5YOkPkROMeoxKoo21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Femt1hv%2FbtsJry6Wr7n%2FcvEqj5YOkPkROMeoxKoo21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;811&quot; data-filename=&quot;맥 실리콘 M1 환경에서 JDK8 설치하기_4.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;811&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.2 JDK 설치 확인 후 JAVA_HOME 및 PATH 설정&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;조금 전 확인한 JDK 경로&lt;code&gt;/Library/Java/JavaVirtualMachines/zulu-8.jdk&lt;/code&gt;에서&lt;code&gt;/Contents/Home&lt;/code&gt;까지&amp;nbsp;경로를&amp;nbsp;복사&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725509275946&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pwd&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;맥 실리콘 M1 환경에서 JDK8 설치하기_5.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1014&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DL2EB/btsJsgExCpH/8sd8wo53uV9nk10hJizoqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DL2EB/btsJsgExCpH/8sd8wo53uV9nk10hJizoqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DL2EB/btsJsgExCpH/8sd8wo53uV9nk10hJizoqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDL2EB%2FbtsJsgExCpH%2F8sd8wo53uV9nk10hJizoqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1014&quot; data-filename=&quot;맥 실리콘 M1 환경에서 JDK8 설치하기_5.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1014&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.3 ~/.zshrc&amp;nbsp;파일에&amp;nbsp;조금 전&amp;nbsp;복사한&amp;nbsp;경로를&amp;nbsp;JAVA_PATH&amp;nbsp;환경&amp;nbsp;변수로&amp;nbsp;등록&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;vi 편집기를 통해&lt;code&gt;~/.zshrc&lt;/code&gt;열기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1725509323161&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vi ~/.zshrc&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725509337681&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;## 자바 설정
export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
export PATH=${PATH}:$JAVA_HOME/bin&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;맥 실리콘 M1 환경에서 JDK8 설치하기_6.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;811&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckK0r1/btsJsyZeNsC/OKoT7sWCFuJj8z3zNVC5Pk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckK0r1/btsJsyZeNsC/OKoT7sWCFuJj8z3zNVC5Pk/img.png&quot; data-alt=&quot;i를 눌러 INSERT 모드로 전환 아래 구문을 작성 esc키를 누르고 :wq를 입력 한 뒤 Enter키를 눌러 저장&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckK0r1/btsJsyZeNsC/OKoT7sWCFuJj8z3zNVC5Pk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckK0r1%2FbtsJsyZeNsC%2FOKoT7sWCFuJj8z3zNVC5Pk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;811&quot; data-filename=&quot;맥 실리콘 M1 환경에서 JDK8 설치하기_6.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;811&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;i를 눌러 INSERT 모드로 전환 아래 구문을 작성 esc키를 누르고 :wq를 입력 한 뒤 Enter키를 눌러 저장&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍 언어/Java</category>
      <category>Apple Silicon</category>
      <category>java</category>
      <category>M1</category>
      <category>애플실리콘</category>
      <category>자바</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/7</guid>
      <comments>https://bigdwarf.tistory.com/7#entry7comment</comments>
      <pubDate>Sun, 8 Sep 2024 00:10:39 +0900</pubDate>
    </item>
    <item>
      <title>JAVA 예외처리(Exception) try-catch, throw, throws 무엇인가?</title>
      <link>https://bigdwarf.tistory.com/6</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;JAVA.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUbuoV/btsJsgYInl1/3l409SpzyedVsDoDmy20qk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUbuoV/btsJsgYInl1/3l409SpzyedVsDoDmy20qk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUbuoV/btsJsgYInl1/3l409SpzyedVsDoDmy20qk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUbuoV%2FbtsJsgYInl1%2F3l409SpzyedVsDoDmy20qk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;640&quot; data-filename=&quot;JAVA.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바(&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;u&gt;&lt;a style=&quot;color: #009a87;&quot; href=&quot;http://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&quot;&gt;JAVA&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;) 예외처리(Exception)에 대해 정리&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;b&gt;2. JAVA&lt;/b&gt;&lt;/b&gt;&amp;nbsp;&lt;b&gt;예외처리(Exception) 정의&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2.1 try-cach 란?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;code&gt;try-catch&lt;/code&gt;블록은 예외가 발생할 수 있는 상황에서 안정적인 프로그램 실행을 위해 사용됩니다.&lt;code&gt;try&lt;/code&gt;블록 안에는 예외가 발생할 가능성이 있는 코드를 넣습니다. 만약&lt;code&gt;try&lt;/code&gt;블록 내에서 예외가 발생하면, 이후의 코드는 실행되지 않고, 즉시&amp;nbsp;&lt;b&gt;catch&amp;nbsp;&lt;/b&gt;블록으로 제어가 이동합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;catch&amp;nbsp;&lt;/b&gt;블록은 발생한 예외를 처리하는 코드를 포함하며, 이는 예외의 유형에 따라 다를 수 있습니다. 예외 객체를 인자로 받아 그 정보를 활용할 수 있습니다. 또한, 여러 종류의 예외를 처리하기 위해 여러&lt;code&gt;catch&lt;/code&gt;블록을 사용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;마지막으로&lt;code&gt;finally&lt;/code&gt;블록은&lt;code&gt;try-catch&lt;/code&gt;블록 이후에 무조건 실행되는 코드를 포함합니다.&amp;nbsp;&lt;code&gt;finally&lt;/code&gt;블록은 선택적이며, 주로 자원을 해제하는 등의 마무리 작업에 사용됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1725479409826&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;try {
    // 예외 발생 가능성이 있는 코드
} catch (ExceptionType1 e1) {
    // ExceptionType1 예외를 처리하는 코드
} catch (ExceptionType2 e2) {
    // ExceptionType2 예외를 처리하는 코드
} finally {
    // 무조건 실행되는 코드
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2.2 throws 란?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;code&gt;throws&lt;/code&gt;키워드는 메서드나 생성자에서 처리하지 않은 예외를 호출한 곳에 알리기 위해 사용됩니다. 메서드나 생성자의 선언부에 이 키워드를 표시함으로써 해당 메서드나 생성자가 특정 유형의 예외를 처리하지 않고 던질 가능성이 있음을 명시적으로 알립니다. 이렇게 하면 해당 메서드나 생성자를 사용하는 측에서는 이를 감안한 적절한 예외 처리를 준비해야 합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1725479429199&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public void someMethod() throws IOException {
    // 메소드 본문
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2.3 throws 란?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;code&gt;throw&lt;/code&gt;키워드는 프로그래머가 직접 예외를 발생시키기 위해 사용됩니다.&amp;nbsp;&lt;code&gt;throw&lt;/code&gt;키워드 뒤에는&lt;code&gt;Throwable&lt;/code&gt;클래스의 하위 클래스인 예외 클래스의 인스턴스가 와야 합니다. 이렇게 하면 그 위치에서 즉시 특정 예외가 발생하며, 이는 주로 특정 조건을 만족하지 않을 때 사용됩니다. 발생시킨 예외는 적절한&lt;code&gt;catch&lt;/code&gt;블록에서 처리되거나, 해당 메소드에서&lt;code&gt;throws&lt;/code&gt;를 통해 던져져 메소드를 호출한 곳에서 처리됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1725479460026&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public void someMethod() {
    if (someConditionNotMet) {
        throw new SomeException(&quot;SomeException occurred&quot;);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이런 방식으로&amp;nbsp;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;a style=&quot;color: #009a87;&quot; href=&quot;https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&quot; target=&quot;_blank&quot; rel=&quot;noreferrer noopener&quot;&gt;JAVA&lt;/a&gt;&lt;/span&gt;에서는&lt;code&gt;try&lt;/code&gt;,&amp;nbsp;&lt;code&gt;catch&lt;/code&gt;,&amp;nbsp;&lt;code&gt;throw&lt;/code&gt;,&amp;nbsp;&lt;code&gt;throws&lt;/code&gt;를 이용하여 예외 상황을 효과적으로 처리할 수 있습니다. 이를 통해 프로그램의 안정성과 가독성을 높일 수 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;b&gt;3. JAVA&lt;/b&gt;&lt;/b&gt;&amp;nbsp;&lt;b&gt;예외처리(Exception) 정의&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;code&gt;throws&lt;/code&gt;는 메소드메서드 또는 생성자 선언에서 사용되며, 해당 메서드 또는 생성자가 예외를 처리하지 않고 던질 수 있다는 것을 명시하는 데 사용됩니다. 즉, 이 메서드를 호출하는 곳에서 이 예외를 처리해야 함을 알립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;code&gt;throw&lt;/code&gt;는 특정 조건에서 직접 예외를 발생시키는 데 사용됩니다. 이는 실행 흐름을 즉시 중단하고 해당 예외를 처리할 수 있는 가장 가까운&lt;code&gt;catch&lt;/code&gt;블록으로 제어를 이동시킵니다. 만약 적절한&lt;code&gt;catch&lt;/code&gt;블록이 없다면, 이 예외는 메소드를 호출한 곳으로 던져집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 두 상황에 따라 적절하게 사용되어, 예외 상황을 효과적으로 관리할 수 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>프로그래밍 언어/Java</category>
      <category>Catch</category>
      <category>exception</category>
      <category>java</category>
      <category>try</category>
      <category>try-catch</category>
      <category>자바</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/6</guid>
      <comments>https://bigdwarf.tistory.com/6#entry6comment</comments>
      <pubDate>Sat, 7 Sep 2024 00:10:40 +0900</pubDate>
    </item>
    <item>
      <title>라이믹스 &amp;rarr; 티스토리 이사</title>
      <link>https://bigdwarf.tistory.com/notice/10</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;asfsaf.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZJ2D3/btsJtKyAe3A/4avdjB6gKcdd97Idk0KYLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZJ2D3/btsJtKyAe3A/4avdjB6gKcdd97Idk0KYLk/img.png&quot; data-alt=&quot;워드프레스 &amp;amp;rarr; 라이믹스 &amp;amp;rarr; 티스토리&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZJ2D3/btsJtKyAe3A/4avdjB6gKcdd97Idk0KYLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZJ2D3%2FbtsJtKyAe3A%2F4avdjB6gKcdd97Idk0KYLk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;640&quot; data-filename=&quot;asfsaf.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;워드프레스 &amp;rarr; 라이믹스 &amp;rarr; 티스토리&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;워드프레스, 라이믹스 블로그는 개인 서버에서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;운영했지만 관리하기 힘들어 결국 티스토리로 정착....&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;niniz&quot; data-emoticon-name=&quot;039&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/039.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/039.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt; 현재 라이믹스에 작성된 글 이전 중입니다. &lt;/b&gt;&lt;/p&gt;</description>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/notice/10</guid>
      <pubDate>Fri, 6 Sep 2024 12:30:31 +0900</pubDate>
    </item>
    <item>
      <title>우분투 서버 IP 변경하기</title>
      <link>https://bigdwarf.tistory.com/5</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Ubuntu.png&quot; data-origin-width=&quot;3780&quot; data-origin-height=&quot;3780&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blzNVo/btsJrxGPJ6u/hnDGYlUc3DKWB5c5zklsmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blzNVo/btsJrxGPJ6u/hnDGYlUc3DKWB5c5zklsmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blzNVo/btsJrxGPJ6u/hnDGYlUc3DKWB5c5zklsmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblzNVo%2FbtsJrxGPJ6u%2FhnDGYlUc3DKWB5c5zklsmk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3780&quot; height=&quot;3780&quot; data-filename=&quot;Ubuntu.png&quot; data-origin-width=&quot;3780&quot; data-origin-height=&quot;3780&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버 IP 변경이 필요해서 정리하는 글&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. NIC와 Gateway 정보 확인&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1725506838528&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;route -n&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725506855269&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eno1
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eno1&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Gateway : 192.168.0.1&lt;/li&gt;
&lt;li&gt;NIC :&amp;nbsp;eno1&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. IP 변경하기&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1725506893415&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vi /etc/netplan/50-cloud-init.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725506903434&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;network:
  version: 2
  renderer: networkd
  ethernets:
    eno1: #route -n으로 확인한 NIC
      addresses: [192.168.0.5/24] #지정할 ip
      gateway4: 192.168.0.1 #route -n 으로 확인 한 gateway ip
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4] # 네임서버 주소 (구글 네임서버로 설정)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;uarr;&amp;nbsp;위와 같이 내용을 수정&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 적용하기&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1725506928696&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;netplan apply&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 확인하기&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1725506945249&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ifconfig&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1725506955157&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;eno1: flags=4163&amp;lt;UP,BROADCAST,RUNNING,MULTICAST&amp;gt;  mtu 1500
        inet 192.168.0.5  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::3ea8:2aff:fe1e:5454  prefixlen 64  scopeid 0x20&amp;lt;link&amp;gt;
        ether 3c:a8:2a:1e:54:54  txqueuelen 1000  (Ethernet)&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>운영체제/Linux</category>
      <category>ubuntu</category>
      <category>리눅스</category>
      <category>우분투</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/5</guid>
      <comments>https://bigdwarf.tistory.com/5#entry5comment</comments>
      <pubDate>Fri, 6 Sep 2024 00:10:23 +0900</pubDate>
    </item>
    <item>
      <title>자바스크립트 템플릿 리터럴 : 백틱(&amp;ldquo;)</title>
      <link>https://bigdwarf.tistory.com/2</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;javascript-736400_640.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uEK8W/btsJsYwBw4G/aFeAUSn6YVXyaHzbF2qMD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uEK8W/btsJsYwBw4G/aFeAUSn6YVXyaHzbF2qMD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uEK8W/btsJsYwBw4G/aFeAUSn6YVXyaHzbF2qMD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuEK8W%2FbtsJsYwBw4G%2FaFeAUSn6YVXyaHzbF2qMD0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;640&quot; data-filename=&quot;javascript-736400_640.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 들어가며&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; 인터넷 익스플로러 2022년 6월 15일 부로 지원 종료됨으로써 ES6에서 새로운 문자열 표기법으로 &lt;code&gt;큰따옴표(&quot; &quot;)&lt;/code&gt;가 아닌 &lt;code&gt;백틱(` `)&lt;/code&gt;을 사용해 문자열을 사용하려고 정리&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 자바스크립트 백틱 사용법&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2.1 변수와 함께 사용&lt;/h3&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;/* '${변수명}'을 사용하여 문자열 안에 변수를 삽입 */

let name = &quot;키큰난쟁이&quot;;
console.log(`안녕하세요, ${name}님!`); // &quot;안녕하세요, 키큰난쟁이님!&quot; 출력&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2.2 다중 라인 문자열&lt;/h3&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;/* 백틱을 사용하면 문자열을 여러 줄에 걸쳐 작성 */

let message = `
    여러줄의
    문자열을 쉽게
    작성할 수 있습니다.
`;
console.log(message);&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2.3 표현식 사용&lt;/h3&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;/* 백틱 내부에서 표현식도 사용 가능 */

let x = 5;
let y = 10;
console.log(`두 수의 합은 ${x + y}입니다.`); // &quot;두 수의 합은 15입니다.&quot; 출력&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. JSP에서 자바스크립트 백틱 사용 시 주의점&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3.1 JSP를 사용할 경우&lt;/h3&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;/* JSP의 EL 표현식과 JavaScript의 템플릿 문자열이 겹치게 됩니다. */

// JAVA Controller
request.setAtteinute(&quot;msg&quot;, &quot;서버에서 넘어온 데이터&quot;);

// JavaScript
let msg = '자바스크립트 변수 데이터'
let message = `나는 ${msg} 입니다.`; // &quot;나는 서버에서 넘어온 데이터 입니다.&quot; 출력&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3.2 JSP에서 백틱 함수를 사용하기 위한 해결 방법&lt;/h3&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;// JAVA Controller
request.setAtteinute(&quot;msg&quot;, &quot;서버에서 넘어온 데이터&quot;);

// JavaScript
let msg = '자바스크립트 변수 데이터'

// 첫번째 방법
let message = `나는 ${&quot;${msg}&quot;} 입니다.`; //&quot;나는 자바스크립트 변수 데이터 입니다.&quot; 출력

// 두번째 방법
let message = `나는 \${msg} 입니다.`; //&quot;나는 자바스크립트 변수 데이터 입니다.&quot; 출력&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>프로그래밍 언어/JavaScript</category>
      <category>javascript</category>
      <category>js</category>
      <category>자바스크립트</category>
      <author>키큰난쟁이</author>
      <guid isPermaLink="true">https://bigdwarf.tistory.com/2</guid>
      <comments>https://bigdwarf.tistory.com/2#entry2comment</comments>
      <pubDate>Thu, 5 Sep 2024 04:36:25 +0900</pubDate>
    </item>
  </channel>
</rss>