<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>까뮈의 개발 노트</title>
    <link>https://devcamus.tistory.com/</link>
    <description>까먹지 않기 위해서 개발 관련 시행착오를 정리한 포스트를 작성합니다.</description>
    <language>ko</language>
    <pubDate>Thu, 21 May 2026 13:30:04 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>까뮈_b</managingEditor>
    <item>
      <title>windows 환경에서 flyway cli tool을 사용하는 방법</title>
      <link>https://devcamus.tistory.com/29</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이 포스트에서는 windows 로컬 환경을 기준으로 설명드리겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 먼저, &lt;a href=&quot;https://flywaydb.org/documentation/usage/commandline/#download-and-installation&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;flyway 공식 홈페이지&lt;/a&gt;에서 flyway cli tool을 다운로드 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d8ka6J/btrS3pObtHJ/b4Za5pQ2kCJTfJJ30Zj1c0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d8ka6J/btrS3pObtHJ/b4Za5pQ2kCJTfJJ30Zj1c0/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;887&quot; data-origin-height=&quot;445&quot; data-filename=&quot;cli.png&quot; style=&quot;width: 66.2277%; margin-right: 10px;&quot; data-widthpercent=&quot;67.01&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d8ka6J/btrS3pObtHJ/b4Za5pQ2kCJTfJJ30Zj1c0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd8ka6J%2FbtrS3pObtHJ%2Fb4Za5pQ2kCJTfJJ30Zj1c0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;887&quot; height=&quot;445&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cXWfkW/btrS5ABjw44/5z8LLC7R9r50xXkfmKrTl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cXWfkW/btrS5ABjw44/5z8LLC7R9r50xXkfmKrTl1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;593&quot; data-filename=&quot;2.skip to download.png&quot; style=&quot;width: 32.6095%;&quot; data-widthpercent=&quot;32.99&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cXWfkW/btrS5ABjw44/5z8LLC7R9r50xXkfmKrTl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcXWfkW%2FbtrS5ABjw44%2F5z8LLC7R9r50xXkfmKrTl1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;582&quot; height=&quot;593&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;flyway cli tool을 다운로드 받습니다.&lt;/figcaption&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;2. 원하는 위치에서 다운받은 압축파일을 해제합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;3.경로.png&quot; data-origin-width=&quot;288&quot; data-origin-height=&quot;30&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FTIZk/btrS7J46rpX/kAgkg5pHKAaxrxXTFmk4hk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FTIZk/btrS7J46rpX/kAgkg5pHKAaxrxXTFmk4hk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FTIZk/btrS7J46rpX/kAgkg5pHKAaxrxXTFmk4hk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFTIZk%2FbtrS7J46rpX%2FkAgkg5pHKAaxrxXTFmk4hk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;288&quot; height=&quot;30&quot; data-filename=&quot;3.경로.png&quot; data-origin-width=&quot;288&quot; data-origin-height=&quot;30&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3.설치는 모두 끝났습니다. 이제 flyway 명령어를 global하게 쓰기 위해서 시스템 환경변수 설정을 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;flyway cli 폴더의 경로를 복사해서 시스템속성 - 환경변수 - 시스템 변수 - path에 추가합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;4.시스템환경변수.png&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;583&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNGSM9/btrS5O0oVjH/PR094Nh2XpCDH6ZIpdvgx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNGSM9/btrS5O0oVjH/PR094Nh2XpCDH6ZIpdvgx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNGSM9/btrS5O0oVjH/PR094Nh2XpCDH6ZIpdvgx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNGSM9%2FbtrS5O0oVjH%2FPR094Nh2XpCDH6ZIpdvgx0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;475&quot; height=&quot;374&quot; data-filename=&quot;4.시스템환경변수.png&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;583&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;5.환경변수.png&quot; data-origin-width=&quot;477&quot; data-origin-height=&quot;524&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uXlJ4/btrS5jUb2sJ/ICmfZKFY8ufnSFE288GDj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uXlJ4/btrS5jUb2sJ/ICmfZKFY8ufnSFE288GDj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uXlJ4/btrS5jUb2sJ/ICmfZKFY8ufnSFE288GDj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuXlJ4%2FbtrS5jUb2sJ%2FICmfZKFY8ufnSFE288GDj0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;477&quot; height=&quot;524&quot; data-filename=&quot;5.환경변수.png&quot; data-origin-width=&quot;477&quot; data-origin-height=&quot;524&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;6.환경변수 -path.png&quot; data-origin-width=&quot;436&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPv5V0/btrS5N8kmea/MKjhSGpXd9wx0YB8Grfey1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPv5V0/btrS5N8kmea/MKjhSGpXd9wx0YB8Grfey1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPv5V0/btrS5N8kmea/MKjhSGpXd9wx0YB8Grfey1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPv5V0%2FbtrS5N8kmea%2FMKjhSGpXd9wx0YB8Grfey1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;436&quot; height=&quot;480&quot; data-filename=&quot;6.환경변수 -path.png&quot; data-origin-width=&quot;436&quot; data-origin-height=&quot;480&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-filename=&quot;7.환경변수 편집.png&quot; data-origin-width=&quot;518&quot; data-origin-height=&quot;376&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/doZFFX/btrS5Nghv2v/kw866jkwev3TP8KkbNlaD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/doZFFX/btrS5Nghv2v/kw866jkwev3TP8KkbNlaD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/doZFFX/btrS5Nghv2v/kw866jkwev3TP8KkbNlaD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdoZFFX%2FbtrS5Nghv2v%2Fkw866jkwev3TP8KkbNlaD1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;518&quot; height=&quot;376&quot; data-filename=&quot;7.환경변수 편집.png&quot; data-origin-width=&quot;518&quot; data-origin-height=&quot;376&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4.&amp;nbsp; cmd 창을 열고, flyway라고 입력했을 때, 아래와 같은 flyway 명령어 안내 문구가 나온다면, 환경변수에 정상적으로 등록된 것입니다.&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;9-1.cmd확인.png&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;563&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cywm0j/btrS5OlS6S5/0SSiK1l0NWCwo6EPKx82k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cywm0j/btrS5OlS6S5/0SSiK1l0NWCwo6EPKx82k1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cywm0j/btrS5OlS6S5/0SSiK1l0NWCwo6EPKx82k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcywm0j%2FbtrS5OlS6S5%2F0SSiK1l0NWCwo6EPKx82k1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;522&quot; height=&quot;377&quot; data-filename=&quot;9-1.cmd확인.png&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;563&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 이제 설정파일에서 flyway와 데이터베이스를 연동할 차례입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같은 경로에 conf 파일이 하나 있습니다. 이 파일은 설정파일 견본파일입니다.&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;이 파일을 직접 수정해도 좋고, 이름을 바꾸어 따로 백업해두고, 필요한 속성만 담은 conf 파일을 생성해서 사용하여도 좋습니다.&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;설정파일은 flyway-{version}/conf/flyway.conf 경로와 파일명을 지켜주어야 합니다.&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;6. 해당하는 파일을 열어서 url, user, password, 그리고 locations 경로를 설정해줍니다.&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;6-1. 먼저 url, user, password를 설정합니다. driver는 flyway가 url을 가지고 알아서 탐지해서 설정해주므로, 생략 가능합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;11.url설정.png&quot; data-origin-width=&quot;434&quot; data-origin-height=&quot;216&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ULlOp/btrS5OTGVNk/anpDVbzCbFkkM9zxHBCp8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ULlOp/btrS5OTGVNk/anpDVbzCbFkkM9zxHBCp8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ULlOp/btrS5OTGVNk/anpDVbzCbFkkM9zxHBCp8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FULlOp%2FbtrS5OTGVNk%2FanpDVbzCbFkkM9zxHBCp8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;434&quot; height=&quot;216&quot; data-filename=&quot;11.url설정.png&quot; data-origin-width=&quot;434&quot; data-origin-height=&quot;216&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;6-2. 그다음, flyway.locations 키 값에, migration script file이 위치하는 경로를 설정해줍니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;경로는 filesystem 또는 classpath 로 시작합니다.&lt;/li&gt;
&lt;li&gt;경로가 여러개일 경우, 쉼표(,)로 구분하여 작성합니다.&lt;/li&gt;
&lt;li&gt;application.properties에서 dbms에 따라 경로를 동적으로 라우팅할 때 {vendor}와 같은 프로퍼티 기반 설정을 사용하여 동적으로 경로를 분기할 수 있었습니다. &lt;b&gt;하지만 cli tool의 locations 설정에서는 {vendor}와 같은 프로퍼티 기반 설정은 동작하지 않습니다. 반드시 명확히 명시해주어야 합니다.&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프로젝트에서 아래와 같은 migration file 패키지 구조를 가지고 있을 때,&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;12.패키지구조.png&quot; data-origin-width=&quot;268&quot; data-origin-height=&quot;219&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lNUrO/btrS4345K6E/VNNI73z1ay3zqKjHYayECK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lNUrO/btrS4345K6E/VNNI73z1ay3zqKjHYayECK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lNUrO/btrS4345K6E/VNNI73z1ay3zqKjHYayECK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlNUrO%2FbtrS4345K6E%2FVNNI73z1ay3zqKjHYayECK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;268&quot; height=&quot;219&quot; data-filename=&quot;12.패키지구조.png&quot; data-origin-width=&quot;268&quot; data-origin-height=&quot;219&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;b&gt;flyway.conf 에서는 아래와 같이 locations를 정의하면 됩니다.&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1670463581105&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;flyway.locations=filesystem:D:\projects\flyway-pilot\src\main\resources\db\migration\mariadb, filesystem:D:\projects\flyway-pilot\src\main\resources\db\seed&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;아래는 flyway.conf에서 반드시 필요한 속성만을 모아놓은 예시입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1670464319691&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# jdbc url 경로
flyway.url=jdbc:mariadb://localhost:3306/flyway_test

# db 유저명
flyway.user=tester

# db 유저의 패스워드
flyway.password=pass111
 
# flyway migration script file을 저장할 폴더.
# 여러개를 지정할 경우 , 로 구분한다.
# filesystem 또는 classpath 로 지정한다.
# ${HOME} 또는 {vendor} 같이 property 기반 설정은 동작하지 않는다.
 flyway.locations=filesystem:D:\projects\flyway-pilot\src\main\resources\db\migration\mariadb, filesystem:D:\projects\flyway-pilot\src\main\resources\db\seed&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;이제 cmd에서 flyway info 명령어를 입력해봅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;info 명령어는 모든 마이그레이션에 대한 세부 정보와 적용 상태를 테이블로 보여주는 명령어입니다.&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;아래 사진과 같이 migration file 정보를 표시하는 테이블이 나타난다면, flyway가 정상적으로 db와 locations 에 접근했다는 뜻입니다.&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;info 이외에도, migration, validate 등, 여러가지 명령어를 사용해서 flyway를 조작할 수 있습니다.&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://flywaydb.org/documentation/usage/commandline/#commands&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식문서&lt;/a&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;14.명령어.png&quot; data-origin-width=&quot;883&quot; data-origin-height=&quot;372&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bh0nCU/btrS8vTfMbg/eo0zCZpfG7pOKwb8zbKYlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bh0nCU/btrS8vTfMbg/eo0zCZpfG7pOKwb8zbKYlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bh0nCU/btrS8vTfMbg/eo0zCZpfG7pOKwb8zbKYlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbh0nCU%2FbtrS8vTfMbg%2Feo0zCZpfG7pOKwb8zbKYlk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;883&quot; height=&quot;372&quot; data-filename=&quot;14.명령어.png&quot; data-origin-width=&quot;883&quot; data-origin-height=&quot;372&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;지금까지 windows local 환경에서 flyway cli tool을 set up 하는 방법을 알아보았습니다.&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;참조 : &lt;a href=&quot;https://flywaydb.org/documentation/usage/commandline/#commands&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://flywaydb.org/documentation/usage/commandline/#commands&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.lesstif.com/java/flyway-java-database-migration-framework-17105261.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.lesstif.com/java/flyway-java-database-migration-framework-17105261.html&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Tools/Flyway</category>
      <author>까뮈_b</author>
      <guid isPermaLink="true">https://devcamus.tistory.com/29</guid>
      <comments>https://devcamus.tistory.com/29#entry29comment</comments>
      <pubDate>Thu, 8 Dec 2022 11:05:31 +0900</pubDate>
    </item>
    <item>
      <title>IntelliJ에서 한글 사용 시, 블럭처리 되는 현상 해결(Non-ASCII Characters alert 해제)</title>
      <link>https://devcamus.tistory.com/28</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;인텔리제이 또는 그와 유사한 JetBrains IDE에서는 ASCII 문자가 아닌 문자에 대해서 마치 드래그 선택한 것 마냥 블록 처리를 해서 보여준다. 아마 초기 세팅값이 이런 것 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;non-ascii characters.png&quot; data-origin-width=&quot;561&quot; data-origin-height=&quot;193&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pqIKV/btrQ0GwAuH5/hYHtR3tKDosq8KidECXJDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pqIKV/btrQ0GwAuH5/hYHtR3tKDosq8KidECXJDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pqIKV/btrQ0GwAuH5/hYHtR3tKDosq8KidECXJDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpqIKV%2FbtrQ0GwAuH5%2FhYHtR3tKDosq8KidECXJDK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;561&quot; height=&quot;193&quot; data-filename=&quot;non-ascii characters.png&quot; data-origin-width=&quot;561&quot; data-origin-height=&quot;193&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ctrl + Shift + S 또는 File - Settings 로 설정 창을 연 뒤,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;Editor &amp;gt; Inspections 에서 아래 사진과 같이 &lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;Non-ASCII characters 에 체크를 해제 시켜준다.&lt;/span&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-filename=&quot;non-ascii characters2.png&quot; data-origin-width=&quot;1722&quot; data-origin-height=&quot;1061&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beZX57/btrQZyF12cD/dI7WKFUpU60zy1E5fKJWWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beZX57/btrQZyF12cD/dI7WKFUpU60zy1E5fKJWWk/img.png&quot; data-alt=&quot;Non-ASCII characters 해제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beZX57/btrQZyF12cD/dI7WKFUpU60zy1E5fKJWWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeZX57%2FbtrQZyF12cD%2FdI7WKFUpU60zy1E5fKJWWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1722&quot; height=&quot;1061&quot; data-filename=&quot;non-ascii characters2.png&quot; data-origin-width=&quot;1722&quot; data-origin-height=&quot;1061&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Non-ASCII characters 해제&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고 : &lt;a href=&quot;https://www.lesstif.com/php-and-laravel/phpstorm-intellij-non-ascii-characters-in-an-identifier-91947359.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.lesstif.com/php-and-laravel/phpstorm-intellij-non-ascii-characters-in-an-identifier-91947359.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1668218924412&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;PHPStorm 이나 IntelliJ 에서 한글 변수명 사용시 &amp;quot;Non-ASCII characters in an identifier&amp;quot; 경고 끄기&quot; data-og-description=&quot;&quot; data-og-host=&quot;www.lesstif.com&quot; data-og-source-url=&quot;https://www.lesstif.com/php-and-laravel/phpstorm-intellij-non-ascii-characters-in-an-identifier-91947359.html&quot; data-og-url=&quot;https://www.lesstif.com/php-and-laravel/phpstorm-intellij-non-ascii-characters-in-an-identifier-91947359.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.lesstif.com/php-and-laravel/phpstorm-intellij-non-ascii-characters-in-an-identifier-91947359.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.lesstif.com/php-and-laravel/phpstorm-intellij-non-ascii-characters-in-an-identifier-91947359.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;PHPStorm 이나 IntelliJ 에서 한글 변수명 사용시 &quot;Non-ASCII characters in an identifier&quot; 경고 끄기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.lesstif.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Tools/IntelliJ</category>
      <category>IntelliJ</category>
      <category>Non-ASCII Characters</category>
      <author>까뮈_b</author>
      <guid isPermaLink="true">https://devcamus.tistory.com/28</guid>
      <comments>https://devcamus.tistory.com/28#entry28comment</comments>
      <pubDate>Sat, 12 Nov 2022 11:08:53 +0900</pubDate>
    </item>
    <item>
      <title>ES6) 화살표 함수에서 매개변수가 하나일 때에도 괄호를 생략할 수 없는 경우</title>
      <link>https://devcamus.tistory.com/27</link>
      <description>&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_1667636297226&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let double = n =&amp;gt; n * 2;&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;p data-ke-size=&quot;size16&quot;&gt;하지만, 전달하는 매개변수를&amp;nbsp;&lt;b&gt;구조 분해 할당&lt;/b&gt;으로 받는 경우에는, 인수가 하나여도 괄호를 생략하면 오류가 발생한다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가령, 객체의 너비를 두배로 계산해주는 doubleV2 함수를 정의한다고 가정해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;doubleV2 함수는 넘겨받은 객체의 너비값(width 프로퍼티)만을 구조 분해 할당으로 분해하여 인수로 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 경우, 파라미터가 하나여도, 매개변수에 괄호를 생략할 수 없다.&lt;/p&gt;
&lt;pre id=&quot;code_1667641378881&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const double = {width} =&amp;gt; width * 2;  (X)
const double = ({width}) =&amp;gt; width * 2;  (O)&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 구조 분해 할당을 이용해, &lt;span style=&quot;background-color: #ffffff; color: #313130;&quot;&gt;객체 프로퍼티를 프로퍼티 키와 다른 이름을 가진 변수에 저장할 수 있음을 알고 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #313130;&quot;&gt;아래와 같이 말이다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1667639238512&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let options = {
  title: &quot;Menu&quot;,
  width: 100,
  height: 200
};

// { 객체 프로퍼티: 목표 변수 }
let {width: w, height: h, title} = options;

// width -&amp;gt; w
// height -&amp;gt; h
// title -&amp;gt; title

console.log(title);  // Menu
console.log(w);      // 100
console.log(h);      // 200&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배로 계산하는 doubleV3는 이런 식으로 작성할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1667641598310&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let options = {
  title: &quot;Menu&quot;,
  width: 100,
  height: 200,
};

const double = ({width : w}) =&amp;gt; w * 2;

console.log(double(options));   // 200&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;&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;/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://ko.javascript.info/destructuring-assignment&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://ko.javascript.info/destructuring-assignment&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667639340689&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;구조 분해 할당&quot; data-og-description=&quot;&quot; data-og-host=&quot;ko.javascript.info&quot; data-og-source-url=&quot;https://ko.javascript.info/destructuring-assignment&quot; data-og-url=&quot;https://ko.javascript.info/destructuring-assignment&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/brS9RR/hyQsbKwcuG/ogjhbmkFyheblS8qjZfNT0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bZjxFH/hyQscbAgfN/2MIynXEkSeqRqE2DOxkKQk/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512&quot;&gt;&lt;a href=&quot;https://ko.javascript.info/destructuring-assignment&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ko.javascript.info/destructuring-assignment&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/brS9RR/hyQsbKwcuG/ogjhbmkFyheblS8qjZfNT0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bZjxFH/hyQscbAgfN/2MIynXEkSeqRqE2DOxkKQk/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512');&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;구조 분해 할당&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ko.javascript.info&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ko.javascript.info/arrow-functions-basics&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://ko.javascript.info/arrow-functions-basics&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667639349948&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;화살표 함수 기본&quot; data-og-description=&quot;&quot; data-og-host=&quot;ko.javascript.info&quot; data-og-source-url=&quot;https://ko.javascript.info/arrow-functions-basics&quot; data-og-url=&quot;https://ko.javascript.info/arrow-functions-basics&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bgW1uj/hyQsf0qKQS/vYVFHsPCWPKmFLc1G0kfKK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/2vScZ/hyQtzCZpbu/Kkh6m2DQ16gNF1BVakOPK1/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512&quot;&gt;&lt;a href=&quot;https://ko.javascript.info/arrow-functions-basics&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ko.javascript.info/arrow-functions-basics&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bgW1uj/hyQsf0qKQS/vYVFHsPCWPKmFLc1G0kfKK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/2vScZ/hyQtzCZpbu/Kkh6m2DQ16gNF1BVakOPK1/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512');&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;화살표 함수 기본&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ko.javascript.info&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹시 잘못된 부분이나, 보충이 필요한 부분이 있으면 댓글 남겨주시면 감사하겠습니다!&lt;/p&gt;</description>
      <category>JavaScript</category>
      <category>ES6</category>
      <category>Javascript</category>
      <category>TypeScript</category>
      <category>구조 분해 할당</category>
      <category>화살표 함수</category>
      <author>까뮈_b</author>
      <guid isPermaLink="true">https://devcamus.tistory.com/27</guid>
      <comments>https://devcamus.tistory.com/27#entry27comment</comments>
      <pubDate>Sat, 5 Nov 2022 18:55:44 +0900</pubDate>
    </item>
    <item>
      <title>WebStorm에서 단축키로 Prettier formatting 하기(feat. ESLint 비활성화)</title>
      <link>https://devcamus.tistory.com/26</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;nest cli로 nest.js 프로젝트를 init하면, eslint와 prettier가 함께 설정된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘은 모르지만, 아마 react나 vue 같은 프론트 웹프레임워크도 마찬가지일 것이다.&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;lint나 formatting 규격을 정하는 것은 정말 중요한 일이지만,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바스크립트 기반 프레임워크를 처음 접하는 초심자 입장에서 eslint니, prettier니 하는 것들은 혼란만 가중시키는 요소라고 생각된다.&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;b&gt;ESLint는 이름에서도 알 수 있다 시피 그냥 Lint, 즉 정적분석 도구이다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;그리고 prettier는 포맷터, 즉 코드 정렬을 알잘딱깔센 정렬해주는 도구이다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초보 입장에서, 초기 설정의 eslint는 너무 깐깐해서 온갖 곳에 빨간 줄을 다 그어버리기 때문에, 더욱 혼란만 가중시킨다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일일히 설정을 바꾸다가 개발 시작도 전에 지쳐버릴 수 있으므로, 바로 꺼버리도록 하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. ctrl + alt + s 또는 File -&amp;gt; Settings 에서 EsLint를 검색하고, Disable ESLint에 체크한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;eslint 비활성화.png&quot; data-origin-width=&quot;1193&quot; data-origin-height=&quot;373&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VUMTl/btrQqMrmcje/2GKkBKFpp1x2kzeCEhSLXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VUMTl/btrQqMrmcje/2GKkBKFpp1x2kzeCEhSLXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VUMTl/btrQqMrmcje/2GKkBKFpp1x2kzeCEhSLXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVUMTl%2FbtrQqMrmcje%2F2GKkBKFpp1x2kzeCEhSLXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;822&quot; height=&quot;257&quot; data-filename=&quot;eslint 비활성화.png&quot; data-origin-width=&quot;1193&quot; data-origin-height=&quot;373&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 환경설정 -&amp;gt; Languages &amp;amp; Frameworks -&amp;gt; JavaScript -&amp;gt; Prettier 항목에서 Prettier package 설정이 올바로 되어있는지 확인하자. 해당 패키지의 node_modules/prettier 라고 잘 세팅되어 있을 것이다. 만약 비어있다면 설정을 해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;prettier 설정.png&quot; data-origin-width=&quot;1195&quot; data-origin-height=&quot;293&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cyV5iv/btrQp5LG917/f6EtHzKtdESoQ5AsFiHXT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cyV5iv/btrQp5LG917/f6EtHzKtdESoQ5AsFiHXT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cyV5iv/btrQp5LG917/f6EtHzKtdESoQ5AsFiHXT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcyV5iv%2FbtrQp5LG917%2Ff6EtHzKtdESoQ5AsFiHXT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1195&quot; height=&quot;293&quot; data-filename=&quot;prettier 설정.png&quot; data-origin-width=&quot;1195&quot; data-origin-height=&quot;293&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;3. 환경설정 -&amp;gt; Keymap -&amp;gt; prettier 검색하여 Reformat with Prettier 항목에 대해 단축키를 설정한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;keymap.png&quot; data-origin-width=&quot;1190&quot; data-origin-height=&quot;346&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MFEbz/btrQqjpn4FK/m5M9dd0ebdCnIveJwWzQp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MFEbz/btrQqjpn4FK/m5M9dd0ebdCnIveJwWzQp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MFEbz/btrQqjpn4FK/m5M9dd0ebdCnIveJwWzQp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMFEbz%2FbtrQqjpn4FK%2Fm5M9dd0ebdCnIveJwWzQp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1190&quot; height=&quot;346&quot; data-filename=&quot;keymap.png&quot; data-origin-width=&quot;1190&quot; data-origin-height=&quot;346&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 해당 단축키를 누르면, prettier 설정에 맞게 formatting 되는 것을 확인할 수 있다!&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;formatting.png&quot; data-origin-width=&quot;717&quot; data-origin-height=&quot;143&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dv7pJS/btrQrHQliE4/8iT3KITEFK4SDWGj5Vz3jk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dv7pJS/btrQrHQliE4/8iT3KITEFK4SDWGj5Vz3jk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dv7pJS/btrQrHQliE4/8iT3KITEFK4SDWGj5Vz3jk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdv7pJS%2FbtrQrHQliE4%2F8iT3KITEFK4SDWGj5Vz3jk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;717&quot; height=&quot;143&quot; data-filename=&quot;formatting.png&quot; data-origin-width=&quot;717&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;※ 당연하게도, WebStorm 자체에서 지원하는 자동 정렬과는 다르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘 중 어느 것을 써야할 지 헷갈릴 수 있으니, 그냥 기본 자동정렬 단축키를 해제하고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ctrl + Alt + L 을 Prettier format 단축키로 설정해서 사용하는 방법도 좋아보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;단축키 변경.png&quot; data-origin-width=&quot;872&quot; data-origin-height=&quot;122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ca8Tas/btrQqK75zhE/Y7HjIwCTpLXtNJjowQIvL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ca8Tas/btrQqK75zhE/Y7HjIwCTpLXtNJjowQIvL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ca8Tas/btrQqK75zhE/Y7HjIwCTpLXtNJjowQIvL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fca8Tas%2FbtrQqK75zhE%2FY7HjIwCTpLXtNJjowQIvL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;872&quot; height=&quot;122&quot; data-filename=&quot;단축키 변경.png&quot; data-origin-width=&quot;872&quot; data-origin-height=&quot;122&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Tools/WebStorm</category>
      <category>eslint</category>
      <category>keymap</category>
      <category>nestjs</category>
      <category>prettier</category>
      <category>webstorm</category>
      <category>webstorm keymap</category>
      <author>까뮈_b</author>
      <guid isPermaLink="true">https://devcamus.tistory.com/26</guid>
      <comments>https://devcamus.tistory.com/26#entry26comment</comments>
      <pubDate>Sat, 5 Nov 2022 17:05:29 +0900</pubDate>
    </item>
    <item>
      <title>AWS ElasticBeanstalk 콘솔에서 RDS 연결이 되지 않는 문제 해결</title>
      <link>https://devcamus.tistory.com/23</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ebs-rds 추가 에러.png&quot; data-origin-width=&quot;833&quot; data-origin-height=&quot;479&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RDp4H/btrFVg2qOdJ/TDRgMNkrWb9yE0tGHxrjv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RDp4H/btrFVg2qOdJ/TDRgMNkrWb9yE0tGHxrjv0/img.png&quot; data-alt=&quot;Elasticbeanstalk 환경에서 RDS를 연결하려고 할 때 발생하는 오류&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RDp4H/btrFVg2qOdJ/TDRgMNkrWb9yE0tGHxrjv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRDp4H%2FbtrFVg2qOdJ%2FTDRgMNkrWb9yE0tGHxrjv0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;833&quot; height=&quot;479&quot; data-filename=&quot;ebs-rds 추가 에러.png&quot; data-origin-width=&quot;833&quot; data-origin-height=&quot;479&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Elasticbeanstalk 환경에서 RDS를 연결하려고 할 때 발생하는 오류&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;증상&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ElasticBeanstalk 환경을 생성하면서, RDS를 사용하기 위해 ebs 콘솔에서 RDS를 생성(연결)하려고 하면, 위와 같은 에러가 발생한다.에러 메세지는 이렇다.&amp;nbsp;&lt;/li&gt;
&lt;li class=&quot;pgsql&quot;&gt;&lt;code&gt;Configuration validation exception: Invalid option value: '5.6' (Namespace: 'aws:rds:dbinstance', OptionName: 'DBEngineVersion'): Engine Version 5.6 not supported for mysql db&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&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;Mysql 5.6버전을 더 이상 supported 하지 않아서 그렇다&lt;/b&gt;.&lt;br /&gt;그런데 조금 황당하다.아마도 ElasticBeanstalk 웹 콘솔에서 rds 설정 기본값이 mysql 5.6버전인데, 이것을 deprecated 처리를 해놓고, 웹 콘솔에는 반영하지 않아서 생긴 &lt;b&gt;버그&lt;/b&gt; 같다. 나는 애초에 Mysql 5.6버전을 사용할 의사가 없다.&lt;br /&gt;첫 화면에서부터 저 오류가 뜨고 아무 것도 선택할 수가 없다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;해결법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해결법은 간단하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ElasticBeanstalk cli 환경에서 config 값을 수정만 해주면 된다&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ElasticBeanstalk 는 웹 콘솔 뿐만 아니라 cli 환경도 제공한다. 아무래도 cli을 쓰는 편이 여러모로 나은 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 오류 해결에서는 ElasticBeanstalk CLI를 설치하는 것이 9할 9푼이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. AWS ElasticBeanstalk CLI 설치(설치 스크립트 사용하는 방법)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 레포지토리의 설명대로 설치하면 된다. &lt;b&gt;단, python이 아니라 python3 라고 명시해주어야한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/aws/aws-elastic-beanstalk-cli-setup&quot;&gt;https://github.com/aws/aws-elastic-beanstalk-cli-setup&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656332785470&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - aws/aws-elastic-beanstalk-cli-setup: Simplified EB CLI installation mechanism.&quot; data-og-description=&quot;Simplified EB CLI installation mechanism. Contribute to aws/aws-elastic-beanstalk-cli-setup development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/aws/aws-elastic-beanstalk-cli-setup&quot; data-og-url=&quot;https://github.com/aws/aws-elastic-beanstalk-cli-setup&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ANNgd/hyOSO4EJhZ/vd4l2bkkc6btwdpyPlsHLK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/aws/aws-elastic-beanstalk-cli-setup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/aws/aws-elastic-beanstalk-cli-setup&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ANNgd/hyOSO4EJhZ/vd4l2bkkc6btwdpyPlsHLK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - aws/aws-elastic-beanstalk-cli-setup: Simplified EB CLI installation mechanism.&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Simplified EB CLI installation mechanism. Contribute to aws/aws-elastic-beanstalk-cli-setup development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 순서는 이렇다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 인스턴스에 접속해서, git clone을 받는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;git clone &lt;a href=&quot;https://github.com/aws/aws-elastic-beanstalk-cli-setup.git&quot;&gt;https://github.com/aws/aws-elastic-beanstalk-cli-setup.git&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. EB CLI 설치 스크립트를 실행한다. &lt;b&gt;(반드시 python3으로 설치해야한다!!)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;python3 ./aws-elastic-beanstalk-cli-setup/scripts/ebcli_installer.py&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fafafa;&quot;&gt;&amp;lt;더보기&amp;gt;를 클릭하면 python3를 사용하지 않고 문서 그대로만 따라했을 때 겪게 되는 과정을 차례로 기술했다.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;python3를 사용하지 않고 문서 그대로만 따라하면 겪게 되는 과정을 나열해보겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;python ./aws-elastic-beanstalk-cli-setup/scripts/ebcli_installer.py&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서, python virtualenv 가 없다는 에러가 뜬다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;python venv error.png&quot; data-origin-width=&quot;965&quot; data-origin-height=&quot;159&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w711V/btrFUiNhUqz/GPe8zGrU2YHPUszEYPc5h0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w711V/btrFUiNhUqz/GPe8zGrU2YHPUszEYPc5h0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w711V/btrFUiNhUqz/GPe8zGrU2YHPUszEYPc5h0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw711V%2FbtrFUiNhUqz%2FGPe8zGrU2YHPUszEYPc5h0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;965&quot; height=&quot;159&quot; data-filename=&quot;python venv error.png&quot; data-origin-width=&quot;965&quot; data-origin-height=&quot;159&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;virtualenv를 깔아주자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;pip install --user virtualenv&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;bash: pip: command not found 메세지가 뜨면서 명령어 실행이 되지 않을 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pip부터 깔아주자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;sudo yum -y install python-pip&lt;/b&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;b&gt;pip install --user virtualenv&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;python ./aws-elastic-beanstalk-cli-setup/scripts/ebcli_installer.py&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 끝나면 섭섭하지. 다른 오류가 발생했다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;version error.png&quot; data-origin-width=&quot;879&quot; data-origin-height=&quot;163&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFbI45/btrFTOTsvul/H5lKNTKlkUv1gImVvMfilk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFbI45/btrFTOTsvul/H5lKNTKlkUv1gImVvMfilk/img.png&quot; data-alt=&quot;Could not find a version that satisfies the requirement botocore&amp;amp;lt;1.24.0,&amp;amp;gt;1.23.41 (from awsebcli)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFbI45/btrFTOTsvul/H5lKNTKlkUv1gImVvMfilk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFbI45%2FbtrFTOTsvul%2FH5lKNTKlkUv1gImVvMfilk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;879&quot; height=&quot;163&quot; data-filename=&quot;version error.png&quot; data-origin-width=&quot;879&quot; data-origin-height=&quot;163&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Could not find a version that satisfies the requirement botocore&amp;lt;1.24.0,&amp;gt;1.23.41 (from awsebcli)&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;python 2 버전은 deprecated 된 지 오래다. 아마도 여기가 문제인 것 같다. python3를 깔아주자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭐든지 install 전에는 현재 설치되어있는지 버전 확인부터 해야한다. 헛수고를 하지 않기 위해..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;python3 --version&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;으로 확인해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나의 경우에는 python3와 pip3도 깔려있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 왜 위에서 python2가 deprecated 되었다는 메세지와 함께 에러를 뿜었을까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;pip는 python2의 패키지 매니저라서 그렇다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;python3, pip3를 사용하겠다고 명시해서 eb-cli를 설치해주자&lt;/b&gt;.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;교훈 : 앞으로는 python3만 사용하자...&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;python3 ./aws-elastic-beanstalk-cli-setup/scripts/ebcli_installer.py&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 설치가 잘 되었는지 확인해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;eb --version&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치가 잘 되었다면 이제 기본 환경 설정을 해주고, config를 수정해주면 끝이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. ElasticBeanstalk 기본 환경 설정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;eb init&lt;/b&gt;&amp;nbsp;명령어를 입력 후 region을 선택하고, 어플리케이션을 선택한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;eb init.png&quot; data-origin-width=&quot;353&quot; data-origin-height=&quot;389&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p6LDY/btrFRdNdU4K/ZGMfcg7hFwVRkFxeIZWln1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p6LDY/btrFRdNdU4K/ZGMfcg7hFwVRkFxeIZWln1/img.png&quot; data-alt=&quot;region 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p6LDY/btrFRdNdU4K/ZGMfcg7hFwVRkFxeIZWln1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp6LDY%2FbtrFRdNdU4K%2FZGMfcg7hFwVRkFxeIZWln1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;353&quot; height=&quot;389&quot; data-filename=&quot;eb init.png&quot; data-origin-width=&quot;353&quot; data-origin-height=&quot;389&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;region 선택&lt;/figcaption&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-filename=&quot;eb init-2.png&quot; data-origin-width=&quot;249&quot; data-origin-height=&quot;75&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sQnyy/btrFTN77cmf/6wczOzdqRifkaH5WupYQkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sQnyy/btrFTN77cmf/6wczOzdqRifkaH5WupYQkK/img.png&quot; data-alt=&quot;어플리케이션 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sQnyy/btrFTN77cmf/6wczOzdqRifkaH5WupYQkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsQnyy%2FbtrFTN77cmf%2F6wczOzdqRifkaH5WupYQkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;249&quot; height=&quot;75&quot; data-filename=&quot;eb init-2.png&quot; data-origin-width=&quot;249&quot; data-origin-height=&quot;75&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;어플리케이션 선택&lt;/figcaption&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;3. ElasticBeanstalk config 파일 수정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;eb config&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;명령어를 입력하여 config 파일에 접근한 뒤, 맨 아래에 aws:rds:dbinstance 설정을 아래와 같이 변경해준다.&lt;/p&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;aws:rds:dbinstance:
  HasCoupledDatabase: 'false'
  DBEngineVersion: '8.0'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nano 사용법에 익숙하지 않았던 나는, 아래 키 설명대로 ctrl + o 로 저장을 했을 때 따로 저장을 확실하게 끝내고 나가는 단축키가 없어서 당황스러웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당황하지 말고, ctrl + o 를 눌렀으면 Enter를 눌러서 빠져나온 뒤, ctrl + x 로 nano를 종료하면 잘 저장된다.&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;저장 성공.png&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;62&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cu5xGu/btrFTNNOPzT/STdFKcc0pM77WJ2pe0o3uk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cu5xGu/btrFTNNOPzT/STdFKcc0pM77WJ2pe0o3uk/img.png&quot; data-alt=&quot;저장을 하면, 바뀐 config에 맞게 환경을 업데이트 한다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cu5xGu/btrFTNNOPzT/STdFKcc0pM77WJ2pe0o3uk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcu5xGu%2FbtrFTNNOPzT%2FSTdFKcc0pM77WJ2pe0o3uk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;756&quot; height=&quot;62&quot; data-filename=&quot;저장 성공.png&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;62&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;저장을 하면, 바뀐 config에 맞게 환경을 업데이트 한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;이제, ElasticBeanstalk&lt;span&gt; 웹 콘솔에서 정상적으로 RDS를 추가할 수 있다!&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;구성성공적.png&quot; data-origin-width=&quot;671&quot; data-origin-height=&quot;783&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmeHgv/btrFVvkV7HJ/kSr6WlZDOckOvKHoDdUcx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmeHgv/btrFVvkV7HJ/kSr6WlZDOckOvKHoDdUcx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmeHgv/btrFVvkV7HJ/kSr6WlZDOckOvKHoDdUcx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmeHgv%2FbtrFVvkV7HJ%2FkSr6WlZDOckOvKHoDdUcx0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;671&quot; height=&quot;783&quot; data-filename=&quot;구성성공적.png&quot; data-origin-width=&quot;671&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고 : &lt;a href=&quot;https://stackoverflow.com/questions/71209961/cant-set-rds-while-creating-elastic-beanstalk&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/questions/71209961/cant-set-rds-while-creating-elastic-beanstalk&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656335112254&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Can't set RDS while creating Elastic Beanstalk&quot; data-og-description=&quot;I'm trying to create a Elastic Beanstalk environment with node.js platform. When I try to add RDS in EB, console is throwing error and I don't know the reason why. If you have any idea, plz leave a&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/71209961/cant-set-rds-while-creating-elastic-beanstalk&quot; data-og-url=&quot;https://stackoverflow.com/questions/71209961/cant-set-rds-while-creating-elastic-beanstalk&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fLStl/hyOUUWwDZ5/5A4oRKRDYL3whbeRh0lBqk/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/71209961/cant-set-rds-while-creating-elastic-beanstalk&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/71209961/cant-set-rds-while-creating-elastic-beanstalk&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fLStl/hyOUUWwDZ5/5A4oRKRDYL3whbeRh0lBqk/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&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;Can't set RDS while creating Elastic Beanstalk&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;I'm trying to create a Elastic Beanstalk environment with node.js platform. When I try to add RDS in EB, console is throwing error and I don't know the reason why. If you have any idea, plz leave a&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/eb-cli3-install.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/eb-cli3-install.html&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AWS</category>
      <category>AWS</category>
      <category>AWS ElasticBeanstalk</category>
      <category>DBEngineVersion</category>
      <category>ElasticBeanstalk</category>
      <category>ElasticBeanstalk 버그</category>
      <category>RDS</category>
      <category>오류 해결</category>
      <author>까뮈_b</author>
      <guid isPermaLink="true">https://devcamus.tistory.com/23</guid>
      <comments>https://devcamus.tistory.com/23#entry23comment</comments>
      <pubDate>Mon, 27 Jun 2022 21:28:25 +0900</pubDate>
    </item>
    <item>
      <title>[Ngnix] connect() failed (111: Connection refused) while connecting to upstream 에러 해결</title>
      <link>https://devcamus.tistory.com/21</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;스프링부트를 github action과 AWS CodeDeploy를 이용하여 무중단 배포 환경을 구성하는 도중,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같은 nginx 에러를 만났다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;error 111.png&quot; data-origin-width=&quot;789&quot; data-origin-height=&quot;19&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxGLMw/btrFT0rPRq2/JFjdHhKX7YkniYuckSqNsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxGLMw/btrFT0rPRq2/JFjdHhKX7YkniYuckSqNsk/img.png&quot; data-alt=&quot;nginx error.log 에러 메시지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxGLMw/btrFT0rPRq2/JFjdHhKX7YkniYuckSqNsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxGLMw%2FbtrFT0rPRq2%2FJFjdHhKX7YkniYuckSqNsk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;789&quot; height=&quot;19&quot; data-filename=&quot;error 111.png&quot; data-origin-width=&quot;789&quot; data-origin-height=&quot;19&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;nginx error.log 에러 메시지&lt;/figcaption&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;[error] 15761#15761: *47 connect() failed (111: Connection refused) while connecting to upstream, cl&quot;&lt;a href=&quot;http://127.0.0.1:8080/profile%22&quot;&gt;http://127.0.0.1:8080/profile&quot;&lt;/a&gt;, host: &quot;localhost&quot;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;원인&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;upstream(&lt;a href=&quot;http://127.0.0.1:8080/profile&quot;&gt;http://127.0.0.1:8080/profile)에&lt;/a&gt;%EC%97%90) 접근할 수 없어서 발생하는 오류. 해당 포트번호가 닫혀있는데, 접근하려니 연결에 실패하는 것이다. 해당 포트번호로 부트가 떠있지 않은 상태인데, health check를 하면서 생기는 오류다. 일단 해당 주소:포트번호가 열려있는지 확인해보는 것이 필요하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;해결&lt;/b&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 해당 port가 열려있는지, listening 포트를 검색&lt;/h4&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;sudo netstat -plant | grep '80'`&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 명령어를 수행했을 때 '80'이 포함된 모든 listening 포트 목록이 뜬다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;8081.png&quot; data-origin-width=&quot;737&quot; data-origin-height=&quot;16&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oj3F2/btrFNGaRXwg/HisokAd7SekbvKJ3NaGWN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oj3F2/btrFNGaRXwg/HisokAd7SekbvKJ3NaGWN0/img.png&quot; data-alt=&quot;netstat 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oj3F2/btrFNGaRXwg/HisokAd7SekbvKJ3NaGWN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Foj3F2%2FbtrFNGaRXwg%2FHisokAd7SekbvKJ3NaGWN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;737&quot; height=&quot;16&quot; data-filename=&quot;8081.png&quot; data-origin-width=&quot;737&quot; data-origin-height=&quot;16&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;netstat 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 1의 과정을 통해, 부트가 8080번이 아닌, 8081번으로 떠있는 것을 알았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해결의 실마리를 바로 찾았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nginx를 리버스 프록시 서버로 활용하여 무중단 배포 환경을 구축하기 위해, springboot를 포트번호 8081과 8082로 각각 띄우게끔 설정을 바꿔놓고, 헬스체크는 8080으로 보내고 있어서 생긴 문제라고 알아챌 수 있었다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. nginx.conf 수정&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;proxy_pass 의 주소가 &lt;span style=&quot;background-color: #ffffff; color: #4d5156;&quot;&gt;http://&lt;/span&gt;localhost&lt;span style=&quot;background-color: #ffffff; color: #4d5156;&quot;&gt;:80&lt;/span&gt;80으로 설정되어있던 부분을, 아래와 같이 $service_url 변수로 변경하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$service_url은 /etc/nginx/conf.d/service-url.inc 파일에서 가져오게끔 구성하였다. 이를 위해 아래와 같이 include 하는 문구를 추가했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;proxy_pass.png&quot; data-origin-width=&quot;561&quot; data-origin-height=&quot;170&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TJlx8/btrFNGPr7WY/x764YbomjItZFh0hlWDUC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TJlx8/btrFNGPr7WY/x764YbomjItZFh0hlWDUC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TJlx8/btrFNGPr7WY/x764YbomjItZFh0hlWDUC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTJlx8%2FbtrFNGPr7WY%2Fx764YbomjItZFh0hlWDUC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;561&quot; height=&quot;170&quot; data-filename=&quot;proxy_pass.png&quot; data-origin-width=&quot;561&quot; data-origin-height=&quot;170&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;service-url.inc 파일은 배포 스크립트를 실행하면서, 8081과 8082 사이에서 port를 전환할 때 새로 작성하게끔 구성했다.&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_1656310147788&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  echo &quot;set \$service_url http://127.0.0.1:${IDLE_PORT};&quot; | sudo tee /etc/nginx/conf.d/service-url.inc

  echo &quot;&amp;gt; 엔진엑스 Reload&quot;
  sudo service nginx reload&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;결론&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;[error] connect() failed (111: Connection refused) while connecting to upstream 에러는 upstream의 경로가 올바르지 않아서 접근할 수 없기에 발생되는 에러다. 대부분 해당하는 주소와 포트에 애플리케이션이 제대로 떠있지 않았을 때 이 에러를 마주한다. netstat을 통해 listening port 목록을 확인하고, 어플리케이션단 코드와 nginx.conf 파일을 확인하여 nginx와 애플리케이션의 주소가 서로 일치하는 지 확인하자.&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>에러노트</category>
      <category>111: Connection refused</category>
      <category>502 Bad Gateway</category>
      <category>netstat</category>
      <category>Nginx</category>
      <category>springboot</category>
      <category>리버스 프록시 서버</category>
      <category>무중단배포</category>
      <author>까뮈_b</author>
      <guid isPermaLink="true">https://devcamus.tistory.com/21</guid>
      <comments>https://devcamus.tistory.com/21#entry21comment</comments>
      <pubDate>Mon, 27 Jun 2022 15:15:02 +0900</pubDate>
    </item>
    <item>
      <title>Windows 환경에서 Github pages와 jekyll 를 활용해 나만의 블로그 웹호스팅하기</title>
      <link>https://devcamus.tistory.com/20</link>
      <description>&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;이럴 때 그냥 내 머릿속에 Input만 하고 넘어가자니, 쉽게 까먹을 것 같아서, OUTPUT을 하며 학습할 필요성을 느꼈다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이에 가장 알맞은 방법이 TIL(Today I Learned) 작성이라는 결론에 도달했다.&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;여러가지를 고려해서 TIL을 작성할 목적으로 티스토리보다는 깃허브 블로그가 더 적합하다고 생각되어 GithubPages와 jekyll을 활용하여 나만의 블로그를 호스팅 하기로 결정했다.&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;그럼 Windows 환경에서 Github pages와 jekyll 를 활용해 나만의 블로그를 호스팅하는 방법을 알아보자.&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;1.github pages 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. ruby 설치&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3.jekyll 설치&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4.jekyll 테마 적용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.github pages 생성&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;github에 로그인하여 새 레포지토리를 생성한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1.png&quot; data-origin-width=&quot;414&quot; data-origin-height=&quot;101&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CESOu/btrDFKzajQ0/7DHdPbqg8Jvgkev12M9bEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CESOu/btrDFKzajQ0/7DHdPbqg8Jvgkev12M9bEk/img.png&quot; data-alt=&quot;github pages 생성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CESOu/btrDFKzajQ0/7DHdPbqg8Jvgkev12M9bEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCESOu%2FbtrDFKzajQ0%2F7DHdPbqg8Jvgkev12M9bEk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;414&quot; height=&quot;101&quot; data-filename=&quot;1.png&quot; data-origin-width=&quot;414&quot; data-origin-height=&quot;101&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;github pages 생성&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레포지토리 이름을 {내 깃허브 닉네임.github.io} 로 설정해서 생성하면 성공적으로 github pages가 생성된 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. Ruby 설치&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://rubyinstaller.org/downloads/&quot;&gt;https://rubyinstaller.org/downloads/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;위의 사이트에 들어가서, ruby installer를 받아준다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;이미지 1.png&quot; data-origin-width=&quot;362&quot; data-origin-height=&quot;329&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HdZ3R/btrDEqnkGAs/a8RGIiQpFX8AkZIKl9Kfp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HdZ3R/btrDEqnkGAs/a8RGIiQpFX8AkZIKl9Kfp1/img.png&quot; data-alt=&quot;무슨 버전을 받을 지 모르겠다면, 사이트 우측에서 추천해주는 버전을 받으면 된다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HdZ3R/btrDEqnkGAs/a8RGIiQpFX8AkZIKl9Kfp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHdZ3R%2FbtrDEqnkGAs%2Fa8RGIiQpFX8AkZIKl9Kfp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;281&quot; height=&quot;329&quot; data-filename=&quot;이미지 1.png&quot; data-origin-width=&quot;362&quot; data-origin-height=&quot;329&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;무슨 버전을 받을 지 모르겠다면, 사이트 우측에서 추천해주는 버전을 받으면 된다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치가 완료되면, ruby commd를 실행한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;이미지 5.png&quot; data-origin-width=&quot;394&quot; data-origin-height=&quot;58&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAXmAH/btrDEoC4izL/DgZrRoUvmY7CmIQZcRZXLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAXmAH/btrDEoC4izL/DgZrRoUvmY7CmIQZcRZXLK/img.png&quot; data-alt=&quot;ruby command prompt 실행&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAXmAH/btrDEoC4izL/DgZrRoUvmY7CmIQZcRZXLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAXmAH%2FbtrDEoC4izL%2FDgZrRoUvmY7CmIQZcRZXLK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;394&quot; height=&quot;58&quot; data-filename=&quot;이미지 5.png&quot; data-origin-width=&quot;394&quot; data-origin-height=&quot;58&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ruby command prompt 실행&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ruby --version을 쳐서 아래와 같이 버전 정보가 나오면 루비가 정상적으로 설치되었다는 뜻이다.&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;111.png&quot; data-origin-width=&quot;778&quot; data-origin-height=&quot;162&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsa3Mn/btrDHe7lOLS/LP7N5NXUckCkdmqMXIGsHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsa3Mn/btrDHe7lOLS/LP7N5NXUckCkdmqMXIGsHk/img.png&quot; data-alt=&quot;루비 설치 확인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsa3Mn/btrDHe7lOLS/LP7N5NXUckCkdmqMXIGsHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbsa3Mn%2FbtrDHe7lOLS%2FLP7N5NXUckCkdmqMXIGsHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;778&quot; height=&quot;162&quot; data-filename=&quot;111.png&quot; data-origin-width=&quot;778&quot; data-origin-height=&quot;162&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;루비 설치 확인&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;jekyll은 Markdown 형식의 파일을 HTML 파일로 변환해주는 역할을 하는 정적 웹사이트 생성기이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;우리는 jekyll을 사용하기 위해 ruby를 설치한 것이다. ruby가 설치되었으니 이제 jekyll와 bundler를 설치하면 된다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;루비 프롬프트 창에서 아래 명령어를 입력해준다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1654069380254&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;gem install jekyll bundler&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치완료 후 아래 명령어로 jekyll 설치확인 역시 해준다.&lt;/p&gt;
&lt;pre id=&quot;code_1654069417949&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;jekyll -v&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;이제 jekyll까지 설치를 마쳤다. jekyll 테마를 적용해보자.&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;http://jekyllthemes.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://jekyllthemes.org/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1654069523731&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Jekyll Themes&quot; data-og-description=&quot;&quot; data-og-host=&quot;jekyllthemes.org&quot; data-og-source-url=&quot;http://jekyllthemes.org/&quot; data-og-url=&quot;http://jekyllthemes.org/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bJjc5T/hyOCHJpEOT/2xuqKrH5DycawdW1p6aw90/img.png?width=250&amp;amp;height=200&amp;amp;face=0_0_250_200,https://scrap.kakaocdn.net/dn/cyLjWj/hyOBBjHsFJ/XKKyex2Ym2WXIAckUO3231/img.png?width=250&amp;amp;height=200&amp;amp;face=0_0_250_200,https://scrap.kakaocdn.net/dn/cKQ94y/hyOBALSPLe/qXYGTDAxKQMqBCNQsuTaF1/img.png?width=250&amp;amp;height=200&amp;amp;face=0_0_250_200&quot;&gt;&lt;a href=&quot;http://jekyllthemes.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://jekyllthemes.org/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bJjc5T/hyOCHJpEOT/2xuqKrH5DycawdW1p6aw90/img.png?width=250&amp;amp;height=200&amp;amp;face=0_0_250_200,https://scrap.kakaocdn.net/dn/cyLjWj/hyOBBjHsFJ/XKKyex2Ym2WXIAckUO3231/img.png?width=250&amp;amp;height=200&amp;amp;face=0_0_250_200,https://scrap.kakaocdn.net/dn/cKQ94y/hyOBALSPLe/qXYGTDAxKQMqBCNQsuTaF1/img.png?width=250&amp;amp;height=200&amp;amp;face=0_0_250_200');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Jekyll Themes&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jekyllthemes.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 맘에 드는 테마를 선택한 뒤, 해당 테마의 깃헙 레포지토리에서 파일들을 받아, 내 로컬 레포지토리로 옮기고, commit하고 원격저장소에 push해준다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 &lt;a href=&quot;https://github.com/mmistakes/minimal-mistakes&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/mmistakes/minimal-mistakes&lt;/a&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;https://github닉네임.github.io/ 주소로 접속했을 때 초기 페이지가 뜬다면 호스팅 성공!&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;이제 테마와, 기본 정보 등을 수정해야 하는데, 매번 원격저장소에 push하고 호스팅된 상태에서 확인하기엔 너무 번거롭다.&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;/p&gt;
&lt;pre id=&quot;code_1654076521556&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;bundle exec jekyll serve&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;오류.png&quot; data-origin-width=&quot;1614&quot; data-origin-height=&quot;116&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHYokJ/btrDEIBlWAd/YC6GcKkJ6QUDIu3fAvWdKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHYokJ/btrDEIBlWAd/YC6GcKkJ6QUDIu3fAvWdKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHYokJ/btrDEIBlWAd/YC6GcKkJ6QUDIu3fAvWdKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHYokJ%2FbtrDEIBlWAd%2FYC6GcKkJ6QUDIu3fAvWdKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1614&quot; height=&quot;116&quot; data-filename=&quot;오류.png&quot; data-origin-width=&quot;1614&quot; data-origin-height=&quot;116&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;webrick을 찾을 수 없어서 나는 오류이다.&lt;/p&gt;
&lt;pre id=&quot;code_1654076610774&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;bundle add webrick&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 명령어로 webrick을 추가시켜 주면 정상 작동한다.&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;이제 로컬서버에서 확인해가며 _config.yml 파일을 수정해서 기본정보를 수정하고, 글을 작성하면 된다!&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://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1654080389655&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;Quick-Start Guide&quot; data-og-description=&quot;How to quickly install and setup Minimal Mistakes for use with GitHub Pages.&quot; data-og-host=&quot;mmistakes.github.io&quot; data-og-source-url=&quot;https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/&quot; data-og-url=&quot;https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/rUc8k/hyOCJABpF7/whcEwRwEmpRf8NI8TN7kJK/img.png?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/yqkvT/hyOBLmxMCs/RgmCEP0X7Dx2aOykJKvGY1/img.png?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/cXNeKO/hyOCDf4Wwh/3f0FLzYNZAXMBXxswv6C7K/img.png?width=966&amp;amp;height=325&amp;amp;face=0_0_966_325&quot;&gt;&lt;a href=&quot;https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/rUc8k/hyOCJABpF7/whcEwRwEmpRf8NI8TN7kJK/img.png?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/yqkvT/hyOBLmxMCs/RgmCEP0X7Dx2aOykJKvGY1/img.png?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/cXNeKO/hyOCDf4Wwh/3f0FLzYNZAXMBXxswv6C7K/img.png?width=966&amp;amp;height=325&amp;amp;face=0_0_966_325');&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;Quick-Start Guide&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;How to quickly install and setup Minimal Mistakes for use with GitHub Pages.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;mmistakes.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확실히 티스토리보다는 초기세팅이 많이 번거롭지만, api 적용하듯이 가이드 보고 하나씩 따라하다보면 블로그를 가꾸는 재미도 있을 것 같다.&lt;/p&gt;</description>
      <category>Git</category>
      <author>까뮈_b</author>
      <guid isPermaLink="true">https://devcamus.tistory.com/20</guid>
      <comments>https://devcamus.tistory.com/20#entry20comment</comments>
      <pubDate>Wed, 1 Jun 2022 19:49:10 +0900</pubDate>
    </item>
    <item>
      <title>GitHub push에도 travis-ci 가 동작되지 않을 때.</title>
      <link>https://devcamus.tistory.com/19</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;처음 travis-ci와 github을 연동하고 수동배포 -&amp;gt; 자동배포 -&amp;gt; 무중단 배포를 연습하던 도중,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;갑자기 travis-ci와 연동된 github 레포지토리의 push 이벤트에도 travis-ci가 먹통이 되었다.&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;이유는 간단한다. github의 webhook 이 설정되지 않아서 그렇다.&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;레포지토리 설정에서 아래 사진과 같이 webhook을 설정하면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;webhook1.png&quot; data-origin-width=&quot;1121&quot; data-origin-height=&quot;436&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/djdSCY/btrCqoieW0S/9oSCy5LmzXV4kOCEmwEYlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/djdSCY/btrCqoieW0S/9oSCy5LmzXV4kOCEmwEYlK/img.png&quot; data-alt=&quot;Add webhook 클릭&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/djdSCY/btrCqoieW0S/9oSCy5LmzXV4kOCEmwEYlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdjdSCY%2FbtrCqoieW0S%2F9oSCy5LmzXV4kOCEmwEYlK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1121&quot; height=&quot;436&quot; data-filename=&quot;webhook1.png&quot; data-origin-width=&quot;1121&quot; data-origin-height=&quot;436&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Add webhook 클릭&lt;/figcaption&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-filename=&quot;webhook2.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;593&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d0dceD/btrCj2HZOoP/SWkl4IlN4Z6DFDGqeTDR3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d0dceD/btrCj2HZOoP/SWkl4IlN4Z6DFDGqeTDR3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d0dceD/btrCj2HZOoP/SWkl4IlN4Z6DFDGqeTDR3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd0dceD%2FbtrCj2HZOoP%2FSWkl4IlN4Z6DFDGqeTDR3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;728&quot; height=&quot;593&quot; data-filename=&quot;webhook2.png&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;593&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;b&gt;Payload URL : &lt;/b&gt;webhook POST request를 받을 서버 URL이다. &lt;a href=&quot;https://notify.travis-ci.com&quot;&gt;https://notify.travis-ci.com&lt;/a&gt; 을 입력해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Content type : &lt;/b&gt;URL 입력시 자동으로 &lt;span style=&quot;background-color: #ffffff; color: #5c5c5c;&quot;&gt;application/x-www-form-urlencoded 로 바뀌는데, 그대로 두면 된다.&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;which events would you like to trigger this webhook? : 말 그대로 어떤 이벤트가 감지 되었을 때 이 webhook을 트리거 할 것인지 고르면 된다.&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;webhook3.png&quot; data-origin-width=&quot;701&quot; data-origin-height=&quot;677&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/egUwmo/btrCkJPznxK/v4Z7gwK93OC6yklJcKoszK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/egUwmo/btrCkJPznxK/v4Z7gwK93OC6yklJcKoszK/img.png&quot; data-alt=&quot;event 세부설정&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/egUwmo/btrCkJPznxK/v4Z7gwK93OC6yklJcKoszK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FegUwmo%2FbtrCkJPznxK%2Fv4Z7gwK93OC6yklJcKoszK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;701&quot; height=&quot;677&quot; data-filename=&quot;webhook3.png&quot; data-origin-width=&quot;701&quot; data-origin-height=&quot;677&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;event 세부설정&lt;/figcaption&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;이제 travis-ci가 정상적으로 트리거 됨을 확인 할 수 있다!&lt;/p&gt;</description>
      <category>AWS</category>
      <author>까뮈_b</author>
      <guid isPermaLink="true">https://devcamus.tistory.com/19</guid>
      <comments>https://devcamus.tistory.com/19#entry19comment</comments>
      <pubDate>Tue, 17 May 2022 14:20:04 +0900</pubDate>
    </item>
    <item>
      <title>Amzone Linux AMI 2 인스턴스의 Hostname 변경하기</title>
      <link>https://devcamus.tistory.com/18</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Amazone Linux AMI 1의 경우, &lt;/b&gt;/etc/sysconfig/network 파일의 HOSTNAME 부분을 수정하면 되지만,&amp;nbsp;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Amazone Linux AMI 2의 경우는 그 방법이 바뀌었다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2022년 현재 더 이상 신규로 &lt;b&gt;Amazone Linux AMI 1 인스턴스를 생성할 수 없으므로, 여기서는 AMI2의 경우의 HOSTNAME 수정법만 정리하겠다.&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방법은 간단하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1652407435307&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo hostnamectl set-hostname 원하는 호스트네임.localdomain&lt;/code&gt;&lt;/pre&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;호스트네임 변경및 확인.png&quot; data-origin-width=&quot;725&quot; data-origin-height=&quot;49&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZMQUY/btrBT3gPcS8/YGnvlJGjqYQojnQkHE4VYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZMQUY/btrBT3gPcS8/YGnvlJGjqYQojnQkHE4VYK/img.png&quot; data-alt=&quot;호스트네임 변경&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZMQUY/btrBT3gPcS8/YGnvlJGjqYQojnQkHE4VYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZMQUY%2FbtrBT3gPcS8%2FYGnvlJGjqYQojnQkHE4VYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1379&quot; height=&quot;93&quot; data-filename=&quot;호스트네임 변경및 확인.png&quot; data-origin-width=&quot;725&quot; data-origin-height=&quot;49&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;호스트네임 변경&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;hostname&lt;/b&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;호스트네임 변경 후.png&quot; data-origin-width=&quot;283&quot; data-origin-height=&quot;37&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lkf9U/btrB0ENoEdq/bS34OVKwc2sI6D4KHM51P1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lkf9U/btrB0ENoEdq/bS34OVKwc2sI6D4KHM51P1/img.png&quot; data-alt=&quot;변경된 hostname이 반영된 모습&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lkf9U/btrB0ENoEdq/bS34OVKwc2sI6D4KHM51P1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flkf9U%2FbtrB0ENoEdq%2FbS34OVKwc2sI6D4KHM51P1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;513&quot; height=&quot;67&quot; data-filename=&quot;호스트네임 변경 후.png&quot; data-origin-width=&quot;283&quot; data-origin-height=&quot;37&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;변경된 hostname이 반영된 모습&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #777777;&quot;&gt;sudo reboot 으로 재시작하여 변경된 호스트네임이 반영된 것을 확인하자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성공적으로 반영되었지만, 여기서 한가지 작업을 추가적으로 해줘야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;sudo vim /etc/hosts 로 hosts 파일을 열고,&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;hosts변경.png&quot; data-origin-width=&quot;639&quot; data-origin-height=&quot;55&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2pYh3/btrBZx9ivQh/V91bpOnABAYyrNuj5a0gA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2pYh3/btrBZx9ivQh/V91bpOnABAYyrNuj5a0gA0/img.png&quot; data-alt=&quot;hosts 파일에 127.0.0.1 변경된 호스트네임 추가&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2pYh3/btrBZx9ivQh/V91bpOnABAYyrNuj5a0gA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2pYh3%2FbtrBZx9ivQh%2FV91bpOnABAYyrNuj5a0gA0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;883&quot; height=&quot;76&quot; data-filename=&quot;hosts변경.png&quot; data-origin-width=&quot;639&quot; data-origin-height=&quot;55&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;hosts 파일에 127.0.0.1 변경된 호스트네임 추가&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #777777;&quot;&gt;위와 같이 127.0.0.1 hostname 의 형식으로 호스트네임을 등록해준다.&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;호스트변경 성공.png&quot; data-origin-width=&quot;707&quot; data-origin-height=&quot;32&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dHpwN8/btrBYEOHiHq/J1aHaelkGs1hPKKanXvH0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dHpwN8/btrBYEOHiHq/J1aHaelkGs1hPKKanXvH0K/img.png&quot; data-alt=&quot;호스트네임 정상 적용&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dHpwN8/btrBYEOHiHq/J1aHaelkGs1hPKKanXvH0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdHpwN8%2FbtrBYEOHiHq%2FJ1aHaelkGs1hPKKanXvH0K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;882&quot; height=&quot;40&quot; data-filename=&quot;호스트변경 성공.png&quot; data-origin-width=&quot;707&quot; data-origin-height=&quot;32&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;호스트네임 정상 적용&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;변경된 호스트네임으로 curl을 호출했을 때, 위와 같은 메세지가 뜨면 호스트가 정상적으로 적용된 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 에러메세지는 hostname에서 아직 80포트로 실행된 서비스가 없으므로 뜨는 메세지이다.&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;호스트네임이 제대로 적용되지 않은 경우를 테스트하기 위하여, 임의의 호스트네임으로 curl 호출을 해보면,&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;호스트 변경 실패.png&quot; data-origin-width=&quot;415&quot; data-origin-height=&quot;33&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czsIMU/btrBYND3PnC/5j4AcyBfnn1YXyfGPzvXVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czsIMU/btrBYND3PnC/5j4AcyBfnn1YXyfGPzvXVK/img.png&quot; data-alt=&quot;호스트네임으로 실행 실패&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czsIMU/btrBYND3PnC/5j4AcyBfnn1YXyfGPzvXVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczsIMU%2FbtrBYND3PnC%2F5j4AcyBfnn1YXyfGPzvXVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;49&quot; data-filename=&quot;호스트 변경 실패.png&quot; data-origin-width=&quot;415&quot; data-origin-height=&quot;33&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;호스트네임으로 실행 실패&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;위와 같은 메세지가 뜬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;호스트네임 변경 끝!&lt;/p&gt;</description>
      <category>AWS</category>
      <category>Amzone Linux AMI 2</category>
      <category>AWS</category>
      <category>EC2 호스트네임 변경</category>
      <author>까뮈_b</author>
      <guid isPermaLink="true">https://devcamus.tistory.com/18</guid>
      <comments>https://devcamus.tistory.com/18#entry18comment</comments>
      <pubDate>Fri, 13 May 2022 13:16:43 +0900</pubDate>
    </item>
    <item>
      <title>Springboot와 OAuth2.0 사용한 네이버 로그인 연동시 yaml parsing error 해결</title>
      <link>https://devcamus.tistory.com/17</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이동욱님의 스프링부트와 AWS로 혼자 구현하는 웹서비스를 보면서 네아로 소셜로그인 연동을 하던 중,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책의 예제인 .properties를 .yml파일로 바꿔서 적용 시키고 있었는데, 메인 어플리케이션 구동시, 자꾸만 yaml파일 parsing error를 내뱉었다.&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;작성중인 yaml 파일은 아래와 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;oauth yml 에러1.png&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;697&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2UkWg/btrBN47Nxfn/RZ0GQXYGn9dgSAK6wvL0C0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2UkWg/btrBN47Nxfn/RZ0GQXYGn9dgSAK6wvL0C0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2UkWg/btrBN47Nxfn/RZ0GQXYGn9dgSAK6wvL0C0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2UkWg%2FbtrBN47Nxfn%2FRZ0GQXYGn9dgSAK6wvL0C0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;742&quot; height=&quot;697&quot; data-filename=&quot;oauth yml 에러1.png&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;697&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;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;네이버는 Spring Security를 공식적으로 지원하지 않아서, Common-OAuth2Provider에서 알아서 해주던 설정을 따로 추가해줘야 한다.&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-filename=&quot;oauth yml 에러2.png&quot; data-origin-width=&quot;684&quot; data-origin-height=&quot;235&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Dnrgm/btrBSHqKmGr/NUWeTaeMXztKN30bhLF0pK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Dnrgm/btrBSHqKmGr/NUWeTaeMXztKN30bhLF0pK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Dnrgm/btrBSHqKmGr/NUWeTaeMXztKN30bhLF0pK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDnrgm%2FbtrBSHqKmGr%2FNUWeTaeMXztKN30bhLF0pK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;684&quot; height=&quot;235&quot; data-filename=&quot;oauth yml 에러2.png&quot; data-origin-width=&quot;684&quot; data-origin-height=&quot;235&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;위와 같은 에러 메세지를 뿜고 있다. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;yaml.snakeyaml.parser.ParserException: while parsing a block mapping&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;작성된 구문에 오류가 있어, yaml을 파싱하는 과정에서 오류가 생겼다는 건데..&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;첫 에러메세지가 가르키는 라인은 client-id인데, 아무리봐도 구글의 그것과 다를바가 없다.&lt;/span&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;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;구글의 설정과 다른 것은&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;redirect-uri: {baseUrl}/{action}/oauth2/code/{registrationId}
authorization-grant-type:&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 부분이다.&amp;nbsp; 그래서 위 2줄을 지우고 실행해봤더니 정상구동된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마도 두 번째 에러메세지가 가르키는 redirect-uri 부분이 문제인 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156;&quot;&gt;expected &amp;lt;&lt;/span&gt;block end&lt;span style=&quot;background-color: #ffffff; color: #4d5156;&quot;&gt;&amp;gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;but found&lt;span style=&quot;background-color: #ffffff; color: #4d5156;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;'&amp;lt;&lt;/span&gt;scalar&lt;span style=&quot;background-color: #ffffff; color: #4d5156;&quot;&gt;&amp;gt;' 라는 에러 메세지를 보며 유추해볼 때,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중괄호로 감싼 변수 바로 앞에 슬래시(/)가 붙어서 yaml 파일이 제대로 인식을 하지 못해서 parsing error가 발생한 것을 알 수 있었다.&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 class=&quot;dust&quot;&gt;&lt;code&gt;redirect-uri: '{baseUrl}/{action}/oauth2/code/{registrationId}'&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>에러노트</category>
      <author>까뮈_b</author>
      <guid isPermaLink="true">https://devcamus.tistory.com/17</guid>
      <comments>https://devcamus.tistory.com/17#entry17comment</comments>
      <pubDate>Thu, 12 May 2022 10:27:28 +0900</pubDate>
    </item>
  </channel>
</rss>