<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>조각남자</title>
    <link>https://serverrefository.tistory.com/</link>
    <description>프로그래밍 기술 및 저장소</description>
    <language>ko</language>
    <pubDate>Fri, 12 Jun 2026 09:24:30 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>조각남자</managingEditor>
    <image>
      <title>조각남자</title>
      <url>https://tistory1.daumcdn.net/tistory/5363625/attach/dffa92de2ec14fd091eb5d3cca591519</url>
      <link>https://serverrefository.tistory.com</link>
    </image>
    <item>
      <title>[Java] RabbitMq API 연결</title>
      <link>https://serverrefository.tistory.com/338</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;spring-boot.png&quot; data-origin-width=&quot;1800&quot; data-origin-height=&quot;945&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bi2Qz0/btsMfqRAO53/VZOb55JIUTOCV2SA3KWcTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bi2Qz0/btsMfqRAO53/VZOb55JIUTOCV2SA3KWcTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bi2Qz0/btsMfqRAO53/VZOb55JIUTOCV2SA3KWcTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbi2Qz0%2FbtsMfqRAO53%2FVZOb55JIUTOCV2SA3KWcTK%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;860&quot; height=&quot;452&quot; data-filename=&quot;spring-boot.png&quot; data-origin-width=&quot;1800&quot; data-origin-height=&quot;945&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  Spring Validation 구성을 위한 사용된 개발환경 입니다&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;background-color: #ffffff; color: #353638; text-align: left; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style2&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;개발 환경&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;버전&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;java&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;17&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;Spring Boot&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;3.3.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;빌드관리도구&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;Gradle 8.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;개발 툴&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;IntelliJ IDEA 2024.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;spring-boot-starter-validation&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;3.3.3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;1)%20%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%20%EC%84%A4%EC%B9%98%20%EB%B0%8F%20%ED%99%98%EA%B2%BD%20%ED%8C%8C%EC%9D%BC%20%EC%84%A4%EC%A0%95-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;1) 라이브러리 설치 및 환경 파일 설정&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;1.%20Spring%20Boot%20%EB%82%B4%EC%97%90%20%EC%9D%98%EC%A1%B4%EC%84%B1%20%EC%B6%94%EA%B0%80-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://adjh54.tistory.com/292#1.%20Spring%20Boot%20%EB%82%B4%EC%97%90%20%EC%9D%98%EC%A1%B4%EC%84%B1%20%EC%B6%94%EA%B0%80-1&quot;&gt;1. Spring Boot 내에 의존성 추가&lt;/a&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1724657611276&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-amqp'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'com.fasterxml.jackson.core:jackson-databind'


    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.springframework.amqp:spring-rabbit-test'
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;2.%20%ED%99%98%EA%B2%BD%20%EC%84%A4%EC%A0%95%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EA%B5%AC%EC%84%B1%ED%95%A9%EB%8B%88%EB%8B%A4-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;2. 환경 설정 파일을 구성합니다&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  application.properties 파일 혹은 yml 파일 내에서 구성을 합니다.&lt;br /&gt;  사전에 구성해둔 RabbitMQ 서버와 계정을 입력해 줍니다.&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;2.1. application.properties 파일 구성&lt;/h4&gt;
&lt;pre class=&quot;java&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;2.2. yml 파일 구성&lt;/h4&gt;
&lt;pre class=&quot;yaml&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot;&gt;&lt;code&gt;spring:
  # Spring Boot RabbitMQ 설정
  rabbitmq:
    host: localhost
    port: 5672
    username: admin
    password: admin&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Java/Spring</category>
      <author>조각남자</author>
      <guid isPermaLink="true">https://serverrefository.tistory.com/338</guid>
      <comments>https://serverrefository.tistory.com/338#entry338comment</comments>
      <pubDate>Mon, 26 Aug 2024 17:23:07 +0900</pubDate>
    </item>
    <item>
      <title>[Java] RabbitMq 설치 환경구성 설치</title>
      <link>https://serverrefository.tistory.com/337</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;다운로드.png&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;279&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ec0rQ/btsJfAjK256/iXi3yIZDJLLxnSjgRhvho1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ec0rQ/btsJfAjK256/iXi3yIZDJLLxnSjgRhvho1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ec0rQ/btsJfAjK256/iXi3yIZDJLLxnSjgRhvho1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEc0rQ%2FbtsJfAjK256%2FiXi3yIZDJLLxnSjgRhvho1%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;400&quot; height=&quot;279&quot; data-filename=&quot;다운로드.png&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;279&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  Spring Validation 구성을 위한 사용된 개발환경 입니다&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;background-color: #ffffff; color: #353638; text-align: left; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;개발 환경&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;버전&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;java&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;17&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;Spring Boot&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;3.3.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;빌드관리도구&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;Gradle 8.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;개발 툴&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;IntelliJ IDEA 2024.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;spring-boot-starter-validation&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;3.3.3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;1%20)%20Firebase%20%EC%84%A4%EC%A0%95-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;1 ) RabbitMq 설치 ( window 기준 )&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.rabbitmq.com/docs/install-windows&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.rabbitmq.com/docs/install-windows&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1724656243827&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;Installing on Windows | RabbitMQ&quot; data-og-description=&quot;&amp;lt;!--&quot; data-og-host=&quot;www.rabbitmq.com&quot; data-og-source-url=&quot;https://www.rabbitmq.com/docs/install-windows&quot; data-og-url=&quot;https://www.rabbitmq.com/docs/install-windows&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.rabbitmq.com/docs/install-windows&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.rabbitmq.com/docs/install-windows&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;Installing on Windows | RabbitMQ&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lt;!--&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.rabbitmq.com&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-origin-width=&quot;877&quot; data-origin-height=&quot;247&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cG1uqz/btsJgGi1ijt/11xPiJKEmvpoC2YSYzi2s1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cG1uqz/btsJgGi1ijt/11xPiJKEmvpoC2YSYzi2s1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cG1uqz/btsJgGi1ijt/11xPiJKEmvpoC2YSYzi2s1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcG1uqz%2FbtsJgGi1ijt%2F11xPiJKEmvpoC2YSYzi2s1%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;877&quot; height=&quot;247&quot; data-origin-width=&quot;877&quot; data-origin-height=&quot;247&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;1%20)%20Firebase%20%EC%84%A4%EC%A0%95-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;2 ) Erlang/OTP 다운로드&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.erlang.org/downloads&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.erlang.org/downloads&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1724656382751&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;Index - Erlang/OTP&quot; data-og-description=&quot;The official home of the Erlang Programming Language&quot; data-og-host=&quot;www.erlang.org&quot; data-og-source-url=&quot;https://www.erlang.org/downloads&quot; data-og-url=&quot;https://www.erlang.org/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ftdaj/hyWSarK0NU/zuvvSZbCDHs0EM0mwVDyLk/img.png?width=228&amp;amp;height=200&amp;amp;face=0_0_228_200&quot;&gt;&lt;a href=&quot;https://www.erlang.org/downloads&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.erlang.org/downloads&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ftdaj/hyWSarK0NU/zuvvSZbCDHs0EM0mwVDyLk/img.png?width=228&amp;amp;height=200&amp;amp;face=0_0_228_200');&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;Index - Erlang/OTP&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The official home of the Erlang Programming Language&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.erlang.org&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-origin-width=&quot;1105&quot; data-origin-height=&quot;377&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TXPe4/btsJgAQMr5o/cXBEb1LAX22A1ZypdFZomK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TXPe4/btsJgAQMr5o/cXBEb1LAX22A1ZypdFZomK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TXPe4/btsJgAQMr5o/cXBEb1LAX22A1ZypdFZomK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTXPe4%2FbtsJgAQMr5o%2FcXBEb1LAX22A1ZypdFZomK%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;1105&quot; height=&quot;377&quot; data-origin-width=&quot;1105&quot; data-origin-height=&quot;377&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;872&quot; data-origin-height=&quot;746&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lOnsS/btsJhbJCYHO/vClkYXwXi1wj2JQY4AZc91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lOnsS/btsJhbJCYHO/vClkYXwXi1wj2JQY4AZc91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lOnsS/btsJhbJCYHO/vClkYXwXi1wj2JQY4AZc91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlOnsS%2FbtsJhbJCYHO%2FvClkYXwXi1wj2JQY4AZc91%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;872&quot; height=&quot;746&quot; data-origin-width=&quot;872&quot; data-origin-height=&quot;746&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;528&quot; data-origin-height=&quot;525&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VyNwV/btsJfpo93pA/ZnYS36oNlmEbyPSk8CYLXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VyNwV/btsJfpo93pA/ZnYS36oNlmEbyPSk8CYLXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VyNwV/btsJfpo93pA/ZnYS36oNlmEbyPSk8CYLXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVyNwV%2FbtsJfpo93pA%2FZnYS36oNlmEbyPSk8CYLXk%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;525&quot; data-origin-width=&quot;528&quot; data-origin-height=&quot;525&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1195&quot; data-origin-height=&quot;266&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1lcTh/btsJfndMaP0/v92KqAA3IK67nvqP8RUAY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1lcTh/btsJfndMaP0/v92KqAA3IK67nvqP8RUAY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1lcTh/btsJfndMaP0/v92KqAA3IK67nvqP8RUAY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1lcTh%2FbtsJfndMaP0%2Fv92KqAA3IK67nvqP8RUAY0%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;1195&quot; height=&quot;266&quot; data-origin-width=&quot;1195&quot; data-origin-height=&quot;266&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;3)%20RabbitMQ%20%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%83%9D%EC%84%B1%20%EB%B0%8F%20%EA%B6%8C%ED%95%9C%20%EB%B6%80%EC%97%AC-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;3) RabbitMQ 사용자 생성 및 권한 부여&lt;/h2&gt;
&lt;hr data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 id=&quot;1.%20%EC%B5%9C%EC%B4%88%20%EB%A1%9C%EA%B7%B8%EC%9D%B8%20%ED%99%94%EB%A9%B4%EC%9C%BC%EB%A1%9C%20%EC%A0%91%EC%86%8D%ED%95%A9%EB%8B%88%EB%8B%A4.-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;1. 최초 로그인 화면으로 접속합니다.&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  로컬 RabbitMQ 경로는 http://localhost:15672/&amp;nbsp;입니다.&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;190&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DYOQp/btsJg4cMZsF/UciXNnXsOlTvXMa8ZVAkYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DYOQp/btsJg4cMZsF/UciXNnXsOlTvXMa8ZVAkYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DYOQp/btsJg4cMZsF/UciXNnXsOlTvXMa8ZVAkYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDYOQp%2FbtsJg4cMZsF%2FUciXNnXsOlTvXMa8ZVAkYK%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;190&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;190&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;2.%20%EB%A1%9C%EA%B7%B8%EC%9D%B8%EC%9D%84%20%EC%88%98%ED%96%89%ED%95%A9%EB%8B%88%EB%8B%A4.-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;2. 로그인을 수행합니다.&lt;/h3&gt;
&lt;hr data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  기본 사용자 아이디와 비밀번호로 최초 로그인을 수행할 때 접속이 가능합니다. 관리자 권한을 가진 유저로 외부에서는 접속할 수 없습니다.&lt;/blockquote&gt;
&lt;table style=&quot;background-color: #ffffff; color: #353638; text-align: left; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;&lt;b&gt;분류&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;&lt;b&gt;ID&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;guest&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;&lt;b&gt;PW&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;guest&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;560&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dzhPIf/btsJfTQPJZu/4jaGkkRfyzqPfxQtkZ1ml1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dzhPIf/btsJfTQPJZu/4jaGkkRfyzqPfxQtkZ1ml1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dzhPIf/btsJfTQPJZu/4jaGkkRfyzqPfxQtkZ1ml1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdzhPIf%2FbtsJfTQPJZu%2F4jaGkkRfyzqPfxQtkZ1ml1%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;560&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;560&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Java/Spring</category>
      <author>조각남자</author>
      <guid isPermaLink="true">https://serverrefository.tistory.com/337</guid>
      <comments>https://serverrefository.tistory.com/337#entry337comment</comments>
      <pubDate>Mon, 26 Aug 2024 16:26:24 +0900</pubDate>
    </item>
    <item>
      <title>[Java] Firebase Cloud Message(FCM) 푸시 메시지 API</title>
      <link>https://serverrefository.tistory.com/336</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;다운로드.png&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;279&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vXMap/btsJejC7hNb/wKEq9lY44ZOMWu6v2rzXdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vXMap/btsJejC7hNb/wKEq9lY44ZOMWu6v2rzXdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vXMap/btsJejC7hNb/wKEq9lY44ZOMWu6v2rzXdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvXMap%2FbtsJejC7hNb%2FwKEq9lY44ZOMWu6v2rzXdK%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;400&quot; height=&quot;279&quot; data-filename=&quot;다운로드.png&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;279&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  Spring Validation 구성을 위한 사용된 개발환경 입니다&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;background-color: #ffffff; color: #353638; text-align: left; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style2&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;개발 환경&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;버전&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;java&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;17&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;Spring Boot&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;3.3.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;빌드관리도구&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;Gradle 8.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;개발 툴&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;IntelliJ IDEA 2024.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;spring-boot-starter-validation&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;3.3.3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1 ) Firebase 설정&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;b&gt;  Firebase 환경설정&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;- 아래의 공식 사이트에 접근하여 환경설정을 수행합니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://console.firebase.google.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://console.firebase.google.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1724646312416&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;로그인 - Google 계정&quot; data-og-description=&quot;이메일 또는 휴대전화&quot; data-og-host=&quot;accounts.google.com&quot; data-og-source-url=&quot;https://console.firebase.google.com/&quot; data-og-url=&quot;https://accounts.google.com/v3/signin/identifier?continue=https%3A%2F%2Fconsole.firebase.google.com%2F&amp;amp;followup=https%3A%2F%2Fconsole.firebase.google.com%2F&amp;amp;ifkv=Ab5oB3rYbSHVIlo2gijq6zUCKHRDZumkOnsLxijipuLuUzxaj4HEan6-fZ7aisC8NEesFnaIHxxPFA&amp;amp;osid=1&amp;amp;passive=1209600&amp;amp;flowName=WebLiteSignIn&amp;amp;flowEntry=ServiceLogin&amp;amp;dsh=S-30921813%3A1724646310951963&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://console.firebase.google.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://console.firebase.google.com/&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;로그인 - Google 계정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이메일 또는 휴대전화&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;accounts.google.com&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-origin-width=&quot;489&quot; data-origin-height=&quot;195&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BgDYm/btsJfqusRIw/mY0E8WNkhtG60r9Pq93M31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BgDYm/btsJfqusRIw/mY0E8WNkhtG60r9Pq93M31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BgDYm/btsJfqusRIw/mY0E8WNkhtG60r9Pq93M31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBgDYm%2FbtsJfqusRIw%2FmY0E8WNkhtG60r9Pq93M31%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;489&quot; height=&quot;195&quot; data-origin-width=&quot;489&quot; data-origin-height=&quot;195&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;2.%20%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%20%EC%84%A4%EC%A0%95%20%E2%86%92%20%EC%84%9C%EB%B9%84%EC%8A%A4%20%EA%B3%84%EC%A0%95%20%E2%86%92%20%EC%9E%90%EB%B0%94%20%EC%84%A0%ED%83%9D%20%E2%86%92%20%E2%80%98%EC%83%88%20%EB%B9%84%EA%B3%B5%EA%B0%9C%20%ED%82%A4%20%EC%83%9D%EC%84%B1%E2%80%99%20%EB%B2%84%ED%8A%BC%EC%9D%84%20%EB%88%84%EB%A6%85%EB%8B%88%EB%8B%A4.-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;1. 프로젝트 설정 &amp;gt; 서비스 &amp;gt; JAVA &amp;gt; 키 생성 클릭&lt;/span&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1670&quot; data-origin-height=&quot;891&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EgOAP/btsJem0WxOH/T2e6NQYrveFzQd6rsuk4K1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EgOAP/btsJem0WxOH/T2e6NQYrveFzQd6rsuk4K1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EgOAP/btsJem0WxOH/T2e6NQYrveFzQd6rsuk4K1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEgOAP%2FbtsJem0WxOH%2FT2e6NQYrveFzQd6rsuk4K1%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;1670&quot; height=&quot;891&quot; data-origin-width=&quot;1670&quot; data-origin-height=&quot;891&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;2.%20%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%20%EC%84%A4%EC%A0%95%20%E2%86%92%20%EC%84%9C%EB%B9%84%EC%8A%A4%20%EA%B3%84%EC%A0%95%20%E2%86%92%20%EC%9E%90%EB%B0%94%20%EC%84%A0%ED%83%9D%20%E2%86%92%20%E2%80%98%EC%83%88%20%EB%B9%84%EA%B3%B5%EA%B0%9C%20%ED%82%A4%20%EC%83%9D%EC%84%B1%E2%80%99%20%EB%B2%84%ED%8A%BC%EC%9D%84%20%EB%88%84%EB%A6%85%EB%8B%88%EB%8B%A4.-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;2. 생성된 Json 파일 /resources/fcm 에 파일 옮기기&lt;/span&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;551&quot; data-origin-height=&quot;137&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JmD2N/btsJfOn6Ote/pmU1alKpgLEA44A2dCZvp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JmD2N/btsJfOn6Ote/pmU1alKpgLEA44A2dCZvp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JmD2N/btsJfOn6Ote/pmU1alKpgLEA44A2dCZvp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJmD2N%2FbtsJfOn6Ote%2FpmU1alKpgLEA44A2dCZvp0%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;137&quot; data-origin-width=&quot;551&quot; data-origin-height=&quot;137&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2 ) Spring 환경 설정&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;2.%20%EC%9D%98%EC%A1%B4%EC%84%B1%20%EC%A3%BC%EC%9E%85-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;1. 의존성 ( depindencies ) 추가&lt;/h3&gt;
&lt;pre id=&quot;code_1724647306607&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'com.google.firebase:firebase-admin:9.3.0'           // 구글 firebase
    implementation 'com.fasterxml.jackson.core:jackson-core'    // jakson
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1093&quot; data-origin-height=&quot;304&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Eod11/btsJflfGH1h/czwDJAyiPYZKA4VQXYklek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Eod11/btsJflfGH1h/czwDJAyiPYZKA4VQXYklek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Eod11/btsJflfGH1h/czwDJAyiPYZKA4VQXYklek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEod11%2FbtsJflfGH1h%2FczwDJAyiPYZKA4VQXYklek%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;1093&quot; height=&quot;304&quot; data-origin-width=&quot;1093&quot; data-origin-height=&quot;304&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;2.%20%EC%9D%98%EC%A1%B4%EC%84%B1%20%EC%A3%BC%EC%9E%85-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;1. Controller&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;div style=&quot;background-color: #1e1f22; color: #bcbec4;&quot;&gt;
&lt;pre class=&quot;d&quot;&gt;&lt;code&gt;@Slf4j
@RestController
@RequiredArgsConstructor
public class FcmController {

  private final FcmService fcmService;

  @PostMapping(&quot;/send&quot;)
  public ResponseEntity&amp;lt;Integer&amp;gt; pushM(@RequestBody FcmRequest request) {
    log.debug(&quot; == 푸시 메시지를 전송합니다. &quot;);
    int result = fcmService.sendMessage(request);

    return new ResponseEntity&amp;lt;&amp;gt;(1,HttpStatus.OK);
  }
}&lt;/code&gt;&lt;/pre&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;2.%20%EC%9D%98%EC%A1%B4%EC%84%B1%20%EC%A3%BC%EC%9E%85-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;2.Service&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;pre id=&quot;code_1724647747527&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Service
public class FcmService {

  public int sendMessage(FcmRequest request) throws IOException {

    String message = makeMessage(request);
    RestTemplate restTemplate = new RestTemplate();
    /**
     * 추가된 사항 : RestTemplate 이용중 클라이언트의 한글 깨짐 증상에 대한 수정
     * @refernece : https://stackoverflow.com/questions/29392422/how-can-i-tell-resttemplate-to-post-with-utf-8-encoding
     */
    restTemplate.getMessageConverters()
        .add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8));

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);
    headers.set(&quot;Authorization&quot;, &quot;Bearer &quot; + getAccessToken());

    HttpEntity entity = new HttpEntity&amp;lt;&amp;gt;(message, headers);

    String API_URL = &quot;&amp;lt;https://fcm.googleapis.com/v1/projects/book-review-ab331/messages:send&amp;gt;&quot;;
    ResponseEntity response = restTemplate.exchange(API_URL, HttpMethod.POST, entity, String.class);

    System.out.println(response.getStatusCode());

    return response.getStatusCode() == HttpStatus.OK ? 1 : 0;
  }

  /**
   * Firebase Admin SDK의 비공개 키를 참조하여 Bearer 토큰을 발급 받습니다.
   *
   * @return Bearer token
   */
  private String getAccessToken() throws IOException {
    String firebaseConfigPath = &quot;fcm/fcm-key.json&quot;;

    GoogleCredentials googleCredentials = GoogleCredentials
        .fromStream(new ClassPathResource(firebaseConfigPath).getInputStream())
        .createScoped(List.of(&quot;&amp;lt;https://www.googleapis.com/auth/cloud-platform&amp;gt;&quot;));

    googleCredentials.refreshIfExpired();
    return googleCredentials.getAccessToken().getTokenValue();
  }

  /**
   * FCM 전송 정보를 기반으로 메시지를 구성합니다. (Object -&amp;gt; String)
   *
   * @param fcmSendDto FcmSendDto
   * @return String
   */
  private String makeMessage(FcmRequest fcmSendDto) throws JsonProcessingException {

    ObjectMapper om = new ObjectMapper();
    FcmMessageDto fcmMessageDto = FcmMessageDto.builder()
        .message(FcmMessageDto.Message.builder()
            .token(fcmSendDto.getToken())
            .notification(FcmMessageDto.Notification.builder()
                .title(fcmSendDto.getTitle())
                .body(fcmSendDto.getBody())
                .image(null)
                .build()
            ).build()).validateOnly(false).build();

    return om.writeValueAsString(fcmMessageDto);
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;2.%20%EC%9D%98%EC%A1%B4%EC%84%B1%20%EC%A3%BC%EC%9E%85-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;3. Server ( Flutter ) Token&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;60&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8fWMf/btsJeruoqED/9Ef5GZVp3dM6nrHtsUi6sk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8fWMf/btsJeruoqED/9Ef5GZVp3dM6nrHtsUi6sk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8fWMf/btsJeruoqED/9Ef5GZVp3dM6nrHtsUi6sk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8fWMf%2FbtsJeruoqED%2F9Ef5GZVp3dM6nrHtsUi6sk%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;648&quot; height=&quot;60&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;60&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1083&quot; data-origin-height=&quot;316&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c490ec/btsJflUB91S/MVG19EartAdsobIp53ADGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c490ec/btsJflUB91S/MVG19EartAdsobIp53ADGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c490ec/btsJflUB91S/MVG19EartAdsobIp53ADGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc490ec%2FbtsJflUB91S%2FMVG19EartAdsobIp53ADGK%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;1083&quot; height=&quot;316&quot; data-origin-width=&quot;1083&quot; data-origin-height=&quot;316&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&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;a href=&quot;https://github.com/eoog/blog/tree/main/spring-fcm/src/main&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/eoog/blog/tree/main/spring-fcm/src/main&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1724654118517&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;blog/spring-fcm/src/main at main &amp;middot; eoog/blog&quot; data-og-description=&quot;:seedling: 조각남자 티스토리 블로그 기록 내용. Contribute to eoog/blog development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/eoog/blog/tree/main/spring-fcm/src/main&quot; data-og-url=&quot;https://github.com/eoog/blog/tree/main/spring-fcm/src/main&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/BlnRZ/hyWSbjTCfL/Q9fTa3Y1EW2GkTweV4Ry71/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/eoog/blog/tree/main/spring-fcm/src/main&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/eoog/blog/tree/main/spring-fcm/src/main&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/BlnRZ/hyWSbjTCfL/Q9fTa3Y1EW2GkTweV4Ry71/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;blog/spring-fcm/src/main at main &amp;middot; eoog/blog&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;:seedling: 조각남자 티스토리 블로그 기록 내용. Contribute to eoog/blog development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.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;</description>
      <category>Java/Spring</category>
      <author>조각남자</author>
      <guid isPermaLink="true">https://serverrefository.tistory.com/336</guid>
      <comments>https://serverrefository.tistory.com/336#entry336comment</comments>
      <pubDate>Mon, 26 Aug 2024 15:35:21 +0900</pubDate>
    </item>
    <item>
      <title>[Java] Slf4j - Log4j2 설정</title>
      <link>https://serverrefository.tistory.com/335</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;다운로드.png&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;279&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rvcJD/btsJfiQCTnX/AE5UpmXPH0mGngZnhtVRR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rvcJD/btsJfiQCTnX/AE5UpmXPH0mGngZnhtVRR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rvcJD/btsJfiQCTnX/AE5UpmXPH0mGngZnhtVRR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrvcJD%2FbtsJfiQCTnX%2FAE5UpmXPH0mGngZnhtVRR0%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;400&quot; height=&quot;279&quot; data-filename=&quot;다운로드.png&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;279&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  Spring Validation 구성을 위한 사용된 개발환경 입니다&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;background-color: #ffffff; color: #353638; text-align: left; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;개발 환경&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;버전&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;java&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;17&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;Spring Boot&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;3.3.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;빌드관리도구&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;Gradle 8.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;개발 툴&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;IntelliJ IDEA 2024.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;spring-boot-starter-validation&lt;/td&gt;
&lt;td style=&quot;color: #000000;&quot;&gt;3.3.3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h2 id=&quot;2)%C2%A0%20Slf4j%20%2B%20Log4j2%20%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%20%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://adjh54.tistory.com/74#2)%C2%A0%20Slf4j%20%2B%20Log4j2%20%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%20%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0-1&quot;&gt;1)&amp;nbsp; Slf4j + Log4j2 라이브러리 적용하기&lt;/a&gt;&lt;/h2&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  로깅 프레임워크의 추상체(interface)인 Slf4j를 사용하며 구현체(implements)로 Log4j2를 통하여 로그를 구현합니다.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f4f4f6; color: #9999a1; text-align: left;&quot;&gt; &amp;nbsp; spring-boot-starter-web 라이브러리 내에는 추상체로 Slf4j와 구현체 'Logback'을 내장하고 있어서 구현체(Logback)를 제외하고 적용합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;1.%20%EB%B9%8C%EB%93%9C%20%EA%B4%80%EB%A6%AC%EB%8F%84%EA%B5%AC%EC%97%90%20%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%20%EC%A2%85%EC%86%8D%EC%84%B1%20%EC%A0%9C%EC%99%B8-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://adjh54.tistory.com/74#1.%20%EB%B9%8C%EB%93%9C%20%EA%B4%80%EB%A6%AC%EB%8F%84%EA%B5%AC%EC%97%90%20%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%20%EC%A2%85%EC%86%8D%EC%84%B1%20%EC%A0%9C%EC%99%B8-1&quot;&gt;1. 빌드 관리도구에 라이브러리 종속성 제외&lt;/a&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&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;background-color: #f4f4f6; color: #9999a1; text-align: left;&quot;&gt;  spring-boot-starter-web 내에 기존에 추상체로 지정되어 있는 Logback을 제외합니다. 이는 충돌이 발생할 수 있기에 제외합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  로깅 프레임워크의 추상체(interface)인 Slf4j를 사용하며 구현체(implements)로 Log4j2를 통하여 로그를 구현합니다.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f4f4f6; color: #9999a1; text-align: left;&quot;&gt; &amp;nbsp; spring-boot-starter-web 라이브러리 내에는 추상체로 Slf4j와 구현체 'Logback'을 내장하고 있어서 구현체(Logback)를 제외하고 적용합니다.&lt;/span&gt;&lt;/p&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;style6&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  spring-boot-starter-web 내에 기존에 추상체로 지정되어 있는 Logback을 제외합니다. 이는 충돌이 발생할 수 있기에 제외합니다.&lt;/blockquote&gt;
&lt;pre class=&quot;gradle&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot;&gt;&lt;code&gt;configurations {
		// 내부 로깅 프레임워크(Logback)을 제외합니다.
    all {
        exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;2.%20%EB%B9%8C%EB%93%9C%20%EA%B4%80%EB%A6%AC%EB%8F%84%EA%B5%AC%EC%97%90%20%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%20%EC%B6%94%EA%B0%80-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://adjh54.tistory.com/74#2.%20%EB%B9%8C%EB%93%9C%20%EA%B4%80%EB%A6%AC%EB%8F%84%EA%B5%AC%EC%97%90%20%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%20%EC%B6%94%EA%B0%80-1&quot;&gt;2. 빌드 관리도구에 라이브러리 추가&lt;/a&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  의존성에 spring-boot-starter-log4j2를 추가합니다.&lt;/blockquote&gt;
&lt;pre class=&quot;java&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;dependencies {
	implementation &quot;org.springframework.boot:spring-boot-starter-log4j2&quot;;	    // Spring Boot Log4j2
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;3.%20properties%20%ED%8C%8C%EC%9D%BC%20%EB%82%B4%EC%97%90%20%EB%A1%9C%EA%B9%85%20%EC%84%A4%EC%A0%95%EC%9D%84%20%ED%95%A9%EB%8B%88%EB%8B%A4.-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://adjh54.tistory.com/74#3.%20properties%20%ED%8C%8C%EC%9D%BC%20%EB%82%B4%EC%97%90%20%EB%A1%9C%EA%B9%85%20%EC%84%A4%EC%A0%95%EC%9D%84%20%ED%95%A9%EB%8B%88%EB%8B%A4.-1&quot;&gt;3. properties 파일 내에 로깅 설정을 합니다.&lt;/a&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;pre class=&quot;java&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;# logging slf4j

# .yml 버젼
logging.config=classpath:log4j2/log4j2-local.yml

# .xml 버젼
logging.config=classpath:log4j2/log4j2-local.xml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;4.%20src%2Fmain%2Fresoruce%2Flog4j2%2Flog4j2-local.xml%20%ED%8C%8C%EC%9D%BC%20%EB%82%B4%EC%97%90%20%EB%A1%9C%EA%B7%B8%20%ED%99%98%EA%B2%BD%EC%84%A4%EC%A0%95%EC%9D%84%20%ED%95%A9%EB%8B%88%EB%8B%A4.-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://adjh54.tistory.com/74#4.%20src%2Fmain%2Fresoruce%2Flog4j2%2Flog4j2-local.xml%20%ED%8C%8C%EC%9D%BC%20%EB%82%B4%EC%97%90%20%EB%A1%9C%EA%B7%B8%20%ED%99%98%EA%B2%BD%EC%84%A4%EC%A0%95%EC%9D%84%20%ED%95%A9%EB%8B%88%EB%8B%A4.-1&quot;&gt;4. src/main/resoruce/log4j2/log4j2-local.xml 파일 내에 로그 환경설정을 합니다.&lt;/a&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1724643162713&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;Configuration&amp;gt;

  &amp;lt;!-- 파일정보 --&amp;gt;
  &amp;lt;Properties&amp;gt;
    &amp;lt;Property name=&quot;infoLogNm&quot;&amp;gt;./logs/test/api_info.log&amp;lt;/Property&amp;gt;
    &amp;lt;Property name=&quot;errorLogNm&quot;&amp;gt;./logs/test/api_error.log&amp;lt;/Property&amp;gt;
    &amp;lt;Property name=&quot;authLogNm&quot;&amp;gt;./logs/test/api_auth.log&amp;lt;/Property&amp;gt;
    &amp;lt;Property name=&quot;jsonInfoLogNm&quot;&amp;gt;./logs/test/api_json_info.log&amp;lt;/Property&amp;gt;
    &amp;lt;Property name=&quot;layoutPattern&quot;&amp;gt;%style{%d{UTF-8}}{black} %highlight{%-5level} [%style{%t}{bright,blue}]
      %style{%C}{bright,yellow}: %msg%n%throwable
    &amp;lt;/Property&amp;gt;
  &amp;lt;/Properties&amp;gt;

  &amp;lt;!-- 생성 파일 정보 --&amp;gt;
  &amp;lt;Appenders&amp;gt;
    &amp;lt;Console name=&quot;Console_Appender&quot; target=&quot;SYSTEM_OUT&quot;&amp;gt;
      &amp;lt;PatternLayout pattern=&quot;${layoutPattern}&quot;/&amp;gt;
    &amp;lt;/Console&amp;gt;

    &amp;lt;!-- info level --&amp;gt;
    &amp;lt;File name=&quot;File_Info_Appender&quot;&amp;gt;
      &amp;lt;fileName&amp;gt;${infoLogNm}&amp;lt;/fileName&amp;gt;
      &amp;lt;PatternLayout&amp;gt;
        &amp;lt;pattern&amp;gt;%d %p %C{1.} [%t] %m%n&amp;lt;/pattern&amp;gt;
      &amp;lt;/PatternLayout&amp;gt;
    &amp;lt;/File&amp;gt;

    &amp;lt;!-- error level --&amp;gt;
    &amp;lt;File name=&quot;File_Error_Appender&quot;&amp;gt;
      &amp;lt;fileName&amp;gt;${errorLogNm}&amp;lt;/fileName&amp;gt;
      &amp;lt;PatternLayout&amp;gt;
        &amp;lt;pattern&amp;gt;%d %p %C{1.} [%t] %m%n&amp;lt;/pattern&amp;gt;
      &amp;lt;/PatternLayout&amp;gt;
    &amp;lt;/File&amp;gt;

    &amp;lt;!-- auth management --&amp;gt;
    &amp;lt;File name=&quot;File_Auth_Appender&quot;&amp;gt;
      &amp;lt;fileName&amp;gt;${authLogNm}&amp;lt;/fileName&amp;gt;
      &amp;lt;PatternLayout&amp;gt;
        &amp;lt;pattern&amp;gt;%d %p %C{1.} [%t] %m%n&amp;lt;/pattern&amp;gt;
      &amp;lt;/PatternLayout&amp;gt;
    &amp;lt;/File&amp;gt;

    &amp;lt;!-- json api info --&amp;gt;
    &amp;lt;File name=&quot;File_Json_info_Appender&quot;&amp;gt;
      &amp;lt;fileName&amp;gt;${jsonInfoLogNm}&amp;lt;/fileName&amp;gt;
      &amp;lt;PatternLayout&amp;gt;
        &amp;lt;pattern&amp;gt;%d %p %C{1.} [%t] %m%n&amp;lt;/pattern&amp;gt;
      &amp;lt;/PatternLayout&amp;gt;
    &amp;lt;/File&amp;gt;
  &amp;lt;/Appenders&amp;gt;

  &amp;lt;!-- 로그 범위  --&amp;gt;
  &amp;lt;Loggers&amp;gt;
    &amp;lt;!-- Spring 관련 로그  --&amp;gt;
    &amp;lt;Logger name=&quot;org.springframework&quot; additivity=&quot;false&quot; level=&quot;INFO&quot;&amp;gt;
      &amp;lt;AppenderRef ref=&quot;Console_Appender&quot;/&amp;gt;
      &amp;lt;AppenderRef ref=&quot;File_Info_Appender&quot;/&amp;gt;
&amp;lt;!--      &amp;lt;AppenderRef ref=&quot;File_Error_Appender&quot;/&amp;gt;--&amp;gt;
    &amp;lt;/Logger&amp;gt;

    &amp;lt;!-- 프로젝트 로그 --&amp;gt;
    &amp;lt;logger name=&quot;com.www.springlog4j2&quot; additivity=&quot;false&quot; level=&quot;DEBUG&quot;&amp;gt;
      &amp;lt;AppenderRef ref=&quot;Console_Appender&quot;/&amp;gt;
      &amp;lt;AppenderRef ref=&quot;File_Info_Appender&quot;/&amp;gt;
      &amp;lt;AppenderRef ref=&quot;File_Auth_Appender&quot;/&amp;gt;
      &amp;lt;AppenderRef ref=&quot;File_Json_info_Appender&quot;/&amp;gt;
    &amp;lt;/logger&amp;gt;

    &amp;lt;!-- AUTH 관련 로그  --&amp;gt;
    &amp;lt;logger name=&quot;com.www.springlog4j2.controller&quot; additivity=&quot;false&quot; level=&quot;INFO,DEBUG&quot;&amp;gt;
      &amp;lt;AppenderRef ref=&quot;Console_Appender&quot;/&amp;gt;
&amp;lt;!--      &amp;lt;AppenderRef ref=&quot;File_Info_Appender&quot;/&amp;gt;--&amp;gt;
      &amp;lt;AppenderRef ref=&quot;File_Error_Appender&quot;/&amp;gt;
    &amp;lt;/logger&amp;gt;

    &amp;lt;!-- Default 세팅 --&amp;gt;
    &amp;lt;root additivity=&quot;false&quot; level=&quot;OFF&quot;&amp;gt;
      &amp;lt;AppenderRef ref=&quot;Console_Appender&quot;/&amp;gt;
    &amp;lt;/root&amp;gt;
  &amp;lt;/Loggers&amp;gt;
&amp;lt;/Configuration&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;4.%20src%2Fmain%2Fresoruce%2Flog4j2%2Flog4j2-local.xml%20%ED%8C%8C%EC%9D%BC%20%EB%82%B4%EC%97%90%20%EB%A1%9C%EA%B7%B8%20%ED%99%98%EA%B2%BD%EC%84%A4%EC%A0%95%EC%9D%84%20%ED%95%A9%EB%8B%88%EB%8B%A4.-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://adjh54.tistory.com/74#4.%20src%2Fmain%2Fresoruce%2Flog4j2%2Flog4j2-local.xml%20%ED%8C%8C%EC%9D%BC%20%EB%82%B4%EC%97%90%20%EB%A1%9C%EA%B7%B8%20%ED%99%98%EA%B2%BD%EC%84%A4%EC%A0%95%EC%9D%84%20%ED%95%A9%EB%8B%88%EB%8B%A4.-1&quot;&gt;5. src/main/resoruce/log4j2/log4j2-local.yml 파일 내에 로그 환경설정을 합니다.&lt;/a&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;div style=&quot;background-color: #1e1f22; color: #bcbec4;&quot;&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Configutation:
  # 구성 이름
  name: api

  # [Properties] 설정에 사용되는 속성들을 정의
  Properties:
    Property:
      - name: &quot;log-path&quot;
        value: &quot;./logs&quot;
      - name: &quot;charset-UTF-8&quot;
        value: &quot;UTF-8&quot;
      - name: &quot;layout-pattern&quot;
        value: &quot;%style{%d}{black} %highlight{%-5level} [%style{%t}{bright,blue}] %style{%C}{bright,yellow}: %msg%n%throwable&quot;
      - name: &quot;info-log&quot;
        value: ${log-path}/api/api-info.log
      - name: &quot;error-log&quot;
        value: ${log-path}/api/api-error.log
      - name: &quot;auth-log&quot;
        value: ${log-path}/api/api-auth.log
      - name: &quot;json-log&quot;
        value: ${log-path}/api/api-json-info.log

  # [Appenders] 로그 기록방식 정의
  Appenders:
    # [Appenders - Console] 콘솔에 로그를 출력하는 방식 정의
    Console:
      - name: console-appender
        target: SYSTEM_OUT
        PatternLayout:
          pattern: ${layout-pattern}

    # [Appenders - RollingFile] 로그를 파일들을 압축파일로 출력하는 방식 정의
    RollingFile:
      name: rolling-file-appender
      fileName: ${log-path}/rolling-file-log.log
      filePattern: &quot;${log-path}/archive/rollingFile.log.%d{yyyy-MM-dd-hh-mm}_%i.gz&quot;
      PatternLayout:
        charset: ${charset-UTF-8}
        pattern: ${layout-pattern}
      Policies:
        SizeBasedTriggeringPolicy:
          size: &quot;200KB&quot;
        TimeBasedTriggeringPolicy:
          interval: &quot;1&quot;
      DefaultRollOverStrategy:
        max: &quot;30&quot;
        fileIndex: &quot;max&quot;

    # [Appenders - File] 로그를 파일로 기록하는 방식 정의
    File:
      - name: file-info-appender
        fileName: ${info-log}
        PatternLayout:
          pattern: &quot;%d %p %C{1.} [%t] %m%n&quot;
      - name: file-error-appender
        fileName: ${error-log}
        PatternLayout:
          pattern: &quot;%d %p %C{1.} [%t] %m%n&quot;
      - name: file-auth-appender
        fileName: ${auth-log}
        PatternLayout:
          pattern: &quot;%d %p %C{1.} [%t] %m%n&quot;
      - name: file-json-info-appender
        fileName: ${json-log}
        PatternLayout:
          pattern: &quot;%d %p %C{1.} [%t] %m%n&quot;

  # [Loggers] 로그 출력 범위를 정의
  Loggers:
    # [Loggers - Root] 모든 로그를 기록하는 최상위 로그를 정의
    Root:
      level: OFF
      AppenderRef:
        - ref: console-appender
        - ref: rolling-file-appender

    # [Loggers - Loggers] 특정 패키지나 클래스에 대한 로그를 정의
    Logger:
      # 1. Spring Framework 로그 레벨 'INFO' 정의
      - name: org.springframework
        additivity: &quot;false&quot;
        level: INFO
        AppenderRef:
          - ref: console-appender
#          - ref: file-info-appender
          - ref: file-error-appender

      # 2. Spring Framework 로그 레벨 'DEBUG' 정의
      - name: com.www.springlog4j2
        additivity: &quot;false&quot;
        level: DEBUG
        AppenderRef:
          - ref: console-appender
#          - ref: file-info-appender
          - ref: file-json-info-appender
          - ref: file-auth-appender

      # 3. MyBatis 관련 로그 레벨 특정 패키지 외에는 모두 OFF
      - name: jdbc
        level: OFF
      - name: jdbc.sqlonly
        level: OFF
      - name: jdbc.sqltiming
        level: INFO
      - name: jdbc.resultsettable
        level: OFF
      - name: jdbc.audit
        level: OFF
      - name: jdbc.resultset
        level: OFF
      - name: jdbc.connection
        level: OFF&lt;/code&gt;&lt;/pre&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;4)%20%EC%B0%B8%EA%B3%A0%20%3A%20%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%20%EB%82%B4%EC%9D%98%20%EB%A1%9C%EA%B7%B8%EA%B0%80%20%EC%B6%9C%EB%A0%A5%EB%90%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EA%B2%BD%EC%9A%B0%C2%A0-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://adjh54.tistory.com/74#4)%20%EC%B0%B8%EA%B3%A0%20%3A%20%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%20%EB%82%B4%EC%9D%98%20%EB%A1%9C%EA%B7%B8%EA%B0%80%20%EC%B6%9C%EB%A0%A5%EB%90%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EA%B2%BD%EC%9A%B0%C2%A0-1&quot;&gt;5) 참고 : 프로젝트 내의 로그가 출력되지 않는 경우&lt;/a&gt;&lt;/h2&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;background-color: #ffffff;&quot;&gt; &lt;b&gt;⭐️ 주의 사항 ⭐️&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #9999a1; text-align: left;&quot;&gt;  해당 파일에서 중요한 부분은 &quot;com.pacakge.projectname&quot; 해당 부분인데, build.gradle 파일 내에 group 속성에 해당하는 값을 복사하여서 추가하셔야 합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #9999a1; text-align: left;&quot;&gt;  그래야 프로젝트에서 log.info / log.debug와 관련된 로그를 사용하였을 때 프로젝트 내의 콘솔에 찍히는 것을 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;976&quot; data-origin-height=&quot;784&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRn1EN/btsJgykErYb/oPWV3nzfiM3CXxVyrwLu0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRn1EN/btsJgykErYb/oPWV3nzfiM3CXxVyrwLu0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRn1EN/btsJgykErYb/oPWV3nzfiM3CXxVyrwLu0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRn1EN%2FbtsJgykErYb%2FoPWV3nzfiM3CXxVyrwLu0k%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;976&quot; height=&quot;784&quot; data-origin-width=&quot;976&quot; data-origin-height=&quot;784&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;484&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eEhZxd/btsJfR5WFg6/doBI8C9JiEdYag0GkgTm3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eEhZxd/btsJfR5WFg6/doBI8C9JiEdYag0GkgTm3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eEhZxd/btsJfR5WFg6/doBI8C9JiEdYag0GkgTm3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeEhZxd%2FbtsJfR5WFg6%2FdoBI8C9JiEdYag0GkgTm3K%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;484&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;484&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# 적용한 github&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/eoog/blog/tree/main/spring-Log4j2&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/eoog/blog/tree/main/spring-Log4j2&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1724643393508&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;blog/spring-Log4j2 at main &amp;middot; eoog/blog&quot; data-og-description=&quot;:seedling: 조각남자 티스토리 블로그 기록 내용. Contribute to eoog/blog development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/eoog/blog/tree/main/spring-Log4j2&quot; data-og-url=&quot;https://github.com/eoog/blog/tree/main/spring-Log4j2&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b8YSSN/hyWSm6K3kk/17epSVBlEJuaAUbe0dAoB1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/eoog/blog/tree/main/spring-Log4j2&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/eoog/blog/tree/main/spring-Log4j2&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b8YSSN/hyWSm6K3kk/17epSVBlEJuaAUbe0dAoB1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;blog/spring-Log4j2 at main &amp;middot; eoog/blog&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;:seedling: 조각남자 티스토리 블로그 기록 내용. Contribute to eoog/blog development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.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;</description>
      <category>Java/Spring</category>
      <author>조각남자</author>
      <guid isPermaLink="true">https://serverrefository.tistory.com/335</guid>
      <comments>https://serverrefository.tistory.com/335#entry335comment</comments>
      <pubDate>Mon, 26 Aug 2024 11:49:33 +0900</pubDate>
    </item>
    <item>
      <title>공지사항</title>
      <link>https://serverrefository.tistory.com/notice/334</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;공지사항&lt;/p&gt;</description>
      <author>조각남자</author>
      <guid isPermaLink="true">https://serverrefository.tistory.com/notice/334</guid>
      <pubDate>Fri, 23 Aug 2024 10:50:05 +0900</pubDate>
    </item>
    <item>
      <title>redis 설치 자동 및  수동</title>
      <link>https://serverrefository.tistory.com/333</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;출처:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS1166571063&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS1166571063&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1724120820096&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;Redis(레디스) 서버 설치 및 실행 가이드&quot; data-og-description=&quot;앞서 레디스 기능의 주요 특징에 대해 알아봤습니다. 이제 우분투Ubuntu 22.04를 예로 들어 레디스 서버를 설치하는 방법을 다뤄보겠습니다. 설치 방법에는 리포지토리와 운영체제 표준 패키지 매&quot; data-og-host=&quot;www.hanbit.co.kr&quot; data-og-source-url=&quot;https://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS1166571063&quot; data-og-url=&quot;https://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS1166571063&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/c10sNs/hyWScPgOt8/TptxzrGXbX1cRlBhTCIKrK/img.jpg?width=600&amp;amp;height=600&amp;amp;face=0_0_600_600,https://scrap.kakaocdn.net/dn/wLjpq/hyWOoDPEpv/HtItbt00Me3jYkFrTd4es0/img.jpg?width=600&amp;amp;height=600&amp;amp;face=0_0_600_600,https://scrap.kakaocdn.net/dn/fhNVS/hyWSd1HtDn/SxvgXabb9UypCFZydScBY1/img.jpg?width=240&amp;amp;height=300&amp;amp;face=13_34_235_70&quot;&gt;&lt;a href=&quot;https://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS1166571063&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS1166571063&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/c10sNs/hyWScPgOt8/TptxzrGXbX1cRlBhTCIKrK/img.jpg?width=600&amp;amp;height=600&amp;amp;face=0_0_600_600,https://scrap.kakaocdn.net/dn/wLjpq/hyWOoDPEpv/HtItbt00Me3jYkFrTd4es0/img.jpg?width=600&amp;amp;height=600&amp;amp;face=0_0_600_600,https://scrap.kakaocdn.net/dn/fhNVS/hyWSd1HtDn/SxvgXabb9UypCFZydScBY1/img.jpg?width=240&amp;amp;height=300&amp;amp;face=13_34_235_70');&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;Redis(레디스) 서버 설치 및 실행 가이드&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;앞서 레디스 기능의 주요 특징에 대해 알아봤습니다. 이제 우분투Ubuntu 22.04를 예로 들어 레디스 서버를 설치하는 방법을 다뤄보겠습니다. 설치 방법에는 리포지토리와 운영체제 표준 패키지 매&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.hanbit.co.kr&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sudo&amp;nbsp;docker&amp;nbsp;run&amp;nbsp;-it&amp;nbsp;--name&amp;nbsp;6da5f3c25798&amp;nbsp;-p&amp;nbsp;6379:6379&amp;nbsp;-d&amp;nbsp;redis:7.2&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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;a href=&quot;https://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS8841492839&quot;&gt;레디스 기능의 주요 특징&lt;/a&gt;에 대해 알아봤습니다. 이제 &lt;b&gt;우분투Ubuntu 22.04&lt;/b&gt;를 예로 들어 레디스 서버를 설치하는 방법을 다뤄보겠습니다. 설치 방법에는 &lt;b&gt;리포지토리&lt;/b&gt;와 &lt;b&gt;운영체제 표준 패키지 매니저&lt;/b&gt;를 활용하는 두 가지가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레디스는 하위 호환성이 뛰어나 어떤 버전에서도 안정적이며 빠르게 동작하기 때문에 꼭 최신판을 설치할 필요가 없습니다. PPA(CentOS 계열이라면 Remi 저장소 등)를 활용한 패키지 매니저를 통해서 설치하면 충분합니다. 하지만 최신 기능을 쓰고 싶거나, 다른 실행 환경과 버전을 일치시키고 싶은 분을 위해서 소스코드로 빌드하는 방법도 함께 소개합니다.&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같은 순서대로 진행한다면 레디스 서버와 클라이언트의 redis-server/redis-cli를 설치할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;&lt;b&gt;✅레디스 설치하기&lt;/b&gt;&lt;/span&gt;&lt;/h2&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&gt;&lt;b&gt;➀ 우분투에서 레디스 설치&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우분투에서 APTAdvanced Packaging Tool를 먼저 설치합니다. 공식 리포지토리에는 비교적 이전 버전이 수록되어 있으므로, &lt;b&gt;PPA&lt;/b&gt; Personal Package Archive를 사용하여 레디스의 리포지토리에서 레디스의 새로운 버전을 설치합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;$ sudo add-apt-repository ppa:redislabs/redis
$ sudo apt update
$ sudo apt install redis -y
$ redis-server --version
Redis server v=7.0.4 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64
build=c7d71d4b63066c&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;코드 1-1 레디스 설치(우분투 22.04)&lt;/span&gt;&lt;/p&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&gt;&lt;b&gt;➁ 소스코드로 설치&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;우분투에서 소스코드로 레디스 서버를 빌드합니다. 다음 순서대로 다운로드, 빌드, 설치를 해봅니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;shell&quot;&gt;&lt;code&gt;$ sudo apt update
$ sudo apt install make gcc -y # 도커 등 일부 환경에서는 curl도 입력한다.
$ curl http://download.redis.io/releases/redis-7.0.4.tar.gz -o redis- 7.0.4.tar.gz
$ tar xzf redis-7.0.4.tar.gz
$ cd redis-7.0.4/ &amp;amp;&amp;amp; make &amp;amp;&amp;amp; sudo make PREFIX=/usr/local/ install&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;코드 1-2 레디스 빌드(우분투 22.04)&lt;/span&gt;&lt;/p&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;b&gt;운영체제의 외부 라이브러리를 설치해야 하는 것은 아닙니다. &lt;/b&gt;리눅스에서 애플리케이션이나 미들웨어를 빌드해본 경험이 있다면, 외부 라이브러리를 추가로 설치하지 않아도 꽤 간단하게 빌드할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;설치 후에는 버전을 확인하고 레디스 서버가 잘 설치되었는지 확인합니다. 소스코드로 빌드한 경우에는 redis-server가 설치된 bin/ 디렉터리 안에 redis-cli나 다른 도구도 있을 것 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;$ redis -server -v&amp;nbsp;
redis server v=7.0.4 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64&amp;nbsp;
build=b4f49a4d620f29c4&lt;/code&gt;&lt;/pre&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&gt;&lt;b&gt;➂ 각 설치 방법의 장단점&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우분투의 &lt;b&gt;운영체제 표준 패키지 매니저&lt;/b&gt;를 이용해 설치하면 설치 과정이 간단하고 빠르다는 장점이 있습니다. 의존성 관리가 자동으로 이루어지고, 시스템 업데이트 시에도 자동으로 최신 버전 유지가 가능하다는 점도 중요하죠. 하지만 최신 버전이 즉시 제공되지 않을 수 있으며 사용자 지정 옵션이 제한적일 수 있는 단점을 가지고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반면, &amp;nbsp;&lt;b&gt;소스코드를 통한 레디스 설치&lt;/b&gt;는 최신 버전을 즉시 사용할 수 있고, 컴파일 옵션을 통해 사용자 지정하다는 점이 장점입니다. 특정 환경에 최적화된 설치도 가능하죠. 하지만 설치 과정이 운영체제 표준 패키지 매니저를 이용하는 것 보다는 복잡하며 의존성을 수동으로 관리해야 할 가능성이 있습니다. 물론 업데이트와 유지보수도 사용자가 확인해야 하는 번거로움이 있습니다.&lt;/p&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상기 방법을 통해 레디스를 설치했다면, 이제 실제로 동작하는지 확인해볼까요? 여기에서는 우분투 22.04 환경 을 사용하며 서버와 클라이언트를 같이 동작하는 것을 전제로 설명합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;✅ 레디스 동작 테스트&lt;/b&gt;&lt;/span&gt;&lt;/h3&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;span&gt;&lt;b&gt;➀&amp;nbsp;&lt;/b&gt;redis-server 실행 및 redis-cli로 접속하기&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레디스는 클라이언트/서버 모델을 채택하고 있습니다. redis-cli와 같은 클라이언트를 통해 redis-server를 조작합니다.&lt;/p&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;b&gt;redis-cli&lt;/b&gt;는 레디스의 CLICommand Line Interface로써 명령어를 레디스에 보내 레디스 서버에서 보낸 응답을 읽어올 수 있습니다. 데이터 조작은 redis-cli 등 클라이언트에서 명령어로 실행합니다. 데이터 저장하기, 불러오기, 추가하기 등이 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;redis-cli에는 사용자가 명령어를 입력해서 응답 받는 인터랙티브 모드와 redis-cli의 인수로 명령어를 보내 결과를 출력하는 모드가 있습니다. 레디스를 자주 사용하는 경우에는 매우 유용한 도구가 될 것입니다. 여기에서는 인터랙티브 모드를 통한 실행 예시를 설명합니다 .&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;redis-cli 이외에 여러 프로그래밍 언어의 레디스 클라이언트를 사용하는 경우에도 명령어 체계는 같으므로 동일한 접근 방식으로 이용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동작을 확인해봅시다. 먼저 레디스 서버를 redis-server 명령어로 실행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;759&quot; data-origin-height=&quot;613&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dhDofV/btsI8RlgUdJ/7bqou55Mck37NPUpBD3Kz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dhDofV/btsI8RlgUdJ/7bqou55Mck37NPUpBD3Kz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dhDofV/btsI8RlgUdJ/7bqou55Mck37NPUpBD3Kz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdhDofV%2FbtsI8RlgUdJ%2F7bqou55Mck37NPUpBD3Kz1%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;759&quot; height=&quot;613&quot; data-origin-width=&quot;759&quot; data-origin-height=&quot;613&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버를 실행하면 여러 정보가 표시됩니다. redis-server 실행 옵션은 &lt;b&gt;redis-server -h/--help&lt;/b&gt;로 확인할 수 있습니다. 책 &amp;lt;&lt;a href=&quot;https://www.hanbit.co.kr/store/books/look.php?p_code=B6215862232&quot;&gt;실전 레디스&lt;/a&gt;&amp;gt; 에서는 redis-cli/redis-server의 출력을 보기 쉽게 각 내용을 다른 창(터미널별로 다른 탭 혹은 tmux의 다른 세션)으로 실행하는 방식으로 조작합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행한 레디스 서버에 redis-cli 명령어로 레디스 클라이언트를 접속하면 &lt;b&gt;&amp;lt;접속 주소:포트 번호&amp;gt;&lt;/b&gt; 형태로 표시됩니다. 여기부터는 대화식으로 조작할 수 있습니다. 또한 앞서 말한 대로 다른 창으로 실행하는 것을 전제로 진행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;accesslog&quot;&gt;&lt;code&gt;$ redis-cli
127.0.0.1:6379&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;접속이 안 되는 경우에는 아래 내용이 표시됩니다. 해결 방법은 &amp;lt;실전 레디스&amp;gt;의 칼럼 &amp;lsquo;&lt;b&gt;redis-cli에 연결할 수 없을 때의 트러블슈팅&lt;/b&gt;&amp;rsquo;에서 설명합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;not connected&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;redis-cli --help로 도움말을 표시합니다. -h는 접속 호스트를 지정하는 옵션입니다.&lt;/p&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&gt;&lt;b&gt;② redis-cli 동작&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제로 레디스 서버에 데이터를 저장하고 꺼내보겠습니다. 예시는 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. SET 명령어로 String형 키 foo에 bar라는 값을 저장합니다.&lt;br /&gt;2. GET 명령어로 키 foo로부터 값을 취득합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;accesslog&quot;&gt;&lt;code&gt;127.0.0.1:6379&amp;gt; SET foo bar
OK
127.0.0.1:6379&amp;gt; GET foo
&quot;bar&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레디스는 자료형별로 데이터를 설정하고 가져오는 각 명령어를 제공합니다. SET과 GET 각각 String형에 대응됩니다. 레디스 클라이언트로부터 SHUTDOWN 명령어로 레디스 서버를 종료할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;accesslog&quot;&gt;&lt;code&gt;127.0.0.1:6379&amp;gt; SHUTDOWN
not connected&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;redis-server 명령어를 실행한 레디스 서버 호스트가 셧다운되면 다음과 같은 로그가 표시됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;2662:M 29 Aug 2022 04:41:22.493 # User requested shutdown ...
2662:M 29 Aug 2022 04:41:22.493 * Saving the final RDB snapshot before exiting.
2662:M 29 Aug 2022 04:41:22.498 * DB saved on disk
2662:M 29 Aug 2022 04:41:22.498 # redis is now ready to exit, bye bye ...&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;QUIT 명령어로 redis-cli에서 빠져나올 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;not connected&amp;gt; QUIT
$&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;redis-cli는 대화 모드뿐만 아니라 명령어 실행도 가능합니다. 명령어 자체는 대화 모드와 다르지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;gams&quot;&gt;&lt;code&gt;$ redis-cli set mykey &quot;foo&quot;
OK
$ redis-cli get mykey
&quot;foo&quot;&lt;/code&gt;&lt;/pre&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&gt;&lt;b&gt;③ 원격 연결로 조작하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원격 연결은 redis-cli -h 처럼 -h 옵션으로 엔드포인트를 지정해서 사용합니다.&lt;b&gt; 레디스 서버 보호 모드&lt;/b&gt;Protected Mode가 활성화되어 있으므로 기본적으로 원격 연결은 동작하지 않습니다. 레디스는 보호 모드가 활성화되면 레디스를 위험한 공격으로부터 지키기 위해 접속 주소가 127.0.0.1로 제한되며 원격 연결을 할 수 없게 됩니다.&amp;nbsp;&lt;/p&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;■ bind 지시자에서 접속할 레디스 서버 호스트의 네트워크 인터페이스 IP 주소를 명시적으로 하나 혹은 여러 개를 지정합니다.&lt;br /&gt;■ requirepass 지시자에서 레디스 서버로 인증용 패스워드를 설정합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;혹은 다음과 같은 방식을 실행해 보호모드를 해제합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;■ 레디스 서버 설정 파일에서 protected -mode no로 지정합니다.&lt;br /&gt;■ redis -server --protected -mode no와 같이 실행 옵션에 --protected -mode no를 추가합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;애플리케이션 서버와 레디스 서버 등을 분리할 때는 원격으로 연결하게 됩니다. 하지만 기본적으로 레디스 서버가 퍼블릭 서브넷Public Subnet 인터넷 등처럼 신뢰할 수 없는 클라이언트로 직접 접근할 수 있는 환경을 갖추고 있지는 않습니다.&amp;nbsp;&lt;/p&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;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 콘텐츠는 『&lt;a href=&quot;https://www.hanbit.co.kr/store/books/look.php?p_code=B6215862232&quot;&gt;실전 레디스&lt;/a&gt;』에서 내용을 발췌하여 작성하였습니다.&lt;/p&gt;</description>
      <category>기존(310)/ Utils</category>
      <author>조각남자</author>
      <guid isPermaLink="true">https://serverrefository.tistory.com/333</guid>
      <comments>https://serverrefository.tistory.com/333#entry333comment</comments>
      <pubDate>Tue, 20 Aug 2024 11:27:17 +0900</pubDate>
    </item>
    <item>
      <title>Docker와 Docker Compose 설치</title>
      <link>https://serverrefository.tistory.com/332</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #f15f5f;&quot;&gt;1. Docker와 Docker Compose 설치&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;[&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; Docker 설치 ]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Docker를 설치하는 방법들이 여러 개 있지만 이번에는 간편한 설치 스크립트를 통해 Docker를 설치하도록 하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.&amp;nbsp;Docker 설치 스크립트 다운&lt;/b&gt;&lt;/h4&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;curl -fsSL https://get.docker.com -o get-docker.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2. Docker 설치 스크립트 실행&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;sudo sh get-docker.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;3. Non-Root User에 Docker 권한 부여&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 Docker를 관리하려면 관리자 권한이 필요합니다. 하지만 모든 Docker 명령어마다 sudo를 붙이는 것은 매우 번거로우므로 일반 사용자에게 sudo 명령 없이 Docker를 사용하는 작업을 추가적으로 하도록 하겠습니다.&lt;/p&gt;
&lt;pre class=&quot;nginx&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# docker group 추가
sudo groupadd docker

# docker group에 현재의 사용자 추가
sudo usermod -aG docker $USER&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4. Docker 테스트&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1636969491028&quot; class=&quot;dockerfile&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;docker container run hello-world&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 명령을 실행하여 아래와 같은 출력이 나오면 Docker 설치가 완료된 것입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1636969517648&quot; class=&quot;vim&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
9bb5a5d4561a: Pull complete
Digest: sha256:f5233545e43561214ca4891fd1157e1c3c563316ed8e237750d59bde73361e77
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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;span&gt;&lt;b&gt;[&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Docker Compose 설치 ]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 여러 컨테이너들을 동시에 구축하도록 도와주는 Docker Compose를 설치해보도록 하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1. Docker Compose 설치&lt;/b&gt;&lt;/h4&gt;
&lt;pre class=&quot;bash&quot;&gt;&lt;code&gt;sudo curl -L &quot;https://github.com/docker/compose/releases/download/1.29.2/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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. docker-compose에 실행 권한 부여&lt;/b&gt;&lt;/h4&gt;
&lt;pre class=&quot;awk&quot;&gt;&lt;code&gt;sudo chmod +x /usr/local/bin/docker-compose&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;3. Docker Compose 설치 확인&lt;/b&gt;&lt;/h4&gt;
&lt;pre class=&quot;ada&quot;&gt;&lt;code&gt;docker-compose --version&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 명령을 실행하여 아래와 같은 출력이 나오면 Docker Compose 설치가 완료된 것입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1636969765428&quot; class=&quot;angelscript&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;docker-compose version 1.29.2, build 5becea4c&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #f15f5f;&quot;&gt;2. Docker와 Docker Compose 명령어&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;[&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; Docker 명령어&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;]&lt;/b&gt;&lt;/span&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;docker pull {이미지URL 또는 이름:버전}&lt;/li&gt;
&lt;li&gt;ex) docker pull ubuntu:18.04&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;이미지 확인
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;docker images&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;컨테이너 확인&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실행중인 컨테이너: docker ps&lt;/li&gt;
&lt;li&gt;전체 컨테이너: docker ps -a&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;컨테이너 실행(Bash)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;새롭게 컨테이너를 만들어 실행: docker run -it {이미지Id} /bin/bash&lt;/li&gt;
&lt;li&gt;기존의 컨테이너를 실행: docker exec -it {컨테이너Id} /bin/bash&lt;/li&gt;
&lt;li&gt;ex) docker run -it --user root 220e50ed9a62 /bin/bash&lt;br /&gt;&lt;br /&gt;
&lt;figure data-origin-height=&quot;482&quot; data-origin-width=&quot;2338&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPSTCY/btrk18dSnXt/kj68FTW67cXsaSdsLFJfrk/img.png&quot; data-phocus-index=&quot;0&quot; data-origin-height=&quot;482&quot; data-origin-width=&quot;2338&quot; /&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;이미지 및 컨테이너 삭제
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이미지 삭제: docker rmi {이미지Id}&lt;br /&gt;ex) docker rmi 220e50ed9a62&lt;/li&gt;
&lt;li&gt;컨테이너 삭제: docker rm {컨테이너Id}&lt;br /&gt;ex) docker rm 220e50ed9a62&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;span&gt;&lt;b&gt;[&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Docker Compose 명령어&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;]&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&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 실행
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;docker-compose build &amp;amp;&amp;amp; docker-compose up -d&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;d: 백그라운드 실행 옵션&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;Docker Compose 종료 및 삭제&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;종료: docker-compose down&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;삭제(볼륨까지 제거): docker-compose down -v&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출처: &lt;a href=&quot;https://mangkyu.tistory.com/196&quot;&gt;https://mangkyu.tistory.com/196&lt;/a&gt; [MangKyu's Diary:티스토리] &lt;/p&gt;</description>
      <category>기존(310)/ Utils</category>
      <author>조각남자</author>
      <guid isPermaLink="true">https://serverrefository.tistory.com/332</guid>
      <comments>https://serverrefository.tistory.com/332#entry332comment</comments>
      <pubDate>Tue, 20 Aug 2024 11:13:52 +0900</pubDate>
    </item>
    <item>
      <title>[ubuntu] 그라파타 설치 방법</title>
      <link>https://serverrefository.tistory.com/331</link>
      <description>&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Grafana는 사용자가 시스템이나 애플리케이션의 동작과 성능에 대한 통찰력을 얻기 위해 심층적인 데이터 분석을 수행할 수 있는 귀중한 도구입니다. 이 문서에서는 Ubuntu 22.04에 Grafana를 설치하는 방법을 안내합니다.&lt;/p&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 가이드를 마치면 Grafana의 기능을 활용하여 데이터를 효과적으로 모니터링하고 시각화할 수 있는 준비가 될 것입니다.&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;a id=&quot;what-is-grafana&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-grafana-ubuntu#what-is-grafana&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;그라파나란?&lt;/h2&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Grafana는 데이터를 모니터링하고 시각화하고 대화형 대시보드를 만드는 데 설계된 인기 있는 오픈소스 분석 및 대화형 시각화 웹 애플리케이션입니다. 다양한 지원 데이터 소스에서 데이터를 쿼리하고 그래프, 차트, 데이터(메트릭 및 로그)의 대시보드를 빌드할 수 있으므로 데이터를 해석하고 이해하기가 더 쉽습니다.&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;a id=&quot;what-is-grafana-used-for&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-grafana-ubuntu#what-is-grafana-used-for&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;Grafana는 무엇에 사용되나요?&lt;/h2&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://www.thoughtspot.com/data-trends/business-intelligence/tableau-competitors&quot;&gt;Grafana를 사용하면 Tableau나 경쟁사와&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;유사한 데이터 시각화를 위한 대화형 및 시각적으로 매력적인 대시보드를 만들 수 있습니다 . 예를 들어&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/kubernetes-monitoring-tools&quot;&gt;Kubernetes 클러스터를&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;모니터링하는 등 다양한 데이터 소스를 실시간으로 모니터링&lt;span&gt;&amp;nbsp;&lt;/span&gt;하고 심층적인 데이터 분석을 지원하여 시스템 성능에 대한 통찰력을 제공합니다. 이를 통해 보다 정보에 입각한 결정을 내리는 데 도움이 될 수 있습니다. Grafana를 사용하면 미리 정의된 조건에 따라 알림을 설정하여 문제가 발생하기 전에 문제를 알릴 수도 있습니다.&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;a id=&quot;prerequisites&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-grafana-ubuntu#prerequisites&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;필수 조건&lt;/h2&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이것은 Ubuntu 22.04에 Grafana를 설치하는 방법을 실제 예제와 함께 보여주는 실제 데모이며, 따라하려면 다음이 필요합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #6b7280; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Ubuntu 서버(이 데모에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/how-to-install-ubuntu-server&quot;&gt;Cherry Servers&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;의 서버를 사용했습니다).&lt;/li&gt;
&lt;li&gt;sudo 액세스 권한이 있는 루트가 아닌 사용자&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;a id=&quot;how-to-install-grafana-on-ubuntu-2204-step-by-step-process&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-grafana-ubuntu#how-to-install-grafana-on-ubuntu-2204-step-by-step-process&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;Ubuntu 22.04에 Grafana를 설치하는 방법: 단계별 프로세스&lt;/h2&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 섹션에서는 공식 APT 저장소를 사용하여 Ubuntu 22.04에 Grafana를 설치하는 방법에 대한 단계별 지침을 제공합니다.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;a id=&quot;step-1---update-and-upgrade&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-grafana-ubuntu#step-1---update-and-upgrade&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;1단계 - 업데이트 및 업그레이드&lt;/h3&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;먼저, 시스템 패키지가 최신 상태인지 확인해야 합니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;터미널에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/sudo-apt-update&quot;&gt;다음 명령을 실행 하면 됩니다.&lt;/a&gt;&lt;/p&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;sudo apt update -y &amp;amp;&amp;amp; sudo apt upgrade -y
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;667&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dZRIKk/btsIZlF92d1/LPA73Cnbi2kAXp8lcugZv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dZRIKk/btsIZlF92d1/LPA73Cnbi2kAXp8lcugZv0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dZRIKk/btsIZlF92d1/LPA73Cnbi2kAXp8lcugZv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdZRIKk%2FbtsIZlF92d1%2FLPA73Cnbi2kAXp8lcugZv0%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;667&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;667&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;a id=&quot;step-2---install-the-required-packages&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-grafana-ubuntu#step-2---install-the-required-packages&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;2단계 - 필요한 패키지 설치&lt;/h3&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;다음으로, 설치에 필요한 패키지를 설치하려면 다음 명령을 실행하세요.&lt;/p&gt;
&lt;pre class=&quot;elm&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;sudo apt install -y apt-transport-https software-properties-common wget
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;668&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SKCeD/btsIZiWXURj/dQPvdPwazgt1zEaRJMq6jK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SKCeD/btsIZiWXURj/dQPvdPwazgt1zEaRJMq6jK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SKCeD/btsIZiWXURj/dQPvdPwazgt1zEaRJMq6jK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSKCeD%2FbtsIZiWXURj%2FdQPvdPwazgt1zEaRJMq6jK%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;668&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;668&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;a id=&quot;step-3---add-the-grafana-gpg-key&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-grafana-ubuntu#step-3---add-the-grafana-gpg-key&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;3단계 - Grafana GPG 키 추가&lt;/h3&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;다음으로, 다음 명령을 사용하여 Grafana GPG 키를 다운로드하여 저장합니다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;sudo mkdir -p /etc/apt/keyrings/
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg &amp;gt; /dev/null
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;첫 번째 명령은 키가 저장될 디렉토리를 만듭니다. 두 번째 명령은 보안 APT 패키지 관리를 위해 지정된 위치에 키를 다운로드, 변환 및 저장합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;149&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eHVQbM/btsIYBpdHCp/dVIf9elwYuWXIZstPZZlkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eHVQbM/btsIYBpdHCp/dVIf9elwYuWXIZstPZZlkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eHVQbM/btsIYBpdHCp/dVIf9elwYuWXIZstPZZlkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeHVQbM%2FbtsIYBpdHCp%2FdVIf9elwYuWXIZstPZZlkK%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;149&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;149&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;a id=&quot;step-4---add-grafana-apt-repository&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-grafana-ubuntu#step-4---add-grafana-apt-repository&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;4단계 - Grafana APT 저장소 추가&lt;/h3&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Grafana 패키지는 기본적으로 기본 Ubuntu 저장소에 포함되지 않습니다. Grafana를 설치하려면 Grafana 공식 APT 저장소를 시스템의 APT 소스에 추가해야 합니다. 이렇게 하면 시스템이 설치 프로세스 중에 Grafana 패키지를 인식하고 검색할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;php&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;echo &quot;deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main&quot; | sudo tee -a /etc/apt/sources.list.d/grafana.list
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;시스템에 저장소를 추가한 후 다음을 사용하여 새로 추가된 저장소의 정보를 포함하도록 패키지 인덱스를 업데이트합니다.&lt;/p&gt;
&lt;pre class=&quot;ebnf&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;sudo apt update
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;432&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AFMbu/btsIXodo5Tq/kDVTExnopr5jKJPkVre1k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AFMbu/btsIXodo5Tq/kDVTExnopr5jKJPkVre1k1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AFMbu/btsIXodo5Tq/kDVTExnopr5jKJPkVre1k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAFMbu%2FbtsIXodo5Tq%2FkDVTExnopr5jKJPkVre1k1%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;432&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;432&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;a id=&quot;step-5---install-grafana&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-grafana-ubuntu#step-5---install-grafana&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;5단계 - Grafana 설치&lt;/h3&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이제 다음을 사용하여 Grafana를 설치하세요.&lt;/p&gt;
&lt;pre class=&quot;cmake&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;sudo apt install grafana
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;668&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbPm2n/btsIXlARAgI/plNipWhkPnJ185JuAKzjYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbPm2n/btsIXlARAgI/plNipWhkPnJ185JuAKzjYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbPm2n/btsIXlARAgI/plNipWhkPnJ185JuAKzjYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbPm2n%2FbtsIXlARAgI%2FplNipWhkPnJ185JuAKzjYK%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;668&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;668&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;a id=&quot;step-6---start-the-grafana-service&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-grafana-ubuntu#step-6---start-the-grafana-service&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;6단계 - Grafana 서비스 시작&lt;/h3&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Grafana 설치 과정이 완료되면 다음을 사용하여 버전을 확인할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;axapta&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;sudo grafana-server -v
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;다음으로, 다음 명령을 사용하여 Grafana 서비스를 시작하고 시스템 재부팅 시 자동으로 시작되도록 설정합니다.&lt;/p&gt;
&lt;pre class=&quot;pgsql&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;sudo systemctl start grafana-server
sudo systemctl enable grafana-server
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;241&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOpRik/btsIW5E5SNL/fVBX02xFQNAtVdXrIUCokk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOpRik/btsIW5E5SNL/fVBX02xFQNAtVdXrIUCokk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOpRik/btsIW5E5SNL/fVBX02xFQNAtVdXrIUCokk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOpRik%2FbtsIW5E5SNL%2FfVBX02xFQNAtVdXrIUCokk%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;241&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;241&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;a id=&quot;step-7---verify-that-the-grafana-service-is-running&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-grafana-ubuntu#step-7---verify-that-the-grafana-service-is-running&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;7단계 - Grafana 서비스가 실행 중인지 확인&lt;/h3&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이제 아래 명령을 실행하여 Grafana 서비스가 활성화되어 있는지 확인하세요.&lt;/p&gt;
&lt;pre class=&quot;axapta&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;sudo systemctl status grafana-server
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Grafana 서비스가 성공적으로 시작되었다면, 서비스가 활성화되어 실행 중이라는 표시가 보일 것입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;610&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beKAFG/btsIW5E5SQz/XWK3orV6zCXhHfmx67KHq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beKAFG/btsIW5E5SQz/XWK3orV6zCXhHfmx67KHq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beKAFG/btsIW5E5SQz/XWK3orV6zCXhHfmx67KHq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeKAFG%2FbtsIW5E5SQz%2FXWK3orV6zCXhHfmx67KHq0%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;610&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;610&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;a id=&quot;step-8---open-the-port-in-the-firewall&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-grafana-ubuntu#step-8---open-the-port-in-the-firewall&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;8단계 - 방화벽에서 포트를 엽니다.&lt;/h3&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;포트 3000은 Grafana의 웹 인터페이스에 대한 기본 포트입니다. Grafana에 대한 외부 액세스를 허용하려면 방화벽을 활성화하고 포트 3000을 열어야 합니다. 이를 위해 터미널에서 다음 명령을 실행합니다.&lt;/p&gt;
&lt;pre class=&quot;properties&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;sudo ufw enable 
sudo ufw allow ssh
sudo ufw allow 3000/tcp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;295&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c435O5/btsIYcpHPa2/xHJ1XCMcU8OSkTNYw6PSsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c435O5/btsIYcpHPa2/xHJ1XCMcU8OSkTNYw6PSsK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c435O5/btsIYcpHPa2/xHJ1XCMcU8OSkTNYw6PSsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc435O5%2FbtsIYcpHPa2%2FxHJ1XCMcU8OSkTNYw6PSsK%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;295&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;295&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;a id=&quot;step-9---access-the-grafana-web-interface&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-grafana-ubuntu#step-9---access-the-grafana-web-interface&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;9단계 - Grafana 웹 인터페이스에 액세스&lt;/h3&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Grafana 웹 인터페이스에 액세스하려면 웹 브라우저를 열고 서버의 IP 주소(또는 해당되는 경우 호스트 이름)를 입력한 다음 포트 3000을 입력합니다. URL 형식은&lt;span&gt;&amp;nbsp;&lt;/span&gt;http://your_server_IP:3000.이어야 합니다. 로드되면 Grafana 로그인 페이지가 표시됩니다. 기본 자격 증명은 다음과 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #6b7280; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자 이름: admin&lt;/li&gt;
&lt;li&gt;비밀번호: admin&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1209&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYHtv8/btsIYSEicR1/m8ZDor6twZzKEutJJMJoK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYHtv8/btsIYSEicR1/m8ZDor6twZzKEutJJMJoK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYHtv8/btsIYSEicR1/m8ZDor6twZzKEutJJMJoK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYHtv8%2FbtsIYSEicR1%2Fm8ZDor6twZzKEutJJMJoK1%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;700&quot; data-origin-width=&quot;1209&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;새 비밀번호를 만들라는 메시지가 표시됩니다. 안전한 비밀번호를 입력하고 확인한 후 &quot;제출&quot; 버튼을 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;603&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c02MOy/btsIZrzndd1/u3apPXJ57ztN5YmjgbFhbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c02MOy/btsIZrzndd1/u3apPXJ57ztN5YmjgbFhbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c02MOy/btsIZrzndd1/u3apPXJ57ztN5YmjgbFhbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc02MOy%2FbtsIZrzndd1%2Fu3apPXJ57ztN5YmjgbFhbk%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;603&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;603&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;완료되면 Grafana 대시보드에 액세스할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;611&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nNC46/btsIXd38jxw/hl3kJty7J0KukJ5gslReaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nNC46/btsIXd38jxw/hl3kJty7J0KukJ5gslReaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nNC46/btsIXd38jxw/hl3kJty7J0KukJ5gslReaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnNC46%2FbtsIXd38jxw%2Fhl3kJty7J0KukJ5gslReaK%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;611&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;611&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;a id=&quot;how-to-uninstall-grafana&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-grafana-ubuntu#how-to-uninstall-grafana&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;Grafana를 제거하는 방법&lt;/h2&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;어떤 이유로든 Grafana를 제거해야 하는 경우 다음 명령을 실행하면 됩니다.&lt;/p&gt;
&lt;pre class=&quot;arduino&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;sudo systemctl stop grafana-server
sudo apt remove grafana
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;563&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqZaKk/btsIYXrZKo2/6ifNuAqoCXyBVYOYsrooR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqZaKk/btsIYXrZKo2/6ifNuAqoCXyBVYOYsrooR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqZaKk/btsIYXrZKo2/6ifNuAqoCXyBVYOYsrooR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqZaKk%2FbtsIYXrZKo2%2F6ifNuAqoCXyBVYOYsrooR0%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;563&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;563&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;a id=&quot;conclusion&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-grafana-ubuntu#conclusion&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;결론&lt;/h2&gt;</description>
      <category>기존(310)/ Utils</category>
      <author>조각남자</author>
      <guid isPermaLink="true">https://serverrefository.tistory.com/331</guid>
      <comments>https://serverrefository.tistory.com/331#entry331comment</comments>
      <pubDate>Thu, 8 Aug 2024 15:15:58 +0900</pubDate>
    </item>
    <item>
      <title>[Ubuntu] 프로메테우스 설치</title>
      <link>https://serverrefository.tistory.com/330</link>
      <description>&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;프로메테우스란 무엇인가?&lt;/h2&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Prometheus 모니터링 솔루션은 메트릭, 이벤트 및 알림을 모니터링하기 위한 무료 오픈 소스 솔루션입니다. 서버, 컨테이너 및 애플리케이션에서 메트릭을 수집하고 기록합니다. 유연한 쿼리 언어(PromQL)와 강력한 시각화 도구를 제공하는 것 외에도 필요할 때 알림을 보내는 알림 메커니즘도 제공합니다.&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;a id=&quot;system-requirementsprerequisites&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-prometheus-ubuntu#system-requirementsprerequisites&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;시스템 요구 사항/필수 조건&lt;/h2&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 튜토리얼은 실습적입니다. 따라하려면 다음이 있는지 확인하세요.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #6b7280; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Linux 명령줄 인터페이스(CLI)에 대한 기본 지식&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/how-to-install-ubuntu-server&quot;&gt;우분투 22.04 서버&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;;&lt;/li&gt;
&lt;li&gt;sudo 권한이 있는 사용자 계정.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;a id=&quot;how-to-install-prometheus-on-ubuntu-2204&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-prometheus-ubuntu#how-to-install-prometheus-on-ubuntu-2204&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;Ubuntu 22.04에 Prometheus를 설치하는 방법&lt;/h2&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 섹션에서는 Ubuntu 22.04에 Prometheus를 설치하는 방법을 단계별로 살펴보겠습니다.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;a id=&quot;step-1---update-system-packages&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-prometheus-ubuntu#step-1---update-system-packages&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;1단계 - 시스템 패키지 업데이트&lt;/h3&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;먼저&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/sudo-apt-update&quot;&gt;시스템의 패키지 목록을 업데이트하여&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;최신 패키지를 사용하고 있는지 확인해야 합니다. 이를 위해 다음 명령을 실행합니다.&lt;/p&gt;
&lt;pre class=&quot;ebnf&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;sudo apt update
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;a id=&quot;step-2---create-a-system-user-for-prometheus&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-prometheus-ubuntu#step-2---create-a-system-user-for-prometheus&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;2단계 - Prometheus에 대한 시스템 사용자 생성&lt;/h3&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이제 Prometheus에 대한 그룹과 시스템 사용자를 만듭니다. 그룹을 만든 다음 그룹에 사용자를 추가하려면 다음 명령을 실행합니다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;sudo groupadd --system prometheus
sudo useradd -s /sbin/nologin --system -g prometheus prometheus
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8LKNY/btsIXnFyt9Q/UaeDuVVNfyRvj24FsylxnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8LKNY/btsIXnFyt9Q/UaeDuVVNfyRvj24FsylxnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8LKNY/btsIXnFyt9Q/UaeDuVVNfyRvj24FsylxnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8LKNY%2FbtsIXnFyt9Q%2FUaeDuVVNfyRvj24FsylxnK%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;122&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;122&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 하면 Prometheus에 대해 제한된 권한이 부여된 &quot;prometheus&quot;라는 시스템 사용자와 그룹이 생성되어 무단 액세스의 위험이 줄어듭니다.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;a id=&quot;step-3---create-directories-for-prometheus&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-prometheus-ubuntu#step-3---create-directories-for-prometheus&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;3단계 - Prometheus를 위한 디렉토리 생성&lt;/h3&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Prometheus의 구성 파일과 라이브러리를 저장하려면 몇 개의 디렉토리를 만들어야 합니다. 디렉토리는 각각&lt;span&gt;&amp;nbsp;&lt;/span&gt;/etc및&lt;span&gt;&amp;nbsp;&lt;/span&gt;/var/lib디렉토리에 위치합니다. 아래 명령을 사용하여 디렉토리를 만듭니다.&lt;/p&gt;
&lt;pre class=&quot;crystal&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tmkrX/btsIYe8RELP/BSuH6iXxGxiSSxhZ13GNM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tmkrX/btsIYe8RELP/BSuH6iXxGxiSSxhZ13GNM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tmkrX/btsIYe8RELP/BSuH6iXxGxiSSxhZ13GNM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtmkrX%2FbtsIYe8RELP%2FBSuH6iXxGxiSSxhZ13GNM1%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;164&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;164&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;a id=&quot;step-4---download-prometheus-and-extract-files&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-prometheus-ubuntu#step-4---download-prometheus-and-extract-files&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;4단계 - Prometheus 다운로드 및 파일 추출&lt;/h3&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;최신 업데이트를 다운로드하려면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://prometheus.io/download/#prometheus&quot;&gt;Prometheus 공식 다운로드 사이트&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;로 가서 Linux 운영 체제용 다운로드 링크를 복사하세요. wget과 복사한 링크를 사용하여 다음과 같이 다운로드하세요.&lt;/p&gt;
&lt;pre class=&quot;awk&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;wget https://github.com/prometheus/prometheus/releases/download/v2.43.0/prometheus-2.43.0.linux-amd64.tar.gz
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;다운로드되는 모습을 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;475&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VDXOH/btsIXoRTufb/XM54BdI4HPKoDWu8bVNoUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VDXOH/btsIXoRTufb/XM54BdI4HPKoDWu8bVNoUk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VDXOH/btsIXoRTufb/XM54BdI4HPKoDWu8bVNoUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVDXOH%2FbtsIXoRTufb%2FXM54BdI4HPKoDWu8bVNoUk%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;475&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;475&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;다운로드가 완료되면 다음 명령을 실행하여 다운로드한 파일의 내용을 추출합니다.&lt;/p&gt;
&lt;pre class=&quot;css&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;tar vxf prometheus*.tar.gz
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;455&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JkfX6/btsIZyLQ3Ze/1muihzFK2N49Idz3TweVuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JkfX6/btsIZyLQ3Ze/1muihzFK2N49Idz3TweVuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JkfX6/btsIZyLQ3Ze/1muihzFK2N49Idz3TweVuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJkfX6%2FbtsIZyLQ3Ze%2F1muihzFK2N49Idz3TweVuK%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;455&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;455&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;a id=&quot;step-5--navigate-to-the-prometheus-directory&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-prometheus-ubuntu#step-5--navigate-to-the-prometheus-directory&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;5단계 - Prometheus 디렉토리로 이동&lt;/h3&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;파일을 추출한 후 다음 명령을 사용하여 새로 추출한 Prometheus 디렉토리로 이동합니다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;cd prometheus*/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;132&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QWJvA/btsIYDHjCn0/NwclD4SQWdBJQzIxogwaP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QWJvA/btsIYDHjCn0/NwclD4SQWdBJQzIxogwaP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QWJvA/btsIYDHjCn0/NwclD4SQWdBJQzIxogwaP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQWJvA%2FbtsIYDHjCn0%2FNwclD4SQWdBJQzIxogwaP0%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;132&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;132&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Prometheus 디렉토리로 변경하면 설치 관리 및 구성이 더 쉬워집니다. 이후 단계는 Prometheus 디렉토리의 컨텍스트 내에서 수행됩니다.&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;a id=&quot;configuring-prometheus-on-ubuntu-2204&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-prometheus-ubuntu#configuring-prometheus-on-ubuntu-2204&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;Ubuntu 22.04에서 Prometheus 구성&lt;/h2&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Prometheus를 다운로드하고 Ubuntu 22.04에 추출하면 구성할 수 있습니다. Prometheus 구성에는 수집할 메트릭 지정, 메트릭을 스크래핑할 대상 정의, 알림 규칙 및 기록 규칙 구성이 포함될 수 있습니다. 이 섹션에서는 Ubuntu 22.04에서 Prometheus를 설정하는 방법을 알아봅니다. 웹 브라우저를 통해 Prometheus에 액세스할 수 있도록 하는 기본 설정에만 집중하면 됩니다.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;a id=&quot;step-1---move-the-binary-files--set-owner&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-prometheus-ubuntu#step-1---move-the-binary-files--set-owner&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;1단계 - 바이너리 파일 이동 및 소유자 설정&lt;/h3&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;먼저, 일부 바이너리 파일( prometheus&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;및&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;promtool&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;) 을 이동&lt;span&gt;&amp;nbsp;&lt;/span&gt;하고 파일의 소유권을 &quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;prometheus&quot;&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;사용자 및 그룹으로 변경해야 합니다. 다음 명령으로 이를 수행할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;groovy&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;sudo mv prometheus /usr/local/bin
sudo mv promtool /usr/local/bin
sudo chown prometheus:prometheus /usr/local/bin/prometheus
sudo chown prometheus:prometheus /usr/local/bin/promtool
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;208&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3seHB/btsIZvBJ2Qr/pdlU6hJZ0XwWetV0mEVZwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3seHB/btsIZvBJ2Qr/pdlU6hJZ0XwWetV0mEVZwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3seHB/btsIZvBJ2Qr/pdlU6hJZ0XwWetV0mEVZwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3seHB%2FbtsIZvBJ2Qr%2FpdlU6hJZ0XwWetV0mEVZwk%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;208&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;208&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;a id=&quot;step-2---move-the-configuration-files--set-owner&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-prometheus-ubuntu#step-2---move-the-configuration-files--set-owner&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;2단계 - 구성 파일 이동 및 소유자 설정&lt;/h3&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;다음으로, 구성 파일을 이동하고 소유권을 설정하여 Prometheus가 액세스할 수 있도록 합니다. 이를 위해 다음 명령을 실행합니다.&lt;/p&gt;
&lt;pre class=&quot;awk&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;sudo mv consoles /etc/prometheus
sudo mv console_libraries /etc/prometheus
sudo mv prometheus.yml /etc/prometheus
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;crystal&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;sudo chown prometheus:prometheus /etc/prometheus
sudo chown -R prometheus:prometheus /etc/prometheus/consoles
sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries
sudo chown -R prometheus:prometheus /var/lib/prometheus
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;197&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BKomA/btsIXcqzg5c/ZG6nacuKnjGMCIr6cks591/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BKomA/btsIXcqzg5c/ZG6nacuKnjGMCIr6cks591/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BKomA/btsIXcqzg5c/ZG6nacuKnjGMCIr6cks591/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBKomA%2FbtsIXcqzg5c%2FZG6nacuKnjGMCIr6cks591%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;197&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;197&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이&lt;span&gt;&amp;nbsp;&lt;/span&gt;prometheus.yml파일은 주요 Prometheus 구성 파일입니다. 여기에는 모니터링할 대상, 데이터 스크래핑 빈도, 데이터 처리 및 스토리지에 대한 설정이 포함됩니다. 파일에서 알림 규칙과 알림 조건을 설정할 수 있습니다. 이 데모에서는 이 파일을 수정할 필요가 없지만 편집기에서 열어서 내용을 자세히 살펴보세요.&lt;/p&gt;
&lt;pre class=&quot;dts&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;sudo nano /etc/prometheus/prometheus.yml
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Prometheus 파일의 기본 내용은 다음과 같습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1221&quot; data-origin-height=&quot;261&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ecDpdX/btsIYChkV35/WzlDw82vrgJOCREHtTQebk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ecDpdX/btsIYChkV35/WzlDw82vrgJOCREHtTQebk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ecDpdX/btsIYChkV35/WzlDw82vrgJOCREHtTQebk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FecDpdX%2FbtsIYChkV35%2FWzlDw82vrgJOCREHtTQebk%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;1221&quot; height=&quot;261&quot; data-origin-width=&quot;1221&quot; data-origin-height=&quot;261&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1222&quot; data-origin-height=&quot;239&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bchgZd/btsIXXT09xV/uTduGHCChKMEXfgtlKTjwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bchgZd/btsIXXT09xV/uTduGHCChKMEXfgtlKTjwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bchgZd/btsIXXT09xV/uTduGHCChKMEXfgtlKTjwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbchgZd%2FbtsIXXT09xV%2FuTduGHCChKMEXfgtlKTjwk%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;1222&quot; height=&quot;239&quot; data-origin-width=&quot;1222&quot; data-origin-height=&quot;239&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1222&quot; data-origin-height=&quot;267&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TswKr/btsIX5qP2k3/G4MzQeX5Q9KpzgMnRQ4BQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TswKr/btsIX5qP2k3/G4MzQeX5Q9KpzgMnRQ4BQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TswKr/btsIX5qP2k3/G4MzQeX5Q9KpzgMnRQ4BQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTswKr%2FbtsIX5qP2k3%2FG4MzQeX5Q9KpzgMnRQ4BQK%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;1222&quot; height=&quot;267&quot; data-origin-width=&quot;1222&quot; data-origin-height=&quot;267&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;a id=&quot;step-3---create-prometheus-systemd-service&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-prometheus-ubuntu#step-3---create-prometheus-systemd-service&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;3단계 - Prometheus Systemd 서비스 생성&lt;/h3&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이제 Prometheus를 위한 시스템 서비스 파일을 만들어야 합니다. 다음을&lt;span&gt;&amp;nbsp;&lt;/span&gt;prometheus.service사용하여 Nano 텍스트 편집기로 파일을 만들고 엽니다.&lt;/p&gt;
&lt;pre class=&quot;awk&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;sudo nano /etc/systemd/system/prometheus.service
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;다음 설정을 파일에 포함하고 저장한 후 종료합니다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
    --config.file /etc/prometheus/prometheus.yml \
    --storage.tsdb.path /var/lib/prometheus/ \
    --web.console.templates=/etc/prometheus/consoles \
    --web.console.libraries=/etc/prometheus/console_libraries

[Install]
WantedBy=multi-user.target
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1223&quot; data-origin-height=&quot;255&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Cvpcx/btsIYZQU8fC/uWVfhKPtpQx3Ih9veE15tK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Cvpcx/btsIYZQU8fC/uWVfhKPtpQx3Ih9veE15tK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Cvpcx/btsIYZQU8fC/uWVfhKPtpQx3Ih9veE15tK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCvpcx%2FbtsIYZQU8fC%2FuWVfhKPtpQx3Ih9veE15tK%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;1223&quot; height=&quot;255&quot; data-origin-width=&quot;1223&quot; data-origin-height=&quot;255&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1227&quot; data-origin-height=&quot;258&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qqQ77/btsIYElT1UL/lbUrLyeEzNseNzK2rkVPh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qqQ77/btsIYElT1UL/lbUrLyeEzNseNzK2rkVPh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qqQ77/btsIYElT1UL/lbUrLyeEzNseNzK2rkVPh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqqQ77%2FbtsIYElT1UL%2FlbUrLyeEzNseNzK2rkVPh0%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;1227&quot; height=&quot;258&quot; data-origin-width=&quot;1227&quot; data-origin-height=&quot;258&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Prometheus의 &quot;시스템&quot; 서비스 파일은 Prometheus가 Ubuntu에서 시스템 서비스로 관리되어야 하는 방식을 정의합니다. 여기에는 실행해야 하는 사용자 및 그룹과 같은 서비스 구성이 포함됩니다. 또한 Prometheus 바이너리 경로와 Prometheus 구성 파일 위치도 포함됩니다. 또한 이 파일은 메트릭 데이터의 저장 위치를 ​​설정하고 시작 시 Prometheus 바이너리에 추가 명령줄 옵션을 전달하는 데 사용할 수 있습니다.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;a id=&quot;step-4---reload-systemd&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-prometheus-ubuntu#step-4---reload-systemd&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;4단계 - Systemd 다시 로드&lt;/h3&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;파일 을 저장한 후 시스템 구성 파일을 다시 로드해야&lt;span&gt;&amp;nbsp;&lt;/span&gt;prometheus.service변경 사항이 시스템에서 인식됩니다. 다음을 사용하여 시스템 구성 파일을 다시 로드합니다.&lt;/p&gt;
&lt;pre class=&quot;ebnf&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;sudo systemctl daemon-reload
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;159&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p041Y/btsIZvVTsoC/7lcCZiGHguE4k5OnU049Lk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p041Y/btsIZvVTsoC/7lcCZiGHguE4k5OnU049Lk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p041Y/btsIZvVTsoC/7lcCZiGHguE4k5OnU049Lk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp041Y%2FbtsIZvVTsoC%2F7lcCZiGHguE4k5OnU049Lk%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;159&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;159&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;a id=&quot;step-5---start-prometheus-service&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-prometheus-ubuntu#step-5---start-prometheus-service&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;5단계 - Prometheus 서비스 시작&lt;/h3&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;다음으로, Prometheus 서비스를 활성화하고 시작해야 합니다. 다음 명령을 사용하여 이를 수행합니다.&lt;/p&gt;
&lt;pre class=&quot;pgsql&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;sudo systemctl enable prometheus
sudo systemctl start prometheus
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zHmb2/btsIZskI3W1/biEf0W3yrvUAO0FaV2nnHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zHmb2/btsIZskI3W1/biEf0W3yrvUAO0FaV2nnHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zHmb2/btsIZskI3W1/biEf0W3yrvUAO0FaV2nnHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzHmb2%2FbtsIZskI3W1%2FbiEf0W3yrvUAO0FaV2nnHk%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;156&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;156&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;a id=&quot;step-5---check-prometheus-status&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-prometheus-ubuntu#step-5---check-prometheus-status&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;5단계 - Prometheus 상태 확인&lt;/h3&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Prometheus 서비스를 시작한 후 다음을 사용하여 서비스가 실행 중인지 또는 오류가 발생했는지 확인할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;ebnf&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;sudo systemctl status prometheus
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;샘플 출력:&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;460&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjSoXG/btsIYda9z4L/6SnjOep6jmto6QepdZywek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjSoXG/btsIYda9z4L/6SnjOep6jmto6QepdZywek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjSoXG/btsIYda9z4L/6SnjOep6jmto6QepdZywek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjSoXG%2FbtsIYda9z4L%2F6SnjOep6jmto6QepdZywek%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;460&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;460&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;a id=&quot;access-prometheus-web-interface&quot; style=&quot;color: #000000;&quot; href=&quot;https://www.cherryservers.com/blog/install-prometheus-ubuntu#access-prometheus-web-interface&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt;Prometheus 웹 인터페이스에 접속&lt;/h3&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Prometheus는 기본적으로 포트 9090에서 실행되므로 방화벽에서 포트 9090을 허용해야 합니다. 다음 명령을 사용하여 허용하세요.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #f5f2f0; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;sudo ufw allow 9090/tcp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;210&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KCk2O/btsIXf1XqlQ/2yPSNAbO1j4Y1NUfKHZf8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KCk2O/btsIXf1XqlQ/2yPSNAbO1j4Y1NUfKHZf8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KCk2O/btsIXf1XqlQ/2yPSNAbO1j4Y1NUfKHZf8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKCk2O%2FbtsIXf1XqlQ%2F2yPSNAbO1j4Y1NUfKHZf8K%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;210&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;210&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #6b7280; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;http://localhost:9090/&quot;&gt;Prometheus가 성공적으로 실행되면 localhost:9090&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;또는 &amp;lt;ip_address&amp;gt;:9090을&lt;span&gt;&amp;nbsp;&lt;/span&gt;사용하여 웹 브라우저를 통해 액세스할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;549&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/by6Dp7/btsIYzZhayn/wkEXquvZr6kj9kJV0iTB7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/by6Dp7/btsIYzZhayn/wkEXquvZr6kj9kJV0iTB7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/by6Dp7/btsIYzZhayn/wkEXquvZr6kj9kJV0iTB7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fby6Dp7%2FbtsIYzZhayn%2FwkEXquvZr6kj9kJV0iTB7K%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;549&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;549&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;출처 :&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.cherryservers.com/blog/install-prometheus-ubuntu&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.cherryservers.com/blog/install-prometheus-ubuntu&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1723097361625&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;How to Install Prometheus on Ubuntu 22.04 | Cherry Servers&quot; data-og-description=&quot;Do you experience unreliable software and infrastructure performance? Do you seek a solution to improve the efficiency of your system? A monitoring tool might be what you seek! One such tool for monitoring system performance is Prometheus. It is an open-so&quot; data-og-host=&quot;www.cherryservers.com&quot; data-og-source-url=&quot;https://www.cherryservers.com/blog/install-prometheus-ubuntu&quot; data-og-url=&quot;https://www.cherryservers.com/blog/install-prometheus-ubuntu&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/DhQ0S/hyWKDAo1XI/ZXF64rvu0eZJzEFhVgxV6k/img.jpg?width=1146&amp;amp;height=600&amp;amp;face=0_0_1146_600,https://scrap.kakaocdn.net/dn/E3yOI/hyWKzxYzCS/8vQaYQEwE39EQw33kFh680/img.jpg?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/FgIbK/hyWKu4x3ke/btAaKjS2fIljbQAo4FMU51/img.jpg?width=1216&amp;amp;height=626&amp;amp;face=0_0_1216_626&quot;&gt;&lt;a href=&quot;https://www.cherryservers.com/blog/install-prometheus-ubuntu&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.cherryservers.com/blog/install-prometheus-ubuntu&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/DhQ0S/hyWKDAo1XI/ZXF64rvu0eZJzEFhVgxV6k/img.jpg?width=1146&amp;amp;height=600&amp;amp;face=0_0_1146_600,https://scrap.kakaocdn.net/dn/E3yOI/hyWKzxYzCS/8vQaYQEwE39EQw33kFh680/img.jpg?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/FgIbK/hyWKu4x3ke/btAaKjS2fIljbQAo4FMU51/img.jpg?width=1216&amp;amp;height=626&amp;amp;face=0_0_1216_626');&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;How to Install Prometheus on Ubuntu 22.04 | Cherry Servers&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Do you experience unreliable software and infrastructure performance? Do you seek a solution to improve the efficiency of your system? A monitoring tool might be what you seek! One such tool for monitoring system performance is Prometheus. It is an open-so&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.cherryservers.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;</description>
      <category>기존(310)/ Utils</category>
      <author>조각남자</author>
      <guid isPermaLink="true">https://serverrefository.tistory.com/330</guid>
      <comments>https://serverrefository.tistory.com/330#entry330comment</comments>
      <pubDate>Thu, 8 Aug 2024 15:09:22 +0900</pubDate>
    </item>
    <item>
      <title>[React] React, TypeScript, and Tailwind CSS 설치</title>
      <link>https://serverrefository.tistory.com/329</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVPO2J/btsICjWRhBX/UEnCSw693LkLzcrNZuPGQ1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVPO2J/btsICjWRhBX/UEnCSw693LkLzcrNZuPGQ1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVPO2J/btsICjWRhBX/UEnCSw693LkLzcrNZuPGQ1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVPO2J%2FbtsICjWRhBX%2FUEnCSw693LkLzcrNZuPGQ1%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;700&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h1 id=&quot;be8f&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-selectable-paragraph=&quot;&quot; data-testid=&quot;storyTitle&quot;&gt;React, TypeScript, and Tailwind CSS with Vite in a Project&lt;/h1&gt;
&lt;h1 style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-selectable-paragraph=&quot;&quot;&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h1 id=&quot;bdf5&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-selectable-paragraph=&quot;&quot;&gt;&lt;b&gt;Step 1 &amp;mdash; 프로젝트 생성&lt;/b&gt;&lt;/h1&gt;
&lt;pre id=&quot;code_1721190197984&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm create vite@latest&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;572&quot; data-origin-height=&quot;398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/S5zHr/btsIDoC6MuJ/cuS1K9Z6uMvk6eQ9KPW9GK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/S5zHr/btsIDoC6MuJ/cuS1K9Z6uMvk6eQ9KPW9GK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/S5zHr/btsIDoC6MuJ/cuS1K9Z6uMvk6eQ9KPW9GK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FS5zHr%2FbtsIDoC6MuJ%2FcuS1K9Z6uMvk6eQ9KPW9GK%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;572&quot; height=&quot;398&quot; data-origin-width=&quot;572&quot; data-origin-height=&quot;398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;557&quot; data-origin-height=&quot;144&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t3M4a/btsICU939fw/vxaY9GSGMjGEHm2uMVBHLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t3M4a/btsICU939fw/vxaY9GSGMjGEHm2uMVBHLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t3M4a/btsICU939fw/vxaY9GSGMjGEHm2uMVBHLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft3M4a%2FbtsICU939fw%2FvxaY9GSGMjGEHm2uMVBHLK%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;557&quot; height=&quot;144&quot; data-origin-width=&quot;557&quot; data-origin-height=&quot;144&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1 id=&quot;bdf5&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-selectable-paragraph=&quot;&quot;&gt;&lt;b&gt;Step 2 &amp;mdash; Tailwind CSS 생성&lt;/b&gt;&lt;/h1&gt;
&lt;pre id=&quot;code_1721190669207&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm install -D tailwindcss postcss autoprefixer&lt;/code&gt;&lt;/pre&gt;
&lt;h1 style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-selectable-paragraph=&quot;&quot;&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h1 id=&quot;14ff&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-selectable-paragraph=&quot;&quot;&gt;&lt;b&gt;3단계 - 구성 파일 생성&lt;/b&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1721190696319&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npx tailwind init -p&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;e2f6&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-selectable-paragraph=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이 명령은 tailwind.config.js&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;및&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;postcss.config.js&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;구성 파일을 생성합니다&lt;span&gt;&amp;nbsp;&lt;/span&gt;. 이 파일은 프로젝트와 상호 작용하고 사용자 정의하는 데 도움이 됩니다.&lt;/p&gt;
&lt;h1 id=&quot;c970&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-selectable-paragraph=&quot;&quot;&gt;&lt;b&gt;4단계 - Tailwind CSS에 대한 소스 경로 구성&lt;/b&gt;&lt;/h1&gt;
&lt;p id=&quot;f737&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-selectable-paragraph=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이제 tailwind.config.js&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;파일 에 템플릿 파일의 경로를 추가해야 합니다&lt;span&gt;&amp;nbsp;&lt;/span&gt;. 템플릿 파일에는 HTML 템플릿, JavaScript 구성 요소 및 Tailwind 클래스 이름이 포함된 다른 소스 파일이 포함됩니다. 이는 해당 요소에 대해 vanilla CSS가 생성되도록 하기 위한 것입니다.&lt;/p&gt;
&lt;p id=&quot;db9c&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-selectable-paragraph=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;현재&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;tailwind.config.js&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;파일은 다음과 같습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-selectable-paragraph=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;647&quot; data-origin-height=&quot;297&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4MicQ/btsICkVOFeS/l6moic4oodMbUfpZs7Nbnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4MicQ/btsICkVOFeS/l6moic4oodMbUfpZs7Nbnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4MicQ/btsICkVOFeS/l6moic4oodMbUfpZs7Nbnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4MicQ%2FbtsICkVOFeS%2Fl6moic4oodMbUfpZs7Nbnk%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;647&quot; height=&quot;297&quot; data-origin-width=&quot;647&quot; data-origin-height=&quot;297&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1721190749815&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&quot;./index.html&quot; , &quot;./src/**/*.{js,ts,jsx,tsx}&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;298&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/R6S05/btsIBjXQJrw/hGFdmxv9KfUKMNkaKeUS9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R6S05/btsIBjXQJrw/hGFdmxv9KfUKMNkaKeUS9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R6S05/btsIBjXQJrw/hGFdmxv9KfUKMNkaKeUS9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR6S05%2FbtsIBjXQJrw%2FhGFdmxv9KfUKMNkaKeUS9k%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;700&quot; height=&quot;299&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;298&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p id=&quot;895b&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-selectable-paragraph=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;*.{js,ts,jsx,tsx}&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;사이에 공백을 추가하지 않도록 주의하세요 .&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h1 id=&quot;6305&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-selectable-paragraph=&quot;&quot;&gt;5단계 - CSS에 Tailwind 지침 추가&lt;/h1&gt;
&lt;p id=&quot;aabe&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-selectable-paragraph=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;Tailwind 지시문은 Tailwind CSS가 빌드 프로세스 중에 특정 기능이나 구성을 처리하도록 지시하는 Tailwind 전용 사용자 지정 명령문입니다.&lt;/p&gt;
&lt;p id=&quot;7ada&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-selectable-paragraph=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;우리는 index.css&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;파일 에 아래에 주어진 문장을 추가해야 합니다 . 하지만 그 전에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;index.css&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;파일 의 모든 내용을 지웁니다&lt;span&gt;&amp;nbsp;&lt;/span&gt;. 이제 Tailwind 지시문을 추가합니다:-&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-selectable-paragraph=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1721190784799&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@tailwind base;
@tailwind components;
@tailwind utilities;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;b61d&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-selectable-paragraph=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;이러한 지시어는 Tailwind CSS의 해당 부분을 CSS 파일에 포함하는 데 사용됩니다. 이러한 지시어는 일반적으로 CSS 파일 내에서 Tailwind CSS에서 제공하는 기본 스타일, 구성 요소 스타일 및 유틸리티 클래스가 최종 출력에 포함되도록 하는 데 사용됩니다.&lt;/p&gt;
&lt;p id=&quot;7231&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-selectable-paragraph=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;App.css&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;파일을 제거할 수도 있습니다&lt;span&gt;&amp;nbsp;&lt;/span&gt;.&lt;/p&gt;
&lt;h1 id=&quot;d3b2&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-selectable-paragraph=&quot;&quot;&gt;6단계 - Tailwind CSS 사용 시작&lt;/h1&gt;
&lt;p id=&quot;c2b1&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-selectable-paragraph=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;이제 tailwind를 사용할 수 있습니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;App.tsx&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;파일을 열면 이제 Tailwind CSS 클래스를 사용할 수 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWm9ef/btsIChdKpjk/ZUrgBI6eDzHM0qGAyk7wgk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWm9ef/btsIChdKpjk/ZUrgBI6eDzHM0qGAyk7wgk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWm9ef/btsIChdKpjk/ZUrgBI6eDzHM0qGAyk7wgk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWm9ef%2FbtsIChdKpjk%2FZUrgBI6eDzHM0qGAyk7wgk%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;700&quot; height=&quot;249&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;248&quot;/&gt;&lt;/span&gt;&lt;/figure&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;----------------------- shadcn/ui 설치&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;7809&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-selectable-paragraph=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;vite.config.js 수정&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;4fd6&quot; style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-selectable-paragraph=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;타입스크립트를 사용하고 있기 때문에&lt;span&gt;&amp;nbsp;&lt;/span&gt;vite-plugin-dts&lt;span&gt;&amp;nbsp;&lt;/span&gt;와&lt;span&gt;&amp;nbsp;&lt;/span&gt;@types/node&lt;span&gt;&amp;nbsp;&lt;/span&gt;패패키지를 설치해준다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #242424; text-align: start;&quot; data-selectable-paragraph=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1721198728969&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm i -D vite-plugin-dts @types/node&lt;/code&gt;&lt;/pre&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;background-color: #ffffff; color: #242424; text-align: start;&quot;&gt;설치가 끝났으면, vite.config.js 를 아래와 같이 수정한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1721198744130&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import * as path from &quot;node:path&quot;;

// https://vitejs.dev/config/
export default defineConfig({
  resolve: {
    alias: {
      $lib: path.resolve(&quot;./src/lib&quot;),
    },
  },
  plugins: [react()],
})&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;jsconfig.json&lt;/b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(또는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;tsconfig.json&lt;/b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; color: #333333; text-align: start;&quot;&gt;) 파일에서 아래의 코드를 추가합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1721198774993&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&quot;baseUrl&quot;: &quot;.&quot;,
&quot;paths&quot;: {
    &quot;$lib&quot;: [&quot;./src/lib&quot;],
    &quot;$lib/*&quot;: [&quot;./src/lib/*&quot;]
},&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1721198786346&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
  &quot;compilerOptions&quot;: {
    &quot;target&quot;: &quot;ES2020&quot;,
    &quot;useDefineForClassFields&quot;: true,
    &quot;lib&quot;: [&quot;ES2020&quot;, &quot;DOM&quot;, &quot;DOM.Iterable&quot;],
    &quot;module&quot;: &quot;ESNext&quot;,
    &quot;skipLibCheck&quot;: true,

    /* Bundler mode */
    &quot;moduleResolution&quot;: &quot;bundler&quot;,
    &quot;allowImportingTsExtensions&quot;: true,
    &quot;resolveJsonModule&quot;: true,
    &quot;isolatedModules&quot;: true,
    &quot;noEmit&quot;: true,
    &quot;jsx&quot;: &quot;react-jsx&quot;,
    &quot;declaration&quot;: true,
    &quot;typeRoots&quot;: [&quot;./dist/index.d.ts&quot;],

    /* Linting */
    &quot;strict&quot;: true,
    &quot;noUnusedLocals&quot;: true,
    &quot;noUnusedParameters&quot;: true,
    &quot;noFallthroughCasesInSwitch&quot;: true,

    &quot;baseUrl&quot;: &quot;.&quot;,
    &quot;paths&quot;: {
      &quot;$lib&quot;: [&quot;./src/lib&quot;],
      &quot;$lib/*&quot;: [&quot;./src/lib/*&quot;]
    }
  },
  &quot;include&quot;: [&quot;lib&quot;],
  &quot;references&quot;: [{ &quot;path&quot;: &quot;./tsconfig.node.json&quot; }]
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;components.json&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1721198829450&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
  &quot;$schema&quot;: &quot;https://ui.shadcn.com/schema.json&quot;,
  &quot;style&quot;: &quot;default&quot;,
  &quot;rsc&quot;: true,
  &quot;tsx&quot;: true,
  &quot;tailwind&quot;: {
    &quot;config&quot;: &quot;tailwind.config.js&quot;,
    &quot;css&quot;: &quot;src/index.css&quot;,
    &quot;baseColor&quot;: &quot;slate&quot;,
    &quot;cssVariables&quot;: true,
    &quot;prefix&quot;: &quot;&quot;
  },
  &quot;aliases&quot;: {
    &quot;components&quot;: &quot;src/components&quot;,
    &quot;utils&quot;: &quot;$lib/utils&quot;
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기존(310)/ React</category>
      <author>조각남자</author>
      <guid isPermaLink="true">https://serverrefository.tistory.com/329</guid>
      <comments>https://serverrefository.tistory.com/329#entry329comment</comments>
      <pubDate>Wed, 17 Jul 2024 13:34:11 +0900</pubDate>
    </item>
  </channel>
</rss>