<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Code Space</title>
    <link>https://code-space.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Mon, 20 Jul 2026 08:28:56 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>owls</managingEditor>
    <image>
      <title>Code Space</title>
      <url>https://tistory1.daumcdn.net/tistory/4927154/attach/be45a5aa786f4964800148f37fe1aa70</url>
      <link>https://code-space.tistory.com</link>
    </image>
    <item>
      <title>[정보보안기사] 합격 후기</title>
      <link>https://code-space.tistory.com/443</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2025년 1회차 정보보안 실기 시험 후기 포스팅합니다~&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1179&quot; data-origin-height=&quot;653&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c0Nosp/dJMcacVUHfu/slsmJHNrzrjrtZdaBiRm5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c0Nosp/dJMcacVUHfu/slsmJHNrzrjrtZdaBiRm5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c0Nosp/dJMcacVUHfu/slsmJHNrzrjrtZdaBiRm5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0Nosp%2FdJMcacVUHfu%2FslsmJHNrzrjrtZdaBiRm5K%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;638&quot; height=&quot;353&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1179&quot; data-origin-height=&quot;653&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;시험 주관사가 KCA로 변경되어서 실기 시험도 약간 달라졌어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;물론 공부해야 보입니다^^&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;이론에 대한 자세한 설명이 많아서 이해가 쉬웠어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 필기, 실기 유료 강의 둘다 좋아서 시간되는 분들은 강의 듣는 것도 추천합니다. ( 내돈내산)&lt;/p&gt;
&lt;p 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-filename=&quot;blob&quot; data-origin-width=&quot;1485&quot; data-origin-height=&quot;1153&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AmTPj/dJMb99LFodH/iGh5dKegB96868P52QaFL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AmTPj/dJMb99LFodH/iGh5dKegB96868P52QaFL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AmTPj/dJMb99LFodH/iGh5dKegB96868P52QaFL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAmTPj%2FdJMb99LFodH%2FiGh5dKegB96868P52QaFL0%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;633&quot; height=&quot;491&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1485&quot; data-origin-height=&quot;1153&quot;/&gt;&lt;/span&gt;&lt;/figure&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;단원별로 나눠서 정리하고 개념을 확실히 이해하고 외우는게 빨리 합격하는 지름길같아요.&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;책은 이론서2권+기출1권으로 구성되어 있는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;범위가 너무 넓어서 정리할 엄두가 안나긴 할텐데 저는 정리했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개념 + 취약한 이유 + 대응방안 이런식으로 간단히 정리하는 방식으로 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어&lt;/p&gt;
&lt;pre id=&quot;code_1765274862802&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SMURF attack

- DoS 공격

- 출발지 IP를 희생자IP로 위조(IP Spoofing)한 후 증폭 네트워크로
  ICMP Echo Request를 브로드캐스트함으로써, 
  다수의 ICMP Echo Reply가 희생자에게 전달되어 서비스 거부를 유발시키는 공격기법

- 대응책
&amp;gt; 동일한 ICMP Echo Reply 패킷이 다량으로 발생한다면 해당 패킷들을 침입차단시스템으로 모두 차단(Drop)시킨다.

&amp;gt; 증폭 네트워크로 사용되는 것을 막기 위해 다른 네트워크로부터(외부로부터) 
  자신의 네트워크로 들어오는 Directed Broadcast 패킷을 허용하지 않도록 라우터 설정을 한다.
  라우터 명령어 : (config-if) no ip directed-broadcast

&amp;gt; 브로드캐스트 주소로 전송된 ICMP Echo Request 메시지에 대해 응답하지 않도록 시스템 설정을 한다.
  sysctl -w net.ipv4.icmp_echo_ignore_broadcast=1&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 해당 단어들을 조합해서 &lt;span style=&quot;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;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>etc</category>
      <category>내돈내산</category>
      <category>실기</category>
      <category>정보보안기사</category>
      <category>정보보안기사 공부</category>
      <category>정보보안기사 합격</category>
      <category>정보보안기사 합격 후기</category>
      <category>정보보안기사 후기</category>
      <category>정보보안산업기사</category>
      <category>합격</category>
      <category>후기</category>
      <author>owls</author>
      <guid isPermaLink="true">https://code-space.tistory.com/443</guid>
      <comments>https://code-space.tistory.com/443#entry443comment</comments>
      <pubDate>Thu, 11 Dec 2025 22:00:18 +0900</pubDate>
    </item>
    <item>
      <title>[Java] 왜 사용할까?</title>
      <link>https://code-space.tistory.com/442</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Java는 높은 성능과 안정성을 제공하여 전 세계적으로 널리 사용되고 있는 언어 중 하나입니다.&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;Java는 Sun Microsystems(현재 Oracle)에서 개발한 고수준의 객체지향 프로그래밍 언어로, 플랫폼 독립성을 특징으로 합니다. &quot;Write Once, Run Anywhere&quot;라는 철학을 기반으로 설계되었으며, 다양한 플랫폼에서 실행될 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;장점&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. &lt;b&gt;플랫폼 독립성&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java는 바이트코드(bytecode)를 생성하여 JVM(Java Virtual Machine)에서 실행됩니다. 이로 인해 Java로 작성된 애플리케이션은 JVM이 설치된 어떤 플랫폼에서도 동일하게 실행될 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;컴파일러(Java Compiler):&lt;/b&gt; Java 코드는 .java 파일로 작성되며, javac 컴파일러를 통해 .class 파일(바이트코드)로 변환됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JVM:&lt;/b&gt; 바이트코드는 JVM이 실행하므로 운영체제에 관계없이 동일한 동작을 보장합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. &lt;b&gt;객체지향 프로그래밍(OOP)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java는 객체지향 언어로 설계되었습니다. 주요 OOP 개념은 다음과 같습니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;클래스와 객체:&lt;/b&gt; 코드 재사용성과 유지보수를 지원합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;상속(Inheritance):&lt;/b&gt; 클래스 계층 구조를 통해 재사용성을 제공합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;다형성(Polymorphism):&lt;/b&gt; 메서드 오버로딩과 오버라이딩을 지원하여 유연성을 제공합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;캡슐화(Encapsulation):&lt;/b&gt; 데이터와 메서드를 하나의 단위로 묶어 보안을 강화합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. &lt;b&gt;자동 메모리 관리(Garbage Collection)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java는 Garbage Collector(GC)를 사용하여 메모리를 자동으로 관리합니다. 이를 통해 개발자는 메모리 할당 및 해제에 대한 부담을 덜 수 있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. &lt;b&gt;풍부한 표준 라이브러리&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java는 다양한 내장 라이브러리를 제공하여 개발 생산성을 높입니다. 주요 패키지는 다음과 같습니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;java.lang: 기본 클래스(예: String, Math, Object).&lt;/li&gt;
&lt;li&gt;java.util: 데이터 구조 및 유틸리티 클래스(예: ArrayList, HashMap).&lt;/li&gt;
&lt;li&gt;java.io: 파일 및 I/O 작업.&lt;/li&gt;
&lt;li&gt;java.net: 네트워크 프로그래밍.&lt;/li&gt;
&lt;li&gt;java.sql: 데이터베이스 연결 및 조작.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. &lt;b&gt;멀티스레딩 지원&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java는 내장된 스레드 모델을 통해 멀티스레딩 애플리케이션을 작성할 수 있습니다. Thread 클래스와 Runnable 인터페이스를 사용하여 병렬 프로세싱이 가능합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6. &lt;b&gt;안전성(Safety)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;포인터 사용 배제:&lt;/b&gt; Java는 포인터를 명시적으로 사용하지 않음으로써 메모리 접근 관련 오류를 줄입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;예외 처리(Exception Handling):&lt;/b&gt; 예외를 명확히 처리하여 안정적인 애플리케이션을 개발할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;7. &lt;b&gt;동적 로딩(Dynamic Loading)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java는 런타임 시 필요한 클래스들을 동적으로 로딩할 수 있습니다. 이를 통해 메모리 사용을 최적화하고 유연성을 제공합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;8. &lt;b&gt;네트워크 중심 설계&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java는 네트워크 프로그램을 쉽게 작성할 수 있도록 설계되었습니다. java.net 패키지를 사용하여 HTTP, FTP와 같은 프로토콜을 지원합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;9. &lt;b&gt;보안(Security)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;클래스 로더:&lt;/b&gt; 클래스 로딩 과정에서 보안을 강화합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;보안 매니저(Security Manager):&lt;/b&gt; 애플리케이션의 권한을 제한하여 잠재적인 악성 동작을 방지합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;10. &lt;b&gt;자바 에코시스템&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java는 다양한 프레임워크와 도구를 지원합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;프레임워크:&lt;/b&gt; Spring, Hibernate, Struts.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;빌드 도구:&lt;/b&gt; Maven, Gradle.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;애플리케이션 서버:&lt;/b&gt; Tomcat, JBoss, WebLogic.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;11. &lt;b&gt;사용 사례&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java는 다음과 같은 분야에서 널리 사용됩니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;웹 애플리케이션:&lt;/b&gt; Spring Framework.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;모바일 애플리케이션:&lt;/b&gt; Android 개발.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;기업용 소프트웨어:&lt;/b&gt; ERP, CRM 시스템.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;게임 개발:&lt;/b&gt; Minecraft와 같은 인기 게임.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;분산 시스템:&lt;/b&gt; Apache Hadoop, Kafka.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;단점&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-message-model-slug=&quot;gpt-4o&quot; data-message-id=&quot;217ddc0d-4f25-44f4-b094-e5115ea6fd2d&quot; data-message-author-role=&quot;assistant&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java는 강력한 언어이지만 특정 사용 사례나 상황에서 단점이 있을 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. &lt;b&gt;비교적 느린 실행 속도&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java는 JVM 위에서 실행되므로, 네이티브 언어(C, C++)에 비해 실행 속도가 느릴 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;원인:&lt;/b&gt; 바이트코드 해석 및 Just-In-Time(JIT) 컴파일 과정.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;해결책:&lt;/b&gt; 성능이 중요한 경우, JIT 최적화나 네이티브 코드로 변환하는 도구(GraalVM) 사용.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. &lt;b&gt;높은 메모리 사용&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java 애플리케이션은 JVM에서 실행되며, 가비지 컬렉션과 같은 메모리 관리 기능으로 인해 메모리 사용량이 비교적 높습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;영향:&lt;/b&gt; 제한된 메모리 환경(임베디드 시스템)에서 부적합할 수 있음.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;대안:&lt;/b&gt; 경량 언어(C, Rust)나 메모리 제어가 필요한 환경에서 다른 언어 선택.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. &lt;b&gt;가비지 컬렉션의 한계&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java의 가비지 컬렉터는 자동으로 메모리를 관리하지만, 다음과 같은 단점이 있습니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;예측 불가능성:&lt;/b&gt; 가비지 컬렉션이 실행될 때 성능 저하(GC Pause)가 발생할 수 있음.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;특정 상황에서 비효율:&lt;/b&gt; 메모리 누수(Leaky References) 문제를 야기할 가능성.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. &lt;b&gt;JVM 의존성&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java 애플리케이션은 JVM이 필요하기 때문에 실행 환경에서 JVM이 설치되어야 합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;문제점:&lt;/b&gt; 특정 환경에서 JVM 설치가 어렵거나 불가능한 경우 발생.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;대안:&lt;/b&gt; 네이티브 바이너리 언어(C++, Go) 사용.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. &lt;b&gt;데스크탑 GUI 개발의 비인기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java는 Swing, AWT, JavaFX와 같은 GUI 프레임워크를 제공하지만, 현대적인 데스크탑 애플리케이션 개발에서는 잘 사용되지 않습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;이유:&lt;/b&gt; 다른 언어나 도구(Qt, Electron)에 비해 UI 디자인이 어렵고 성능이 낮음.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6. &lt;b&gt;기술적 부채&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java는 오랜 역사를 가진 언어로, 기존 시스템을 유지보수하는 데 어려움을 겪을 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;원인:&lt;/b&gt; 이전 버전에서 작성된 코드와의 호환성을 유지해야 하기 때문.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;영향:&lt;/b&gt; 레거시 코드를 현대화하는 데 비용과 시간이 많이 소요됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;7. &lt;b&gt;배포의 복잡성&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java 애플리케이션 배포는 종종 JAR, WAR 파일 형태로 이루어지며, 실행 환경에 따라 복잡해질 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;문제:&lt;/b&gt; 종속성 충돌, JRE 버전 차이로 인한 호환성 문제.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;대안:&lt;/b&gt; 컨테이너화(Docker)로 배포 단순화.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;8. &lt;b&gt;실시간 시스템에 부적합&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java의 가비지 컬렉션과 JVM의 특성상, 엄격한 실시간 요구사항이 있는 시스템에는 적합하지 않을 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;문제:&lt;/b&gt; GC로 인해 응답 시간이 예측 불가능.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;대안:&lt;/b&gt; C, C++과 같은 실시간 특화 언어 사용.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;9. &lt;b&gt;비교적 느린 혁신&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java는 기존 코드를 보호하기 위해 신중하게 업데이트되므로, 다른 언어보다 새로운 기능 도입이 느릴 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;예:&lt;/b&gt; 람다식, 스트림 API 등은 상대적으로 늦게 추가됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java는 안정성과 플랫폼 독립성을 제공하지만, 특정 요구 사항에서는 단점이 될 수 있습니다. 약점을 극복하거나 보완하는 방법으로 다른 언어나 기술과의 조합이 고려될 수 있습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;</description>
      <category>Programming/Java</category>
      <author>owls</author>
      <guid isPermaLink="true">https://code-space.tistory.com/442</guid>
      <comments>https://code-space.tistory.com/442#entry442comment</comments>
      <pubDate>Thu, 26 Dec 2024 16:30:37 +0900</pubDate>
    </item>
    <item>
      <title>[SpringBoot] OOME, hprof 덤프 파일, 메모리 디버깅</title>
      <link>https://code-space.tistory.com/441</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;hprof 생성&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;hprof 덤프 파일을 생성하기 위해서는 JVM실행 옵션을 설정하면 됩니다.&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;Edit Configurations &amp;gt; Modify options &amp;gt; add VM options&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;add VM options 버튼을 클릭하면 추가 입력 칸이 생깁니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;803&quot; data-origin-height=&quot;692&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czep5w/btsIQyUICJF/w7AWGZfjng5QK0sls7ef41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czep5w/btsIQyUICJF/w7AWGZfjng5QK0sls7ef41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czep5w/btsIQyUICJF/w7AWGZfjng5QK0sls7ef41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fczep5w%2FbtsIQyUICJF%2Fw7AWGZfjng5QK0sls7ef41%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;803&quot; height=&quot;692&quot; data-origin-width=&quot;803&quot; data-origin-height=&quot;692&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; JVM 힙 메모리, OOME 발생시 덤프 파일을 생성하는 옵션, 덤프 파일 저장 경로를 입력합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1722408851341&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-Xmx50m
-Dfile.encoding=UTF-8
-Dconsole.encoding=UTF-8
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=E:\dump&lt;/code&gt;&lt;/pre&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;715&quot; data-origin-height=&quot;220&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/riuQS/btsIRehbrDg/PGKk5zpEknG7dSf09Nnr1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/riuQS/btsIRehbrDg/PGKk5zpEknG7dSf09Nnr1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/riuQS/btsIRehbrDg/PGKk5zpEknG7dSf09Nnr1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FriuQS%2FbtsIRehbrDg%2FPGKk5zpEknG7dSf09Nnr1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;715&quot; height=&quot;220&quot; data-origin-width=&quot;715&quot; data-origin-height=&quot;220&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Shallow Size&lt;/b&gt;: 객체를 저장하는 데에 사용된 메모리&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Retianed Size&lt;/b&gt;: 이 객체를 유지하는 데에 사용된 메모리 크기이다. 객체를 저장하는 데에 사용된 메모리 + 객체가 사용하고 있는 다른 객체를 저장하는 데에 사용된 메모리의 합으로 보면 된다. 이 크기는, GC으로 회수할 수 있는 메모리 크기로 볼 수 있다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;힙 메모리를 트러블 슈틸할 때는 Retained Size를 기준으로 정렬해서 상위에 나오는 Class위주로 디버깅하면 수월합니다.&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;인텔리제이로 hprof파일을 열면 메모리를 확인할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Summary도 제공해서 파악하기 쉽네요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1382&quot; data-origin-height=&quot;411&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PtYsT/btsIRX0j8AO/zcS6qYebDIHb1ORE2CRFL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PtYsT/btsIRX0j8AO/zcS6qYebDIHb1ORE2CRFL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PtYsT/btsIRX0j8AO/zcS6qYebDIHb1ORE2CRFL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPtYsT%2FbtsIRX0j8AO%2FzcS6qYebDIHb1ORE2CRFL1%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;1382&quot; height=&quot;411&quot; data-origin-width=&quot;1382&quot; data-origin-height=&quot;411&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;602&quot; data-origin-height=&quot;169&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxM0ZZ/btsIQwbBW0k/A37DIX17jKC3KZsdnhlLzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxM0ZZ/btsIQwbBW0k/A37DIX17jKC3KZsdnhlLzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxM0ZZ/btsIQwbBW0k/A37DIX17jKC3KZsdnhlLzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxM0ZZ%2FbtsIQwbBW0k%2FA37DIX17jKC3KZsdnhlLzK%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;602&quot; height=&quot;169&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;169&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 data-ke-size=&quot;size26&quot;&gt;인델리제이로 메모리 디버깅&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Profile ~ 버튼을 눌러 인텔리제이에서 제공하는 프로파일링으로 결과를 분석할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;520&quot; data-origin-height=&quot;162&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bY3RY7/btsIRPIaBaB/07oycG55k9ufohkvXTYP30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bY3RY7/btsIRPIaBaB/07oycG55k9ufohkvXTYP30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bY3RY7/btsIRPIaBaB/07oycG55k9ufohkvXTYP30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbY3RY7%2FbtsIRPIaBaB%2F07oycG55k9ufohkvXTYP30%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;520&quot; height=&quot;162&quot; data-origin-width=&quot;520&quot; data-origin-height=&quot;162&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;1046&quot; data-origin-height=&quot;248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eptL1E/btsISJUQRpU/dY7LtkUCEzIwZtZkc2fF8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eptL1E/btsISJUQRpU/dY7LtkUCEzIwZtZkc2fF8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eptL1E/btsISJUQRpU/dY7LtkUCEzIwZtZkc2fF8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeptL1E%2FbtsISJUQRpU%2FdY7LtkUCEzIwZtZkc2fF8k%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;1046&quot; height=&quot;248&quot; data-origin-width=&quot;1046&quot; data-origin-height=&quot;248&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;Profiler &amp;gt; CPU and Memory Live Charts&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;메모리 분석1&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OOME가 발생한 애플리케이션의 메모리를 분석하려고 합니다.&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;로그 기능을 유틸성 로그 클래스로 구현하였는데, 로그를 바로바로 파일로 쓰지 않고 ArrayList(메모리)에 모아서 들고 있다가 파일로 쓰도록 하는 기능을 구현하려고 했습니다. 파일로 쓰는 것은 IO가 계속 발생하고 CPU 작업이 수행되야 하기 때문에 비번하게 로그를 남기는 것은 문맥교환 관점에서 비효율적이라 판단하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇지만 OOM이 발생하게 되었습니다.&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;OOM이 발생했던 순간의 Heap dump파일을 보면&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;605&quot; data-origin-height=&quot;238&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DkvFI/btsISe8DtVQ/3MLLrqjlrUaEVqj9odXTq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DkvFI/btsISe8DtVQ/3MLLrqjlrUaEVqj9odXTq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DkvFI/btsISe8DtVQ/3MLLrqjlrUaEVqj9odXTq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDkvFI%2FbtsISe8DtVQ%2F3MLLrqjlrUaEVqj9odXTq1%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;605&quot; height=&quot;238&quot; data-origin-width=&quot;605&quot; data-origin-height=&quot;238&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LocalDateTime객체가 540276번 사용되고, 힙 메모리의 50MB중 38.9MB를 사용한 것을 확인할 수 있습니다.&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;LocalDateTime.now()함수를 사용하였는데 객체가 계속 생성되어 쌓이는 것도 확인할 수 있었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;687&quot; data-origin-height=&quot;545&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PGCJc/btsIQzlVswO/g7QcycN7toQbX77jKLulTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PGCJc/btsIQzlVswO/g7QcycN7toQbX77jKLulTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PGCJc/btsIQzlVswO/g7QcycN7toQbX77jKLulTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPGCJc%2FbtsIQzlVswO%2Fg7QcycN7toQbX77jKLulTk%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;687&quot; height=&quot;545&quot; data-origin-width=&quot;687&quot; data-origin-height=&quot;545&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;LocalDateTime.now() 메소드의 내부를 타고 들어가 보면 LocalDate, LocalTime 객체들을 사용하고 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;now() 메소드를 호출하여 사용한 만큼 메모리 사용량이 증가한 것이였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;237&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cChaMw/btsIRvJTdJo/78hSVemKHvLLKSJG8DqQcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cChaMw/btsIRvJTdJo/78hSVemKHvLLKSJG8DqQcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cChaMw/btsIRvJTdJo/78hSVemKHvLLKSJG8DqQcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcChaMw%2FbtsIRvJTdJo%2F78hSVemKHvLLKSJG8DqQcK%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;1170&quot; height=&quot;237&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;237&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 data-ke-size=&quot;size23&quot;&gt;첫번째 시도&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LocalDateTime.now() 메소드로 LocalDate, LocalTime객체들이 할당되어 ArrayList에 저장되기에 이를 해결하는 방법으로&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LoalDateTime 타입으로 저장하지 않고 String으로 변환해서 저장하는 방법으로 코드를 수정하였습니다.&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;pre id=&quot;code_1722438108942&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    private static final ArrayList&amp;lt;LocalDateTime&amp;gt; arrayTimeList = new ArrayList&amp;lt;&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;수정 코드&lt;/p&gt;
&lt;pre id=&quot;code_1722438114799&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    private static final ArrayList&amp;lt;String&amp;gt; arrayLogList = new ArrayList&amp;lt;&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;하지만 여전히 OOME 에러가 발생했습니다.&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;메모리 분석2&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 hprof 덤프파일을 통해 메모리 분석을 해보겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;829&quot; data-origin-height=&quot;143&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxm8Pa/btsITgLzzVN/33YzGXecjkfsk6v5IpAtB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxm8Pa/btsITgLzzVN/33YzGXecjkfsk6v5IpAtB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxm8Pa/btsITgLzzVN/33YzGXecjkfsk6v5IpAtB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbxm8Pa%2FbtsITgLzzVN%2F33YzGXecjkfsk6v5IpAtB0%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;829&quot; height=&quot;143&quot; data-origin-width=&quot;829&quot; data-origin-height=&quot;143&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;div style=&quot;background-color: #1e1f22; color: #bcbec4;&quot;&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;LocalDateTime.now().toString() &lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 메소드로 String 타입으로 저장하도록 했지만 메모리 덤프에서도 String객체가 558,211번 호출되고, 힙 메모리의 50MB중 40.08MB이 사용되었습니다.&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;ArrayList.add() 연산에서 String을 저장하는데 이 때도 String객체가 계속 할당되어 리스트에 저장되고 해제되지 않아 발생한 문제였습니다.&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;OOME가 발생한 오류 메시지를 보면&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;760&quot; data-origin-height=&quot;161&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LxWZm/btsIRY56kWg/1BK6WZzw3O3P9MTflam2HK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LxWZm/btsIRY56kWg/1BK6WZzw3O3P9MTflam2HK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LxWZm/btsIRY56kWg/1BK6WZzw3O3P9MTflam2HK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLxWZm%2FbtsIRY56kWg%2F1BK6WZzw3O3P9MTflam2HK%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;760&quot; height=&quot;161&quot; data-origin-width=&quot;760&quot; data-origin-height=&quot;161&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;add() -&amp;gt; grow() -&amp;gt; copyOf() 메소드가 호출된 것을 확인할 수 있습니다.&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;ArrayList는 initial capacity = 10이지만, 가변 길이입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ArrayList가 꽉 찼을 때 약 1.5배 배열의 크기를 증가시켜주는 로직이 내부에 구현되어 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;add() 메서드 내부에 현재 크기가 모두 사용되었다면 grow()메소드를 호출합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;grow()메소드는 배열의 크기가 부족할 때 배열을 확장시켜주는 함수입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;newCapacity로 (이전 배열 크기) + (이전 배열 크기 / 2) = 1.5배 크기로 배열 확장하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 상에는 Shift연산으로 구현되어 있습니다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1f22; color: #bcbec4;&quot;&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;oldCapacity &amp;gt;&amp;gt; 1  &lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Initial capacity 10에서 1개의 원소를 추가하게 되면 15로 늘어나게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1010(2) -&amp;gt; shift -&amp;gt; 0101(2) 로 10-&amp;gt; 15 로 계산됩니다.&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;ArrayList의 용량을 증가시키고 copyOf()메소드로 기존 데이터를 복사해 새로운 객체를 할당합니다 -&amp;gt; Array.newInstance()&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1211&quot; data-origin-height=&quot;249&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1DUr0/btsIQJu4cMw/6CkJJZvsBxf7rTxl3wT1O1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1DUr0/btsIQJu4cMw/6CkJJZvsBxf7rTxl3wT1O1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1DUr0/btsIQJu4cMw/6CkJJZvsBxf7rTxl3wT1O1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1DUr0%2FbtsIQJu4cMw%2F6CkJJZvsBxf7rTxl3wT1O1%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;1211&quot; height=&quot;249&quot; data-origin-width=&quot;1211&quot; data-origin-height=&quot;249&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;ArrayList는 아래와 같이 static final변수로 선언되어 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1722438666544&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    private static final ArrayList&amp;lt;String&amp;gt; arrayLogList = new ArrayList&amp;lt;&amp;gt;();&lt;/code&gt;&lt;/pre&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;h3 data-ke-size=&quot;size23&quot;&gt;문제점&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. ArrayList를 static 으로 선언하여 GC의 대상이 되지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. ArrayList는 가변길이인데 원소를 계속 저장하기만 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. add() 하면 clear()를 호출하여 메모리 해제하는 로직이 없다.&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;ArrayList 를 static변수로 선언하여 데이터를 가지고 수집하고 있었는데 이는 잘못된 코드였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;static은 애플리케이션이 실행 중인 런타임 시에 계속 메모리에 올라가 있기에 GC의 대상이 되지 않습니다. 더더욱 메모리 할당, 해제에 신경을 써야 하고 되도록 static에는 상태를 저장하는 변수를 선언하면 안됩니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;해결&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;static 변수에 상태를 저장하면 안되지만 유틸성 클래스로 구현하였기에 ArrayList에 저장되는 원소의 사이즈를 체크하여 clear()를 호출하여 객체가 해제될 수 있게 수정하였습니다.&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;&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;/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;a href=&quot;https://codingdreamtree.tistory.com/44&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://codingdreamtree.tistory.com/44&lt;/a&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://romainefabula.tistory.com/89&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://romainefabula.tistory.com/89&lt;/a&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://americanopeople.tistory.com/428&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://americanopeople.tistory.com/428&lt;/a&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://mangkyu.tistory.com/336&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://mangkyu.tistory.com/336&lt;/a&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;</description>
      <category>Programming/SpringBoot</category>
      <author>owls</author>
      <guid isPermaLink="true">https://code-space.tistory.com/441</guid>
      <comments>https://code-space.tistory.com/441#entry441comment</comments>
      <pubDate>Wed, 31 Jul 2024 16:20:02 +0900</pubDate>
    </item>
    <item>
      <title>[SpringBoot] batchUpdate()를 활용한 bulkInsert</title>
      <link>https://code-space.tistory.com/440</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;saveAll()&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;jpa에서 제공하는 saveAll() 메소드를 사용하면 100건 등록시 insert가 100번 수행됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;100명의 사용자가 각각&amp;nbsp; saveAll()메소드를 사용한다면 100*100 = 10000 번의 insert가 수행되는 것입니다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;spring data jpa구현체인 SimpleJpaRepository를 확인해보면 saveAll() 메소드 내부에서 for문을 통해 save() 메소드를 호출합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1722323452746&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Override
	@Transactional
	public &amp;lt;S extends T&amp;gt; List&amp;lt;S&amp;gt; saveAll(Iterable&amp;lt;S&amp;gt; entities) {

		Assert.notNull(entities, &quot;Entities must not be null&quot;);

		List&amp;lt;S&amp;gt; result = new ArrayList&amp;lt;&amp;gt;();

		for (S entity : entities) {
			result.add(save(entity));
		}

		return result;
	}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/spring-projects/spring-data-jpa/blob/main/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/spring-projects/spring-data-jpa/blob/main/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;JPA Batch insert 의 성능 이슈&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;여러 건의 삽입을 할 때 여러 개의 쿼리가 나가는 것을 단건 삽입,&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;하나의 쿼리로 나가는게 Bulk 삽입입니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;쿼리를 던지고 응답을 받은 뒤 다음 쿼리를 전달하기 때문에 Insert의 경우에는 지연이 많이 발생하지만&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;하나의 트랜잭션으로 묶이는 Batch Insert는 하나의 쿼리문으로 수행하기 때문에 성능이 훨씬 좋습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;save(), saveAll() 은 모두 단건 삽입에 해당합니다.&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;MySQL의 auto_increment옵션으로 기본키를 연속적으로 생성해주는 옵션을 사용했습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL은 jpa에서 기본키 생성 전략으로 GenerationType.IDENTITY를 가져갑니다.&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;springboot에서 jpa 오픈소스로 Hibernate를 사용하고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Hibernate는 batch insert를 제공하지만 기본키 생성 전략중 IDENTITY전략에서는 Hibernate가 batch insert를 비활성화 하기 때문에 사용이 불가능합니다.&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;i&gt;IDENTITY : 기본키 생성 전략&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비활성화를 하는 이유는 영속성 컨텍스트 내부에 엔티티를 식별할 때 엔티티ID(PK)와 타입으로 식별하지만, IDENTITY전략의 경우 DB에 INSERT한 후&amp;nbsp; ID(PK)확인이 가능하기 때문입니다.&amp;nbsp;( @Id 로 지정된 필드가 비어있기에 영속화가 불가능하다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;즉, IDENTITY방식 때문에 Batch Insert를 JPA에서 사용할 수 없습니다. 이유는 DB에 Insert가 되어야 Id값을 알 수 있다는 JPA의 &lt;span style=&quot;background-color: #99cefa;&quot;&gt;쓰기지연&lt;/span&gt; 특성 때문입니다.&lt;/b&gt;&lt;/u&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;그렇기 때문에 jpa에서 bulk insert할 때 N번 째 데이터의 기본키(식별자)를 채번하기 위해 N-1번까지 insert가 되어있는 상태에서 데이터를 insert하고 생성된 기본키를 가져오게 되어서 실질적으로 N번의 insert쿼리가 발생합니다.&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;jpa의 saveAll()메소드를 사용한다면 성능 개선이 필요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본키 생성 전략 변경, JDBC batchUpdate 사용 등 다양한 방법이 있습니다.&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;기본키 생성 전략을 IDENTITY대신 채번하지 않는 SEQUENCE 또는 TABLE방식을 사용하는 방법이 있다. 하지만 DB스키마를 변경(테이블의 구조를 변경)해야 합니다.&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;그렇기에 JDBC batchUpdate를 사용하여 성능 개선하는 방법을 사용하겠습니다.&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;JDBC batchUpdate()&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;application.properties 설정에서 bulk Insert를 사용하도록 설정을 추가합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;rewriteBatchedStatements=true&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1722325119447&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;spring.datasource.jdbc-url=jdbc:mysql://localhost:3306/database?serverTimezone=UTC&amp;amp;rewriteBatchedStatements=true&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;JDBC구현 클래스&lt;/p&gt;
&lt;pre id=&quot;code_1722325239031&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    public void saveAll(List&amp;lt;ImageDto&amp;gt; imageDtoList, Long postId){
        String sql = &quot;INSERT INTO images (post_id, path, original_name, size) VALUES (?,?,?,?)&quot;;

        BatchPreparedStatementSetter batchPreparedStatementSetter = new BatchPreparedStatementSetter() {
            @Override
            public void setValues(PreparedStatement ps, int i) throws SQLException {
                ImageDto imageDto = imageDtoList.get(i);
                ps.setLong(1, postId);
                ps.setString(2, imageDto.getFilePath());
                ps.setString(3, imageDto.getOriginalName());
                ps.setLong(4, imageDto.getFileSize());
            }

            @Override
            public int getBatchSize() {
                return imageDtoList.size();
            }
        };
        jdbcTemplate.batchUpdate(sql, batchPreparedStatementSetter);
    }&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;h2 data-ke-size=&quot;size26&quot;&gt;결과&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;jpa saveall() 메소드 실행 시간 측정&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;9개 이미지 정보 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;--------코드 실행 시간(s) :&lt;span style=&quot;background-color: #99cefa;&quot;&gt;&lt;b&gt; 0.011720099 &lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;340&quot; data-origin-height=&quot;96&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lfiyr/btsIRXey6Bh/8r4XvtiNZfpTjuiVSxhT61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lfiyr/btsIRXey6Bh/8r4XvtiNZfpTjuiVSxhT61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lfiyr/btsIRXey6Bh/8r4XvtiNZfpTjuiVSxhT61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flfiyr%2FbtsIRXey6Bh%2F8r4XvtiNZfpTjuiVSxhT61%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;340&quot; height=&quot;96&quot; data-origin-width=&quot;340&quot; data-origin-height=&quot;96&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;jpa saveall() 메소드 실행 시간 측정&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1개 이미지 정보 저장&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;334&quot; data-origin-height=&quot;92&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Rea3U/btsISOnMQjO/Kc54HepQnODKdIDsCB9lt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Rea3U/btsISOnMQjO/Kc54HepQnODKdIDsCB9lt0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Rea3U/btsISOnMQjO/Kc54HepQnODKdIDsCB9lt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRea3U%2FbtsISOnMQjO%2FKc54HepQnODKdIDsCB9lt0%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;334&quot; height=&quot;92&quot; data-origin-width=&quot;334&quot; data-origin-height=&quot;92&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;jdbc batchupdate 코드 실행 시간 측정 &amp;larr; jdbc에 batch설정 전&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;9개 이미지 정보 저장&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;341&quot; data-origin-height=&quot;100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwoitW/btsIQF6Q61E/BO4M1MzZjNKfNQgS608qx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwoitW/btsIQF6Q61E/BO4M1MzZjNKfNQgS608qx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwoitW/btsIQF6Q61E/BO4M1MzZjNKfNQgS608qx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwoitW%2FbtsIQF6Q61E%2FBO4M1MzZjNKfNQgS608qx0%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;341&quot; height=&quot;100&quot; data-origin-width=&quot;341&quot; data-origin-height=&quot;100&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;jdbc batchupdate 코드 실행 시간 측정 &amp;larr; jdbc batch설정 후&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;9개 이미지 정보 저장&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;--------코드 실행 시간(s) : &lt;span style=&quot;background-color: #99cefa;&quot;&gt;&lt;b&gt;0.0050107 &lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;360&quot; data-origin-height=&quot;95&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/caXPAN/btsIQvcaFAF/m7xd9QHqVMLhSRR7kd5KUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/caXPAN/btsIQvcaFAF/m7xd9QHqVMLhSRR7kd5KUk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/caXPAN/btsIQvcaFAF/m7xd9QHqVMLhSRR7kd5KUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcaXPAN%2FbtsIQvcaFAF%2Fm7xd9QHqVMLhSRR7kd5KUk%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;360&quot; height=&quot;95&quot; data-origin-width=&quot;360&quot; data-origin-height=&quot;95&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;jpa saveAll() 대비 jdbc batchUpdate사용 시&lt;span style=&quot;background-color: #f3c000;&quot;&gt;&lt;b&gt; 약 2.3배 빨라졌습니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;참고&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/spring-projects/spring-data-jpa/blob/main/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/spring-projects/spring-data-jpa/blob/main/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Programming/SpringBoot</category>
      <author>owls</author>
      <guid isPermaLink="true">https://code-space.tistory.com/440</guid>
      <comments>https://code-space.tistory.com/440#entry440comment</comments>
      <pubDate>Tue, 30 Jul 2024 16:49:48 +0900</pubDate>
    </item>
    <item>
      <title>[Project] NCP Centos7 Kubernetes</title>
      <link>https://code-space.tistory.com/439</link>
      <description>&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: #fafafa; color: #383a42; text-align: start;&quot;&gt;java -jar 파일이름.jar&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;p data-ke-size=&quot;size16&quot;&gt;NCP에서 CentOS-Base.repo의 설정을 바꿔야 한다. 아래 포스팅을 참고해서 수정하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://code-space.tistory.com/438&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://code-space.tistory.com/438&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1720502940404&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Project] NCP CentOS7 cannot find a valid baseurl for repo base/7/x86_64&quot; data-og-description=&quot;naver cloud platfom에서&amp;nbsp;CentOS7 서버를 생성하고 Mysql8을 설치하려는 중에 설치가 안되는 오류가 났다.&amp;nbsp;&amp;nbsp;mysql repository설치하고 repository목록 확인을 하면 status가 다 0이다.설치에 필요한 내부 파일들이&quot; data-og-host=&quot;code-space.tistory.com&quot; data-og-source-url=&quot;https://code-space.tistory.com/438&quot; data-og-url=&quot;https://code-space.tistory.com/438&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/JeLR0/hyWzu3om2q/z2jMsQ5RrfANa7JHo4qp3k/img.png?width=800&amp;amp;height=270&amp;amp;face=0_0_800_270,https://scrap.kakaocdn.net/dn/Nj23k/hyWzACxnSU/gGdIqODF7hSDstpkMAZP2k/img.png?width=800&amp;amp;height=270&amp;amp;face=0_0_800_270,https://scrap.kakaocdn.net/dn/9aOQ2/hyWzBOYXbp/kBu1xevQky1xDUDw83U0K0/img.png?width=884&amp;amp;height=783&amp;amp;face=0_0_884_783&quot;&gt;&lt;a href=&quot;https://code-space.tistory.com/438&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://code-space.tistory.com/438&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/JeLR0/hyWzu3om2q/z2jMsQ5RrfANa7JHo4qp3k/img.png?width=800&amp;amp;height=270&amp;amp;face=0_0_800_270,https://scrap.kakaocdn.net/dn/Nj23k/hyWzACxnSU/gGdIqODF7hSDstpkMAZP2k/img.png?width=800&amp;amp;height=270&amp;amp;face=0_0_800_270,https://scrap.kakaocdn.net/dn/9aOQ2/hyWzBOYXbp/kBu1xevQky1xDUDw83U0K0/img.png?width=884&amp;amp;height=783&amp;amp;face=0_0_884_783');&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;[Project] NCP CentOS7 cannot find a valid baseurl for repo base/7/x86_64&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;naver cloud platfom에서&amp;nbsp;CentOS7 서버를 생성하고 Mysql8을 설치하려는 중에 설치가 안되는 오류가 났다.&amp;nbsp;&amp;nbsp;mysql repository설치하고 repository목록 확인을 하면 status가 다 0이다.설치에 필요한 내부 파일들이&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;code-space.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1720516118692&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;yum update -y

yum install -y yum-utils&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;pre id=&quot;code_1720516163072&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum install docker-ce docker-ce-cli containerd.io -y

docker -v

docker systemctl start docker&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1720516211535&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl start docker

systemctl enable docker

systemctl status docker&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;pre id=&quot;code_1720516350869&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vim /etc/yum.repos.d/kubernetes.repo&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;616&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ecTzlj/btsIsM5Vdz5/B192aDmZWKsbccUh2UzEbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ecTzlj/btsIsM5Vdz5/B192aDmZWKsbccUh2UzEbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ecTzlj/btsIsM5Vdz5/B192aDmZWKsbccUh2UzEbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FecTzlj%2FbtsIsM5Vdz5%2FB192aDmZWKsbccUh2UzEbK%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;128&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;128&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_1720516276713&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

systemctl enable kubelet &amp;amp;&amp;amp; systemctl start kubelet

kubeadm version -o short
kubectl version --short
kubectl version
kubelet --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;pre id=&quot;code_1720516480983&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vim /etc/hosts

...
[서버 ip]	[서버 이름]&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;kubeadm init&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령어 입력하고 에러 발생하면 아래 작업 해야 함&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;$ sudo vi /etc/containerd/config.toml&lt;br /&gt;disabled_plugins = [&quot;cri&quot;]&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; 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;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1720516554872&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;export KUBECONFIG=/etc/kubernetes/admin.conf&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;pre id=&quot;code_1720516617234&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; vim deployment.yaml&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;pre id=&quot;code_1720516648968&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;kubectl apply -f deployment.yaml

kubectl get deployment
kubectl get pod&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1720516670954&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vim service.yaml
kubectl apply -f service.yaml
kubectl get service&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1720516703176&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;kubectl get all

kubectl scale deployment devops-spring-deployment --replicas=0
kubectl scale deployment devops-spring-deployment --replicas=1&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;8080&lt;/p&gt;
&lt;pre class=&quot;awk&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;cp /etc/kubernetes/admin.conf $HOME/.kube/config&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;/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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/change-package-repository/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/change-package-repository/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://coding-business.tistory.com/134&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://coding-business.tistory.com/134&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://emgc.tistory.com/149&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://emgc.tistory.com/149&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yang1s.tistory.com/33&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yang1s.tistory.com/33&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://toridori.tistory.com/186&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://toridori.tistory.com/186&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://medium.com/finda-tech/kubernetes-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%A0%95%EB%A6%AC-fccd4fd0ae6&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://medium.com/finda-tech/kubernetes-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%A0%95%EB%A6%AC-fccd4fd0ae6&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://clasie.tistory.com/21&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://clasie.tistory.com/21&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yes-admit.tistory.com/123&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yes-admit.tistory.com/123&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://deoking.tistory.com/6&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://deoking.tistory.com/6&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://velog.io/@airoasis/Spring-Boot-%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A5%BC-%EC%9C%84%ED%95%9C-Kubernetes-%EC%84%A4%EC%A0%95&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://velog.io/@airoasis/Spring-Boot-%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A5%BC-%EC%9C%84%ED%95%9C-Kubernetes-%EC%84%A4%EC%A0%95&lt;/a&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://velog.io/@shdrnrhd113/kubectl-%EB%A1%9C-service-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://velog.io/@shdrnrhd113/kubectl-%EB%A1%9C-service-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0&lt;/a&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;오류 해결&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.inflearn.com/questions/829424/%EB%A7%88%EC%8A%A4%ED%84%B0-%EB%85%B8%EB%93%9C-%EC%B4%88%EA%B8%B0%ED%99%94-%EB%8B%A8%EA%B3%84%EC%97%90%EC%84%9C-kubeadm-init-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%82%AC%EC%9A%A9%EC%8B%9C-%EC%97%90%EB%9F%AC-%EB%B0%9C%EC%83%9D&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.inflearn.com/questions/829424/%EB%A7%88%EC%8A%A4%ED%84%B0-%EB%85%B8%EB%93%9C-%EC%B4%88%EA%B8%B0%ED%99%94-%EB%8B%A8%EA%B3%84%EC%97%90%EC%84%9C-kubeadm-init-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%82%AC%EC%9A%A9%EC%8B%9C-%EC%97%90%EB%9F%AC-%EB%B0%9C%EC%83%9D&lt;/a&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;springboot 쿠버네티스 배포&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://velog.io/@sgwon1996/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%ED%99%98%EA%B2%BD%EC%97%90-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%96%B4%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://velog.io/@sgwon1996/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%ED%99%98%EA%B2%BD%EC%97%90-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%96%B4%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0&lt;/a&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;jenkins&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://guide.ncloud-docs.com/docs/devtools-devtools-1-1&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://guide.ncloud-docs.com/docs/devtools-devtools-1-1&lt;/a&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://velog.io/@kimseungki94/Jenkins-vs-Github-Action-%EC%96%B4%EB%96%A4%EA%B1%B8-%EC%93%B0%EB%8A%94%EA%B2%8C-%EC%A2%8B%EC%9D%84%EA%B9%8C&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://velog.io/@kimseungki94/Jenkins-vs-Github-Action-%EC%96%B4%EB%96%A4%EA%B1%B8-%EC%93%B0%EB%8A%94%EA%B2%8C-%EC%A2%8B%EC%9D%84%EA%B9%8C&lt;/a&gt;&lt;/p&gt;</description>
      <category>Project</category>
      <author>owls</author>
      <guid isPermaLink="true">https://code-space.tistory.com/439</guid>
      <comments>https://code-space.tistory.com/439#entry439comment</comments>
      <pubDate>Mon, 8 Jul 2024 10:21:53 +0900</pubDate>
    </item>
    <item>
      <title>[Project] NCP CentOS7 cannot find a valid baseurl for repo base/7/x86_64</title>
      <link>https://code-space.tistory.com/438</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;naver cloud platfom에서&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CentOS7 서버를 생성하고 Mysql8을 설치하려는 중에 설치가 안되는 오류가 났다.&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;mysql repository설치하고 repository목록 확인을 하면 status가 다 0이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;954&quot; data-origin-height=&quot;322&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rSokw/btsIoZqTQRW/DWPieJfHDXoj8hH6gKnbV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rSokw/btsIoZqTQRW/DWPieJfHDXoj8hH6gKnbV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rSokw/btsIoZqTQRW/DWPieJfHDXoj8hH6gKnbV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrSokw%2FbtsIoZqTQRW%2FDWPieJfHDXoj8hH6gKnbV1%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;954&quot; height=&quot;322&quot; data-origin-width=&quot;954&quot; data-origin-height=&quot;322&quot;/&gt;&lt;/span&gt;&lt;/figure&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;pre id=&quot;code_1720160005820&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;yum install -y mysql64-community-release-el7-1.noarch.rpm&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;761&quot; data-origin-height=&quot;82&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxWfmt/btsIoODhpEs/MjkXLL13DDr2CGUg1P8Zg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxWfmt/btsIoODhpEs/MjkXLL13DDr2CGUg1P8Zg0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxWfmt/btsIoODhpEs/MjkXLL13DDr2CGUg1P8Zg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxWfmt%2FbtsIoODhpEs%2FMjkXLL13DDr2CGUg1P8Zg0%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;761&quot; height=&quot;82&quot; data-origin-width=&quot;761&quot; data-origin-height=&quot;82&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Error: Nothing to do 에러가 난다.&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;yum update 명령어도 안된다&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;u&gt;&lt;b&gt;DNS nameserver 추가&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;검색을 해보니 DNS오류라고 많이 나온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글 nameserver도 추가해야 하다고 해서 추가해봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1720160015497&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vim /etc/resolv.conf&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;374&quot; data-origin-height=&quot;82&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VThMB/btsIouE12On/5MI3v6ZiUh51ad6ByQrr5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VThMB/btsIouE12On/5MI3v6ZiUh51ad6ByQrr5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VThMB/btsIouE12On/5MI3v6ZiUh51ad6ByQrr5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVThMB%2FbtsIouE12On%2F5MI3v6ZiUh51ad6ByQrr5k%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;374&quot; height=&quot;82&quot; data-origin-width=&quot;374&quot; data-origin-height=&quot;82&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1720160045658&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;nameserver 8.8.8.8
nameserver 8.8.4.4&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NCP를 사용중이라 다른 nameserver를 적어도 초기화 된다.&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;size18&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;●&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;u&gt;&lt;b&gt;방화벽 확인&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720160206435&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl status firewalld&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;835&quot; data-origin-height=&quot;82&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ergVje/btsIo1bgoHe/LJgZOxdJmZxc2wpjK5oAlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ergVje/btsIo1bgoHe/LJgZOxdJmZxc2wpjK5oAlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ergVje/btsIo1bgoHe/LJgZOxdJmZxc2wpjK5oAlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FergVje%2FbtsIo1bgoHe%2FLJgZOxdJmZxc2wpjK5oAlK%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;835&quot; height=&quot;82&quot; data-origin-width=&quot;835&quot; data-origin-height=&quot;82&quot;/&gt;&lt;/span&gt;&lt;/figure&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;size18&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;●&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;u&gt;&lt;b&gt;CentOS 레포지토리 enable변경&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720160951446&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vim /etc/yum.repos.d/CentOS-Base.repo&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맨 아래 있는 enable = 0 -&amp;gt; enable=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;yum 에러 계속 나온다!&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;span style=&quot;color: #333333; text-align: start;&quot;&gt;●&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;u&gt;&lt;b&gt;파일 옮겨서 실행&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로컬 PC는 윈도우 환경이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로컬에 다운로드 받은 파일을 리눅스로 파일 전송을 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1720160352386&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;scp -P 3033 mysql84-community-release-el7-1.noarch.rpm root@[보낼IP주소]:/home/&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-P : port번호 지정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1720160466654&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;rpm -Uvh mysql84-community-release-el7-1.noarch.rpm&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;899&quot; data-origin-height=&quot;694&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8ysz7/btsIpMxHv5p/OYz7bZpW7Cw4Pw7Ea8wubK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8ysz7/btsIpMxHv5p/OYz7bZpW7Cw4Pw7Ea8wubK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8ysz7/btsIpMxHv5p/OYz7bZpW7Cw4Pw7Ea8wubK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8ysz7%2FbtsIpMxHv5p%2FOYz7bZpW7Cw4Pw7Ea8wubK%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;899&quot; height=&quot;694&quot; data-origin-width=&quot;899&quot; data-origin-height=&quot;694&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;/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;yum update, yun -y install wget curl&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;yum 명령어는 모두 안된다.&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;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;br /&gt;●&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;u&gt;&lt;b&gt;base url 테스트&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720161470988&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt; curl http://mirrorlist.centos.org/?release=7&amp;amp;arch=x86_64&amp;amp;repo=extras&amp;amp;infra=stock&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;798&quot; data-origin-height=&quot;89&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXGT4M/btsIqakw6pz/oAiBwOK4Em6RTkdzxFsmyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXGT4M/btsIqakw6pz/oAiBwOK4Em6RTkdzxFsmyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXGT4M/btsIqakw6pz/oAiBwOK4Em6RTkdzxFsmyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXGT4M%2FbtsIqakw6pz%2FoAiBwOK4Em6RTkdzxFsmyk%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;798&quot; height=&quot;89&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;89&quot;/&gt;&lt;/span&gt;&lt;/figure&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;u&gt;&lt;b&gt;☆ 해결&lt;/b&gt;&lt;/u&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NCP를 사용중이라 NCP관련 설정 때문에 발생한 문제 같았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NCP 의 공식 문서를 참고해서 설정을 변경했다.&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;CentOS의 리포지토리 설정 정보를 수정해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리포지토리에 저장된 baseurl을 확인하기 위해 아래 명령어를 입력한다.&lt;/p&gt;
&lt;pre id=&quot;code_1720161594864&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; grep ^baseurl /etc/yum.repos.d/CentOS-Base.repo&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;661&quot; data-origin-height=&quot;48&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ma4UH/btsIogNO5wn/MOcoXNvU6pqgEkE0fs8kR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ma4UH/btsIogNO5wn/MOcoXNvU6pqgEkE0fs8kR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ma4UH/btsIogNO5wn/MOcoXNvU6pqgEkE0fs8kR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fma4UH%2FbtsIogNO5wn%2FMOcoXNvU6pqgEkE0fs8kR1%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;661&quot; height=&quot;48&quot; data-origin-width=&quot;661&quot; data-origin-height=&quot;48&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;ncp 자료에서의 baseurl과 경로가 다른다.&lt;/p&gt;
&lt;pre id=&quot;code_1720160671174&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[root@centos78 ~] grep ^baseurl /etc/yum.repos.d/CentOS-Base.repo
baseurl=http://mirror.ncloud.com/centos/$releasever/os/$basearch
baseurl=http://mirror.ncloud.com/centos/$releasever/updates/$basearch/
baseurl=http://mirror.ncloud.com/centos/$releasever/extras/$basearch/
baseurl=http://mirror.ncloud.com/centos/$releasever/centosplus/$basearch/
baseurl=http://mirror.ncloud.com/centos/$releasever/contrib/$basearch/&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;baseurl=&lt;a href=&quot;http://mirror.centos.org/centos/$releasever/os/$basearch/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://mirror.centos.org/~&lt;/a&gt;&amp;nbsp; -&amp;gt;&amp;nbsp; baseurl=&lt;a href=&quot;http://mirror.ncloud.com/centos/$releasever/os/$basearch/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://mirror.ncloud.com/~&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;centos.org를 ncloud.com으로 url을 변경해야 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1720160688406&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt; vim /etc/yum.repos.d/CentOS-Base.repo&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1720160722719&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&amp;amp;arch=$basearch&amp;amp;repo=os&amp;amp;infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=http://mirror.ncloud.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&amp;amp;arch=$basearch&amp;amp;repo=updates&amp;amp;infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
baseurl=http://mirror.ncloud.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&amp;amp;arch=$basearch&amp;amp;repo=extras&amp;amp;infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
baseurl=http://mirror.ncloud.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&amp;amp;arch=$basearch&amp;amp;repo=centosplus&amp;amp;infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
baseurl=http://mirror.ncloud.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7&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;884&quot; data-origin-height=&quot;783&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/la7q0/btsIqcil2pE/BXDdOWkx55zBXE2RvkArsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/la7q0/btsIqcil2pE/BXDdOWkx55zBXE2RvkArsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/la7q0/btsIqcil2pE/BXDdOWkx55zBXE2RvkArsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fla7q0%2FbtsIqcil2pE%2FBXDdOWkx55zBXE2RvkArsk%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;884&quot; height=&quot;783&quot; data-origin-width=&quot;884&quot; data-origin-height=&quot;783&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1720161075936&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;yum install 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;876&quot; data-origin-height=&quot;324&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c74oHb/btsIokvVy6B/QzU24tEGPMIGwdLfkPPJsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c74oHb/btsIokvVy6B/QzU24tEGPMIGwdLfkPPJsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c74oHb/btsIokvVy6B/QzU24tEGPMIGwdLfkPPJsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc74oHb%2FbtsIokvVy6B%2FQzU24tEGPMIGwdLfkPPJsk%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;876&quot; height=&quot;324&quot; data-origin-width=&quot;876&quot; data-origin-height=&quot;324&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;yum 명령어가 된다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1720161122249&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;yum repolist&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;892&quot; data-origin-height=&quot;197&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cuvYSe/btsIpX6NNmq/cUcm0oX8szQ8lJO5A1IML1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cuvYSe/btsIpX6NNmq/cUcm0oX8szQ8lJO5A1IML1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cuvYSe/btsIpX6NNmq/cUcm0oX8szQ8lJO5A1IML1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcuvYSe%2FbtsIpX6NNmq%2FcUcm0oX8szQ8lJO5A1IML1%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;892&quot; height=&quot;197&quot; data-origin-width=&quot;892&quot; data-origin-height=&quot;197&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;status 값들이 변경되었다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1720161157388&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;yum install mysql-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;906&quot; data-origin-height=&quot;213&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceZPci/btsIoZYOGi1/rW2S2q7ZrGkqTS7TqUQ5G0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceZPci/btsIoZYOGi1/rW2S2q7ZrGkqTS7TqUQ5G0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceZPci/btsIoZYOGi1/rW2S2q7ZrGkqTS7TqUQ5G0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FceZPci%2FbtsIoZYOGi1%2FrW2S2q7ZrGkqTS7TqUQ5G0%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;906&quot; height=&quot;213&quot; data-origin-width=&quot;906&quot; data-origin-height=&quot;213&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;867&quot; data-origin-height=&quot;199&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJWyNU/btsIpZKjXO8/I94RKHqu9WG93IyVpUkm40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJWyNU/btsIpZKjXO8/I94RKHqu9WG93IyVpUkm40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJWyNU/btsIpZKjXO8/I94RKHqu9WG93IyVpUkm40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJWyNU%2FbtsIpZKjXO8%2FI94RKHqu9WG93IyVpUkm40%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;867&quot; height=&quot;199&quot; data-origin-width=&quot;867&quot; data-origin-height=&quot;199&quot;/&gt;&lt;/span&gt;&lt;/figure&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;&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;/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;a href=&quot;https://guide.ncloud-docs.com/docs/linux-os-repository-check&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://guide.ncloud-docs.com/docs/linux-os-repository-check&lt;/a&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://m.blog.naver.com/jina870/221984069669&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://m.blog.naver.com/jina870/221984069669&lt;/a&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Project</category>
      <author>owls</author>
      <guid isPermaLink="true">https://code-space.tistory.com/438</guid>
      <comments>https://code-space.tistory.com/438#entry438comment</comments>
      <pubDate>Fri, 5 Jul 2024 11:03:36 +0900</pubDate>
    </item>
    <item>
      <title>[Project] NCP centOS MySQL8 설치</title>
      <link>https://code-space.tistory.com/437</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;passwd&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;mysql 설치&lt;/h2&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;u&gt;&lt;b&gt;1. mysql repository설치&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720100029995&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm&lt;/code&gt;&lt;/pre&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;825&quot; data-origin-height=&quot;294&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zna3g/btsIn5LqyLu/oRkAYFBVhlWh2zVQjsTF70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zna3g/btsIn5LqyLu/oRkAYFBVhlWh2zVQjsTF70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zna3g/btsIn5LqyLu/oRkAYFBVhlWh2zVQjsTF70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fzna3g%2FbtsIn5LqyLu%2FoRkAYFBVhlWh2zVQjsTF70%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;825&quot; height=&quot;294&quot; data-origin-width=&quot;825&quot; data-origin-height=&quot;294&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;size18&quot;&gt;&lt;u&gt;&lt;b&gt;2. mysql 레포지토리 목록 확인&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720100143287&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;repolist enabled | grep &quot;mysql.*&quot;&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;954&quot; data-origin-height=&quot;322&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTKsMX/btsIow94GTR/mYqBhFsA9tTWnzmmTfTKl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTKsMX/btsIow94GTR/mYqBhFsA9tTWnzmmTfTKl0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTKsMX/btsIow94GTR/mYqBhFsA9tTWnzmmTfTKl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTKsMX%2FbtsIow94GTR%2FmYqBhFsA9tTWnzmmTfTKl0%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;954&quot; height=&quot;322&quot; data-origin-width=&quot;954&quot; data-origin-height=&quot;322&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;status 값이 0이다. 이상하다.&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;u&gt;&lt;b&gt;3. mysql 설치&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720161745085&quot; class=&quot;css&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;yum install -y mysql64-community-release-el7-1.noarch.rpm&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;761&quot; data-origin-height=&quot;82&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brNJ14/btsIoasJVhe/1S0DyYTWbmmYHkgZGAayyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brNJ14/btsIoasJVhe/1S0DyYTWbmmYHkgZGAayyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brNJ14/btsIoasJVhe/1S0DyYTWbmmYHkgZGAayyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrNJ14%2FbtsIoasJVhe%2F1S0DyYTWbmmYHkgZGAayyk%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;761&quot; height=&quot;82&quot; data-origin-width=&quot;761&quot; data-origin-height=&quot;82&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Loaded&amp;nbsp;plugins:&amp;nbsp;fastestmirror,&amp;nbsp;langpacks &lt;br /&gt;Examining&amp;nbsp;mysql84-community-release-el7-1.noarch.rpm:&amp;nbsp;mysql84-community-release-el7-1.noarch &lt;br /&gt;mysql84-community-release-el7-1.noarch.rpm:&amp;nbsp;does&amp;nbsp;not&amp;nbsp;update&amp;nbsp;installed&amp;nbsp;package. &lt;br /&gt;Error:&amp;nbsp;Nothing&amp;nbsp;to&amp;nbsp;do&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;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&lt;a href=&quot;https://code-space.tistory.com/438&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://code-space.tistory.com/438&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1720161799043&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Project] NCP CentOS7 cannot find a valid baseurl for repo base/7/x86_64&quot; data-og-description=&quot;naver cloud platfom에서&amp;nbsp;CentOS7 서버를 생성하고 Mysql8을 설치하려는 중에 설치가 안되는 오류가 났다.&amp;nbsp;&amp;nbsp;mysql repository설치하고 repository목록 확인을 하면 status가 다 0이다.설치에 필요한 내부 파일들이&quot; data-og-host=&quot;code-space.tistory.com&quot; data-og-source-url=&quot;https://code-space.tistory.com/438&quot; data-og-url=&quot;https://code-space.tistory.com/438&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/skQQt/hyWvV1L2YX/UfCbEY47Bck7UkPx5rmK81/img.png?width=800&amp;amp;height=270&amp;amp;face=0_0_800_270,https://scrap.kakaocdn.net/dn/CkDjZ/hyWvQMWFOJ/6BN1WOfSKGH60Evn1pskXK/img.png?width=800&amp;amp;height=270&amp;amp;face=0_0_800_270,https://scrap.kakaocdn.net/dn/xsweB/hyWvQ0tXWk/AfC9poxHgaoS2sYlqbZnFk/img.png?width=884&amp;amp;height=783&amp;amp;face=0_0_884_783&quot;&gt;&lt;a href=&quot;https://code-space.tistory.com/438&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://code-space.tistory.com/438&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/skQQt/hyWvV1L2YX/UfCbEY47Bck7UkPx5rmK81/img.png?width=800&amp;amp;height=270&amp;amp;face=0_0_800_270,https://scrap.kakaocdn.net/dn/CkDjZ/hyWvQMWFOJ/6BN1WOfSKGH60Evn1pskXK/img.png?width=800&amp;amp;height=270&amp;amp;face=0_0_800_270,https://scrap.kakaocdn.net/dn/xsweB/hyWvQ0tXWk/AfC9poxHgaoS2sYlqbZnFk/img.png?width=884&amp;amp;height=783&amp;amp;face=0_0_884_783');&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;[Project] NCP CentOS7 cannot find a valid baseurl for repo base/7/x86_64&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;naver cloud platfom에서&amp;nbsp;CentOS7 서버를 생성하고 Mysql8을 설치하려는 중에 설치가 안되는 오류가 났다.&amp;nbsp;&amp;nbsp;mysql repository설치하고 repository목록 확인을 하면 status가 다 0이다.설치에 필요한 내부 파일들이&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;code-space.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&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;/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;오류를 해결했다면 yum install update명령어 수행 후 MySQL 설치 명령어(yum install ~ )를 입력하면 성공합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1720161989744&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;yum install update&lt;/code&gt;&lt;/pre&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;876&quot; data-origin-height=&quot;324&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9GxB4/btsIotrZlN4/6D1wLH1IUGNPgD02Zqf0U0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9GxB4/btsIotrZlN4/6D1wLH1IUGNPgD02Zqf0U0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9GxB4/btsIotrZlN4/6D1wLH1IUGNPgD02Zqf0U0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9GxB4%2FbtsIotrZlN4%2F6D1wLH1IUGNPgD02Zqf0U0%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;876&quot; height=&quot;324&quot; data-origin-width=&quot;876&quot; data-origin-height=&quot;324&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;size18&quot;&gt;&lt;u&gt;&lt;b&gt;4. mysql-server 설치&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;906&quot; data-origin-height=&quot;213&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSdW84/btsIn6jLxYO/DqGgOHhBe1wf9MWg9WwX9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSdW84/btsIn6jLxYO/DqGgOHhBe1wf9MWg9WwX9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSdW84/btsIn6jLxYO/DqGgOHhBe1wf9MWg9WwX9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSdW84%2FbtsIn6jLxYO%2FDqGgOHhBe1wf9MWg9WwX9k%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;906&quot; height=&quot;213&quot; data-origin-width=&quot;906&quot; data-origin-height=&quot;213&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;867&quot; data-origin-height=&quot;199&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ucEZ1/btsIn7iISkz/Y5KypkTikSTsrMFfhUhl81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ucEZ1/btsIn7iISkz/Y5KypkTikSTsrMFfhUhl81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ucEZ1/btsIn7iISkz/Y5KypkTikSTsrMFfhUhl81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FucEZ1%2FbtsIn7iISkz%2FY5KypkTikSTsrMFfhUhl81%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;867&quot; height=&quot;199&quot; data-origin-width=&quot;867&quot; data-origin-height=&quot;199&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;size18&quot;&gt;&lt;u&gt;&lt;b&gt;5. mysqld 서비스 확인&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720162200571&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl status mysqld&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mysql 데몬이 실행 중인지 확인합니다.&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;실행 중이 아니라면 start시켜준다.&lt;/p&gt;
&lt;pre id=&quot;code_1720162235289&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl start mysqld&lt;/code&gt;&lt;/pre&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;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;mysql 설정 파일 수정&lt;/h3&gt;
&lt;pre id=&quot;code_1720164602611&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vim /etc/mysql/mysql.conf.d/mysqld.cnf&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1720164654365&quot; class=&quot;angelscript&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;#bind-address	= 127.0.0.1
bind-address	= 0.0.0.0&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;bind-address 설정으로 로컬에서만 접속이 가능했던 것이다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;원격 접속이 가능하도록 모든 IP를 허용하도록 0.0.0.0을 입력한다.&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;mysql 계정 추가&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;u&gt;&lt;b&gt;1. 암호 확인&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;Mysql 8.x 버전의 경우 최초 실행 시 root 계정의 임시 비밀번호가 생성된다고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;암호 확인 후 접속해야 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1720162321498&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;grep &quot;temporary password&quot; /var/log/mysqld.log&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;size18&quot;&gt;&lt;u&gt;&lt;b&gt;2. mysql 접속&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720162343956&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mysql -u root -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;접속 후 암호 변경을 하지 않으면 데이터베이스 접속 및 모든 명령어가 안된다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;ERROR&amp;nbsp;1820&amp;nbsp;(HY000):&amp;nbsp;You&amp;nbsp;must&amp;nbsp;reset&amp;nbsp;your&amp;nbsp;password&amp;nbsp;using&amp;nbsp;ALTER&amp;nbsp;USER&amp;nbsp;statement&amp;nbsp;before&amp;nbsp;executing&amp;nbsp;this&amp;nbsp;statement.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;size18&quot;&gt;&lt;u&gt;&lt;b&gt;3. 암호 변경&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720163483788&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;alter user 'root'@'localhost' identified by '[암호]'&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ERROR&amp;nbsp;1819&amp;nbsp;(HY000):&amp;nbsp;Your&amp;nbsp;password&amp;nbsp;does&amp;nbsp;not&amp;nbsp;satisfy&amp;nbsp;the&amp;nbsp;current&amp;nbsp;policy&amp;nbsp;requirements&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;비밀번호는 12자 이상, 대소문자 + 숫자 + 특수문자 1개 이상 포함되어야 한다.&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;u&gt;&lt;b&gt;4. 데이터베이스 확인&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720163943663&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;show databases;&lt;/code&gt;&lt;/pre&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;496&quot; data-origin-height=&quot;166&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rBjZg/btsIorPciEm/Vo9ib79MJ0KqGsFy4FbKE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rBjZg/btsIorPciEm/Vo9ib79MJ0KqGsFy4FbKE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rBjZg/btsIorPciEm/Vo9ib79MJ0KqGsFy4FbKE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrBjZg%2FbtsIorPciEm%2FVo9ib79MJ0KqGsFy4FbKE1%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;496&quot; height=&quot;166&quot; data-origin-width=&quot;496&quot; data-origin-height=&quot;166&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;size18&quot;&gt;&lt;u&gt;&lt;b&gt;5. 계정 추가&lt;/b&gt;&lt;/u&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;5.1 데이터베이스 선택&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720164061510&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;use mysql;&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;b&gt;5.2 user 검색&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720164155384&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select host, user from user;&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;498&quot; data-origin-height=&quot;161&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qoaFQ/btsIoXUnfeY/kh0lBYLqkZPBVfykFE3bHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qoaFQ/btsIoXUnfeY/kh0lBYLqkZPBVfykFE3bHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qoaFQ/btsIoXUnfeY/kh0lBYLqkZPBVfykFE3bHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqoaFQ%2FbtsIoXUnfeY%2Fkh0lBYLqkZPBVfykFE3bHk%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;498&quot; height=&quot;161&quot; data-origin-width=&quot;498&quot; data-origin-height=&quot;161&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;host가 localhost만 있어서 내부 접근만 가능하고 외부 접근은 불가능한 상태이다.&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;&lt;b&gt;5.3 계정 생성&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720164424076&quot; class=&quot;routeros&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;create user 'userid'@'%' identified by '비밀번호';&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;5.4 계정에 권한 추가&lt;/p&gt;
&lt;pre id=&quot;code_1720164424076&quot; class=&quot;bash&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;grant all privileges on [DB명].* to [계정명]@'%';&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;권한 추가하면서 비밀번호 변경하고 싶다면 identified by '[비밀번호]'; 를 추가하면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1720165562623&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;grant all privileges on [DB명].* to [계정명]@'%' identified by '[비밀번호]';&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 또한 비밀번호 생성 규칙을 지켜야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비밀번호는 12자 이상, 대소문자 + 숫자 + 특수문자 1개 이상 포함되어야 한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;</description>
      <category>Project</category>
      <author>owls</author>
      <guid isPermaLink="true">https://code-space.tistory.com/437</guid>
      <comments>https://code-space.tistory.com/437#entry437comment</comments>
      <pubDate>Thu, 4 Jul 2024 23:00:05 +0900</pubDate>
    </item>
    <item>
      <title>[Project] SSLHandshakeException</title>
      <link>https://code-space.tistory.com/436</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SpringBoot 어플리케이션에서 DB와 연결하려고 할 때 에러가 발생했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;807&quot; data-origin-height=&quot;259&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bd6Qlh/btsIlTSOx59/dxxM2nQQePYVsIGCMapulk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bd6Qlh/btsIlTSOx59/dxxM2nQQePYVsIGCMapulk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bd6Qlh/btsIlTSOx59/dxxM2nQQePYVsIGCMapulk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbd6Qlh%2FbtsIlTSOx59%2FdxxM2nQQePYVsIGCMapulk%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;807&quot; height=&quot;259&quot; data-origin-width=&quot;807&quot; data-origin-height=&quot;259&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원격에 MySQL 5.7 버전을 설치하였고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 테스트 로컬 환경은 MySQL8 버전이었다. 그렇기에 SpringBoot에 MySQL Connector 도 8버전으로 의존성 라이브러리가 설치되어 있다.&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;일단 원격지 서버와 SpringBoot어플리케이션 MySQL Connector에서 사용하는 버전이 다르다.&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;SSLHandshakeException이 발생하는 것은 일단 통신하고자 하는 두 프로그램의 TLS 및 SSL버전이 다르기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원격지 MySQL서버의 SSL/TLS버전을 확인해보자.&lt;/p&gt;
&lt;pre id=&quot;code_1720076729468&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select @@version;

show global variables like 'tls_version';&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;360&quot; data-origin-height=&quot;210&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5GZl3/btsInGEIQpA/8RgvHKdZ00KQZrQicM9Sek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5GZl3/btsInGEIQpA/8RgvHKdZ00KQZrQicM9Sek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5GZl3/btsInGEIQpA/8RgvHKdZ00KQZrQicM9Sek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5GZl3%2FbtsInGEIQpA%2F8RgvHKdZ00KQZrQicM9Sek%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;360&quot; height=&quot;210&quot; data-origin-width=&quot;360&quot; data-origin-height=&quot;210&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL 5.7.17버전이고,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TLSv1,TLSv1.1을 지원하고 있다.&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;나는 Java 17을 사용하여 개발하였다. Java8버전 부터는 TSLv1.0과 TLSv1.1 이 더이상 지원하지 않은 비활성화 상태로 변경되었다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 TLSv1.2를 지원하지 않는 예전의 MySQL5.7버전 이하를 사용할 겨우 SSLHandshakeException이 발생하게 된다.&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;Connector버전을 5.7로 낮추고 실행해도 다른 문제가 추가로 발생했다.&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;1119&quot; data-origin-height=&quot;363&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bj0jjW/btsInWm3zHi/9wsIP3vV1X91EENV1LmWz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bj0jjW/btsInWm3zHi/9wsIP3vV1X91EENV1LmWz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bj0jjW/btsInWm3zHi/9wsIP3vV1X91EENV1LmWz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj0jjW%2FbtsInWm3zHi%2F9wsIP3vV1X91EENV1LmWz1%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;1119&quot; height=&quot;363&quot; data-origin-width=&quot;1119&quot; data-origin-height=&quot;363&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SSL/TLS접속을 비활성화 해보자.&lt;/p&gt;
&lt;pre id=&quot;code_1720077178133&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;spring.datasource.jdbc-url=jdbc:mysql://[IP]:3306/commerce?useSSL=false&amp;amp;....&amp;amp;allowPublicKeyRetrieval=true&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;useSSL=false &amp;amp; allowPublicKeyRetrieval=true&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;를 추가해서 SSL사용을 비활성화 한다.&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;SSL버전 문제가 맞았다.&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;하지만 SSL을 비활성화 모드로 바꾼다고 해당 문제를 제대로 해결한 것은 아니다.&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;운영 정책에서 SSL/TLS의 사용이 권장 또는 필수인 경우가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mysql 버전을 업그레이드 시켜야 할 것이다.&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;참고&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://intshc.tistory.com/57&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://intshc.tistory.com/57&lt;/a&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://medium.com/finda-tech/mysql%EA%B3%BC-ssl-tls%ED%86%B5%ED%95%9C-%EC%A0%91%EC%86%8D-15262c49783e&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://medium.com/finda-tech/mysql%EA%B3%BC-ssl-tls%ED%86%B5%ED%95%9C-%EC%A0%91%EC%86%8D-15262c49783e&lt;/a&gt;&lt;/p&gt;</description>
      <category>Project</category>
      <author>owls</author>
      <guid isPermaLink="true">https://code-space.tistory.com/436</guid>
      <comments>https://code-space.tistory.com/436#entry436comment</comments>
      <pubDate>Thu, 4 Jul 2024 16:16:07 +0900</pubDate>
    </item>
    <item>
      <title>[Project] NCP MySQL Server workbench 외부 접속</title>
      <link>https://code-space.tistory.com/435</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL Server에 원격으로 접속해서 DB를 사용하려고 한다.&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;Naver Cloud Platform 에서&amp;nbsp; &lt;span style=&quot;text-align: start;&quot;&gt;mysql(5.7)-ubuntu-14.04-64-server 운영체제를 선택해서 생성한다.&lt;/span&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;span style=&quot;text-align: start;&quot;&gt;NCP AGC설정&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;AGC에서 MySQL의 기본 포트인 3306을 접근할 수 있도록 설정한다.&lt;/span&gt;&lt;span style=&quot;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;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;802&quot; data-origin-height=&quot;78&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eikP3y/btsInVubAva/ihZQ9VOgc3O4LRpXb6csj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eikP3y/btsInVubAva/ihZQ9VOgc3O4LRpXb6csj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eikP3y/btsInVubAva/ihZQ9VOgc3O4LRpXb6csj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeikP3y%2FbtsInVubAva%2FihZQ9VOgc3O4LRpXb6csj0%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;802&quot; height=&quot;78&quot; data-origin-width=&quot;802&quot; data-origin-height=&quot;78&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;로컬 MySQL Workbench에서 접속 테스트를 하는데 실패하는 문제가 발생했다.&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;MySQL 서비스 실행 확인&lt;/h2&gt;
&lt;pre id=&quot;code_1720062624324&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;service mysql status&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;476&quot; data-origin-height=&quot;34&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oZozJ/btsImeIwrQV/bbqvh2NxpkKmiyZmhkN7I0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oZozJ/btsImeIwrQV/bbqvh2NxpkKmiyZmhkN7I0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oZozJ/btsImeIwrQV/bbqvh2NxpkKmiyZmhkN7I0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoZozJ%2FbtsImeIwrQV%2Fbbqvh2NxpkKmiyZmhkN7I0%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;476&quot; height=&quot;34&quot; data-origin-width=&quot;476&quot; data-origin-height=&quot;34&quot;/&gt;&lt;/span&gt;&lt;/figure&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;h2 data-ke-size=&quot;size26&quot;&gt;서버 설정 파일 수정&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL서버의 설정 파일을 확인해보자.&lt;/p&gt;
&lt;pre id=&quot;code_1720061297155&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vim /etc/mysql/mysql.conf.d/mysqld.cnf&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1720061321077&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#bind-address	= 127.0.0.1
bind-address	= 0.0.0.0&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;bind-address 설정으로 로컬에서만 접속이 가능했던 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원격 접속이 가능하도록 모든 IP를 허용하도록 0.0.0.0을 입력한다.&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;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원격 접속 시 root계정으로 접속하면 보안상 취약하기에 계정을 새로 생성하여 원격접속 하는 것을 권장한다.&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;u&gt;&lt;b&gt;1. mysql 접속&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720062901345&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mysql -u root -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;size18&quot;&gt;&lt;u&gt;&lt;b&gt;2. 데이터베이스 선택&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720062996430&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;use mysql;&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;user정보가 있는 mysql 데이터베이스에서 계정을 조회한다.&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;&lt;u&gt;3. user 검색&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1720063074876&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;selct host, user from user;&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;301&quot; data-origin-height=&quot;142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/H711I/btsIlGezAaC/uUQKeOLalnhZbTNnSq4tN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/H711I/btsIlGezAaC/uUQKeOLalnhZbTNnSq4tN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/H711I/btsIlGezAaC/uUQKeOLalnhZbTNnSq4tN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FH711I%2FbtsIlGezAaC%2FuUQKeOLalnhZbTNnSq4tN1%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;301&quot; height=&quot;142&quot; data-origin-width=&quot;301&quot; data-origin-height=&quot;142&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;처음 조회했을 때는 127.0.0.1 (localhost) 만 조회될 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;host가 localhost만 있어서 내부 접근만 가능하고 외부 접근은 불가능한 상태이다.&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;u&gt;&lt;b&gt;4. 계정 생성 및 권한 추가&lt;/b&gt;&lt;/u&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;pre id=&quot;code_1720069634202&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;create user 'userid'@'%' identified by '비밀번호';&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;/p&gt;
&lt;pre id=&quot;code_1720069536346&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;grant all privileges on [DB명].* to [계정명]@'%' identified by '[비밀번호]';&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;MySQL Workbench&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;783&quot; data-origin-height=&quot;492&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wqncs/btsIoq1Y1W6/BAQ9kKNE3MVsIHGxEnTFJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wqncs/btsIoq1Y1W6/BAQ9kKNE3MVsIHGxEnTFJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wqncs/btsIoq1Y1W6/BAQ9kKNE3MVsIHGxEnTFJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwqncs%2FbtsIoq1Y1W6%2FBAQ9kKNE3MVsIHGxEnTFJK%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;783&quot; height=&quot;492&quot; data-origin-width=&quot;783&quot; data-origin-height=&quot;492&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;public IP&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;port&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;username : 계정명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Password : 패스워드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력후 Test Connection 버튼을 누르면 connection success 메시지가 나온다.&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;우분투 서비스 관련 명령어&lt;/h2&gt;
&lt;table style=&quot;background-color: #ffffff; color: #333333; text-align: start; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #9b9b9b; color: #ffffff; text-align: center;&quot;&gt;명령어 종류&lt;/td&gt;
&lt;td style=&quot;background-color: #9b9b9b; color: #ffffff; text-align: center;&quot;&gt;systemctl&lt;/td&gt;
&lt;td style=&quot;background-color: #9b9b9b; color: #ffffff; text-align: center;&quot;&gt;service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #efefef; color: #333333; text-align: center;&quot;&gt;서비스 상태확인&lt;/td&gt;
&lt;td style=&quot;color: #333333; text-align: center;&quot;&gt;systemctl status [서비스명]&lt;/td&gt;
&lt;td style=&quot;color: #333333; text-align: center;&quot;&gt;service [서비스명] status&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #efefef; color: #333333; text-align: center;&quot;&gt;서비스 시작&lt;/td&gt;
&lt;td style=&quot;background-color: #f9f9f9; color: #333333; text-align: center;&quot;&gt;systemctl start [서비스명]&lt;/td&gt;
&lt;td style=&quot;background-color: #f9f9f9; color: #333333; text-align: center;&quot;&gt;service [서비스명] start&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #efefef; color: #333333; text-align: center;&quot;&gt;서비스 정지&lt;/td&gt;
&lt;td style=&quot;color: #333333; text-align: center;&quot;&gt;systemctl stop [서비스명]&lt;/td&gt;
&lt;td style=&quot;color: #333333; text-align: center;&quot;&gt;service [서비스명] stop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #efefef; color: #333333; text-align: center;&quot;&gt;서비스 재시작&lt;/td&gt;
&lt;td style=&quot;background-color: #f9f9f9; color: #333333; text-align: center;&quot;&gt;systemctl restart [서비스명]&lt;/td&gt;
&lt;td style=&quot;background-color: #f9f9f9; color: #333333; text-align: center;&quot;&gt;service [서비스명] restart&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #efefef; color: #333333; text-align: center;&quot;&gt;서비스 리로드&lt;/td&gt;
&lt;td style=&quot;color: #333333; text-align: center;&quot;&gt;systemctl reload [서비스명]&lt;/td&gt;
&lt;td style=&quot;color: #333333; text-align: center;&quot;&gt;service [서비스명] reload&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;h2 data-ke-size=&quot;size26&quot;&gt;참고&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://sectumsempra.tistory.com/80&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://sectumsempra.tistory.com/80&lt;/a&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://m.blog.naver.com/emily7485/221646524641&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://m.blog.naver.com/emily7485/221646524641&lt;/a&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://chunggaeguri.tistory.com/entry/%EC%9A%B0%EB%B6%84%ED%88%AC-%EC%84%9C%EB%B9%84%EC%8A%A4-%ED%99%95%EC%9D%B8-%EC%8B%9C%EC%9E%91-%EC%A4%91%EC%A7%80-%EC%9E%AC%EC%8B%9C%EC%9E%91&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://chunggaeguri.tistory.com/entry/%EC%9A%B0%EB%B6%84%ED%88%AC-%EC%84%9C%EB%B9%84%EC%8A%A4-%ED%99%95%EC%9D%B8-%EC%8B%9C%EC%9E%91-%EC%A4%91%EC%A7%80-%EC%9E%AC%EC%8B%9C%EC%9E%91&lt;/a&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://hermeslog.tistory.com/165&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://hermeslog.tistory.com/165&lt;/a&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://nickjoit.tistory.com/144&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://nickjoit.tistory.com/144&lt;/a&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://noanomal.tistory.com/328&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://noanomal.tistory.com/328&lt;/a&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://velog.io/@njs04210/Server-MySQLWorkbench%EB%A1%9C-%EB%8B%A4%EB%A5%B8-%EC%84%9C%EB%B2%84-MySQL-%EC%9B%90%EA%B2%A9%EC%A0%91%EC%86%8D%ED%95%98%EA%B8%B0&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://velog.io/@njs04210/Server-MySQLWorkbench%EB%A1%9C-%EB%8B%A4%EB%A5%B8-%EC%84%9C%EB%B2%84-MySQL-%EC%9B%90%EA%B2%A9%EC%A0%91%EC%86%8D%ED%95%98%EA%B8%B0&lt;/a&gt;&lt;/p&gt;</description>
      <category>Project</category>
      <author>owls</author>
      <guid isPermaLink="true">https://code-space.tistory.com/435</guid>
      <comments>https://code-space.tistory.com/435#entry435comment</comments>
      <pubDate>Wed, 3 Jul 2024 23:46:29 +0900</pubDate>
    </item>
    <item>
      <title>[Project] NCP centOS7 nginx설치</title>
      <link>https://code-space.tistory.com/434</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;naver cloud platform에서 제공하는 클라우드 서버를 사용해서 centOS7 운영체제 서버에 nginx를 설치하는 방법을 포스팅하겠습니다~&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;NCP서버 생성은 아래 포스팅을 참고해주세요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://code-space.tistory.com/426&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://code-space.tistory.com/426&lt;/a&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;NGINX설치&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. yum외부 저장소 추가/설치&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;yum저장소에는 nginx가 없기 때문에 외부 저장소를 추가해야 함&lt;/p&gt;
&lt;pre id=&quot;code_1719912145104&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vim /etc/yum.repos.d/nginx.repo&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;stable버전과 main line버전 중 설치하고자 하는 저장소로 추가한다.&lt;/p&gt;
&lt;pre id=&quot;code_1719912175067&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# stable version
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

# OR

# main line version
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1&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;nginx 설치 명령어로 설치한다.&lt;/p&gt;
&lt;pre id=&quot;code_1719912216333&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;yum install -y nginx&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;ngnix 설치 확인 명령어&lt;/p&gt;
&lt;pre id=&quot;code_1719912283719&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# nginx 버전 확인.
nginx -version

# nginx 기본 명령어.
systemctl start nginx   # nginx 시작
systemctl enable nginx  # 부팅시 자동실행
systemctl status nginx  # 상태 확인
systemctl stop nginx    # nginx 중지

# 실행 중 에러확인.
journalctl -xe&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;2. 웹 서버 설정&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; text-align: start;&quot;&gt;기본 서버 설정 파일이 위치 : vim /etc/nginx/conf.d/default.conf&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; text-align: start;&quot;&gt;기본 웹 루트 디렉토리 : /usr/share/nginx/html&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; text-align: start;&quot;&gt;웹서버 기본 설정을 확인할 수 있으며, 포트 및 도메인 설정등 nginx 의 설정을 변경할 수 있습니다.&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;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;proxy_pass http://localhost:8080;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; /요청이 오면 8080포트로 요청을 넘겨준다.&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;&amp;nbsp;proxy_set_header&amp;nbsp;&amp;nbsp;&amp;nbsp;Host&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$host; &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;proxy_set_header&amp;nbsp;&amp;nbsp;&amp;nbsp;X-Real-IP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$remote_addr; &lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;proxy_set_header&amp;nbsp;&amp;nbsp;&amp;nbsp;X-Forwarded-For&amp;nbsp;&amp;nbsp;$proxy_add_x_forwarded_for;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; nginx서버가 Reverse Proxy역할을 하게 되는데 SpringBoot서버에서는 요청한 클라이언트의 IP주소를 Nginx서버의 IP로 인식하게 된다. 때문에 위의 설정을 해야 한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Real-IP : 실제 접속 IP&lt;/li&gt;
&lt;li&gt;Forwarded-For : 프록시 서버가 여러개일때의 주소&lt;/li&gt;
&lt;li&gt;Host-&amp;gt;요청 필수 값&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;NGINX접속&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NCP서버에 공인IP를 할당받아 설정하였으니 Nginx에 외부접속이 될 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;NCP는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;공인IP&lt;/b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;서버 접속용 공인IP&lt;/b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;두 가지가 제공된다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SSH 접속할 때는 &quot;&lt;u&gt;&lt;b&gt;서버 접속용 공인 IP&lt;/b&gt;&lt;/u&gt;&quot;로 접속해야하고&lt;/li&gt;
&lt;li&gt;서비스를 외부에서 접속하고자 할 때는 &quot;&lt;u&gt;&lt;b&gt;공인IP&lt;/b&gt;&lt;/u&gt;&quot;로 접속해야 한다.&lt;/li&gt;
&lt;/ul&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;당연히 접속되겠지 했는데 안되는 것이다!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본 설정만 해서 오류날 사항이 없기에&amp;nbsp;방화벽, 포트포워딩, NGINX설정 정보를 보았다.&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;u&gt;&lt;b&gt;1.NGINX 서비스가 실행중인지 확인&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1719919214112&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ps -aux | fgrep nginx&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;1047&quot; data-origin-height=&quot;64&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVYCCE/btsIkFMMGvM/KYqn47ahjCK39YB121yhW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVYCCE/btsIkFMMGvM/KYqn47ahjCK39YB121yhW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVYCCE/btsIkFMMGvM/KYqn47ahjCK39YB121yhW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVYCCE%2FbtsIkFMMGvM%2FKYqn47ahjCK39YB121yhW0%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;1047&quot; height=&quot;64&quot; data-origin-width=&quot;1047&quot; data-origin-height=&quot;64&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘 동작중이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;u&gt;&lt;b&gt;2. NGINX 서비스 포트가 활성화 되었는지 확인&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1719919313731&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;netstat -tulpn | grep LISTEN&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;805&quot; data-origin-height=&quot;84&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nvTak/btsIldvtybC/AZN1utIEXokqCpFFeWkCIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nvTak/btsIldvtybC/AZN1utIEXokqCpFFeWkCIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nvTak/btsIldvtybC/AZN1utIEXokqCpFFeWkCIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnvTak%2FbtsIldvtybC%2FAZN1utIEXokqCpFFeWkCIk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;805&quot; height=&quot;84&quot; data-origin-width=&quot;805&quot; data-origin-height=&quot;84&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0.0.0.0:80 nginx: master가 받을 준비를 잘 하고 있다.&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;u&gt;&lt;b&gt;3. localhost에서 nginx실행되는지 확인&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1719919416857&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;wget http://localhost:80/&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;624&quot; data-origin-height=&quot;171&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dnbfv9/btsIjLtrvNf/1aryk8J34EetpI6tqKr2J0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dnbfv9/btsIjLtrvNf/1aryk8J34EetpI6tqKr2J0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dnbfv9/btsIjLtrvNf/1aryk8J34EetpI6tqKr2J0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdnbfv9%2FbtsIjLtrvNf%2F1aryk8J34EetpI6tqKr2J0%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;624&quot; height=&quot;171&quot; data-origin-width=&quot;624&quot; data-origin-height=&quot;171&quot;/&gt;&lt;/span&gt;&lt;/figure&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;size18&quot;&gt;&lt;b&gt;&lt;u&gt;3. 서버 방화벽 확인&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;centOS7에서는 firewalld 라는 명령어로 방화벽 서비스를 제공한다.&lt;/p&gt;
&lt;pre id=&quot;code_1719918953256&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl status firewalld&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;776&quot; data-origin-height=&quot;67&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjquhW/btsImgZkhHu/ecljoD0kgCa3RtyQxxUm51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjquhW/btsImgZkhHu/ecljoD0kgCa3RtyQxxUm51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjquhW/btsImgZkhHu/ecljoD0kgCa3RtyQxxUm51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjquhW%2FbtsImgZkhHu%2FecljoD0kgCa3RtyQxxUm51%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;776&quot; height=&quot;67&quot; data-origin-width=&quot;776&quot; data-origin-height=&quot;67&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;inactive로 비활성화되어 있다!&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;서버 방화벽 문제가 아니라면 내PC방화벽 문제인가?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내PC는 윈도우를 사용중이다.&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;4. 내PC방화벽 확인&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방화벽 인바운드, 아웃바운드 규칙에 tcp 80 포트를 허용하는 규칙을 추가했다.&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;361&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oaTlt/btsIjxIXSpB/QxJHGE1AmpNhDa1oIKiS9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oaTlt/btsIjxIXSpB/QxJHGE1AmpNhDa1oIKiS9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oaTlt/btsIjxIXSpB/QxJHGE1AmpNhDa1oIKiS9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoaTlt%2FbtsIjxIXSpB%2FQxJHGE1AmpNhDa1oIKiS9K%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;361&quot; data-origin-width=&quot;557&quot; data-origin-height=&quot;361&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;569&quot; data-origin-height=&quot;324&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckpViV/btsIlcpOdW5/MFv9M732LvSP1wgu6LqAm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckpViV/btsIlcpOdW5/MFv9M732LvSP1wgu6LqAm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckpViV/btsIlcpOdW5/MFv9M732LvSP1wgu6LqAm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckpViV%2FbtsIlcpOdW5%2FMFv9M732LvSP1wgu6LqAm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;569&quot; height=&quot;324&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;324&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;/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;size18&quot;&gt;&lt;u&gt;&lt;b&gt;5. NCP의 ACG설정&lt;/b&gt;&lt;/u&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;이건 NCP...클라우드 서버...생각해보니 ACG가 떠올랐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버 생성시에 설정했던 ACG!!!!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;947&quot; data-origin-height=&quot;86&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bK9tVP/btsIlx8msqf/pylkXeW2YYOT7ZJ2hLKxbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bK9tVP/btsIlx8msqf/pylkXeW2YYOT7ZJ2hLKxbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bK9tVP/btsIlx8msqf/pylkXeW2YYOT7ZJ2hLKxbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbK9tVP%2FbtsIlx8msqf%2FpylkXeW2YYOT7ZJ2hLKxbK%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;947&quot; height=&quot;86&quot; data-origin-width=&quot;947&quot; data-origin-height=&quot;86&quot;/&gt;&lt;/span&gt;&lt;/figure&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;260&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmhkse/btsIlnLGxlT/nfxQnLWKs6CgKW2BM8Dao1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmhkse/btsIlnLGxlT/nfxQnLWKs6CgKW2BM8Dao1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmhkse/btsIlnLGxlT/nfxQnLWKs6CgKW2BM8Dao1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbmhkse%2FbtsIlnLGxlT%2FnfxQnLWKs6CgKW2BM8Dao1%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;606&quot; height=&quot;260&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;260&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;/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;&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;/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://deoking.tistory.com/4&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://deoking.tistory.com/4&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://kyky1211.tistory.com/102&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://kyky1211.tistory.com/102&lt;/a&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;</description>
      <category>Project</category>
      <author>owls</author>
      <guid isPermaLink="true">https://code-space.tistory.com/434</guid>
      <comments>https://code-space.tistory.com/434#entry434comment</comments>
      <pubDate>Tue, 2 Jul 2024 18:26:45 +0900</pubDate>
    </item>
  </channel>
</rss>