<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>기초 Archives - 어제와 내일의 나 그 사이의 이야기</title>
	<atom:link href="https://lycos7560.com/tag/%EA%B8%B0%EC%B4%88/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>생각의 흐름을 타고 다니며 만드는 블로그</description>
	<lastBuildDate>Mon, 16 Mar 2026 21:58:32 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://lycos7560.com/wp-content/uploads/2022/11/cropped-cropped-cropped-log-1-150x150-1-80x80.png</url>
	<title>기초 Archives - 어제와 내일의 나 그 사이의 이야기</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Linux Default Directory Structure (기본 디렉터리 구조)</title>
		<link>https://lycos7560.com/ubuntu/%eb%a6%ac%eb%88%85%ec%8a%a4-%ea%b8%b0%eb%b3%b8-%eb%94%94%eb%a0%89%ed%84%b0%eb%a6%ac-%ea%b5%ac%ec%a1%b0-linux-default-directory-structure/40290/</link>
					<comments>https://lycos7560.com/ubuntu/%eb%a6%ac%eb%88%85%ec%8a%a4-%ea%b8%b0%eb%b3%b8-%eb%94%94%eb%a0%89%ed%84%b0%eb%a6%ac-%ea%b5%ac%ec%a1%b0-linux-default-directory-structure/40290/#comments</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Sun, 01 Mar 2026 07:06:00 +0000</pubDate>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[기초]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=40290</guid>

					<description><![CDATA[<p>디렉터리 구조 표 디렉터리 용도 이름(어원/줄임말) / 파일 시스템 최상위 디렉터리, 모든 경로의 출발점 &#8211; /bin 기본 명령어(binary) 저장소. 부팅/유저 작업에 필수적인 실행 파일 binary /boot 부팅 관련 파일 저장. 커널, 초기 램디스크, 부트로더 설정 포함 boot /dev 장치 파일 저장 (디스크, 터미널, 가상 장치 등) device /etc 시스템 설정 파일(전역 설정) et cetera (원래 [&#8230;]</p>
<p>The post <a href="https://lycos7560.com/ubuntu/%eb%a6%ac%eb%88%85%ec%8a%a4-%ea%b8%b0%eb%b3%b8-%eb%94%94%eb%a0%89%ed%84%b0%eb%a6%ac-%ea%b5%ac%ec%a1%b0-linux-default-directory-structure/40290/">Linux Default Directory Structure (기본 디렉터리 구조)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-eedf4b9d      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#디렉터리-구조-표" class="uagb-toc-link__trigger">디렉터리 구조 표</a><li class="uagb-toc__list"><a href="#각-디렉터리-상세-설명" class="uagb-toc-link__trigger">각 디렉터리 상세 설명</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#toc_69c282293984b" class="uagb-toc-link__trigger">/</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#bin" class="uagb-toc-link__trigger">/bin</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#boot" class="uagb-toc-link__trigger">/boot</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#dev" class="uagb-toc-link__trigger">/dev</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#etc" class="uagb-toc-link__trigger">/etc</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#home" class="uagb-toc-link__trigger">/home</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#lib-lib64" class="uagb-toc-link__trigger">/lib, /lib64</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#media" class="uagb-toc-link__trigger">/media</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#mnt" class="uagb-toc-link__trigger">/mnt</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#opt" class="uagb-toc-link__trigger">/opt</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#proc" class="uagb-toc-link__trigger">/proc</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#root" class="uagb-toc-link__trigger">/root</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#run" class="uagb-toc-link__trigger">/run</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#sbin" class="uagb-toc-link__trigger">/sbin</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#srv" class="uagb-toc-link__trigger">/srv</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#sys" class="uagb-toc-link__trigger">/sys</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#tmp" class="uagb-toc-link__trigger">/tmp</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#usr" class="uagb-toc-link__trigger">/usr</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#var" class="uagb-toc-link__trigger">/var</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#lostfound" class="uagb-toc-link__trigger">/lost+found</a></ul></ol>					</div>
									</div>
				</div>
			


<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">디렉터리 구조 표</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>디렉터리</th><th>용도</th><th>이름(어원/줄임말)</th></tr></thead><tbody><tr><td><code>/</code></td><td>파일 시스템 최상위 디렉터리, 모든 경로의 출발점</td><td>&#8211;</td></tr><tr><td><code>/bin</code></td><td>기본 명령어(binary) 저장소. 부팅/유저 작업에 필수적인 실행 파일</td><td>binary</td></tr><tr><td><code>/boot</code></td><td>부팅 관련 파일 저장. 커널, 초기 램디스크, 부트로더 설정 포함</td><td>boot</td></tr><tr><td><code>/dev</code></td><td>장치 파일 저장 (디스크, 터미널, 가상 장치 등)</td><td>device</td></tr><tr><td><code>/etc</code></td><td>시스템 설정 파일(전역 설정)</td><td>et cetera (원래 의미) / Editable Text Configuration (재해석)</td></tr><tr><td><code>/home</code></td><td>일반 사용자 홈 디렉터리</td><td>home directory</td></tr><tr><td><code>/lib</code>, <code>/lib64</code></td><td>실행 파일이 필요로 하는 공유 라이브러리</td><td>library</td></tr><tr><td><code>/media</code></td><td>USB, CD-ROM 등 이동식 미디어 자동 마운트 지점</td><td>media (removable media)</td></tr><tr><td><code>/mnt</code></td><td>관리자가 수동으로 마운트할 때 사용하는 임시 디렉터리</td><td>mount</td></tr><tr><td><code>/opt</code></td><td>선택적 소프트웨어 설치 경로</td><td>optional</td></tr><tr><td><code>/proc</code></td><td>가상 파일 시스템. 커널과 프로세스 상태 정보 제공</td><td>process</td></tr><tr><td><code>/root</code></td><td>root(관리자) 계정의 홈 디렉터리</td><td>root / superuser</td></tr><tr><td><code>/run</code></td><td>실행 중 생성되는 상태 파일 저장 (PID, 소켓 등)</td><td>runtime</td></tr><tr><td><code>/sbin</code></td><td>시스템 관리용 실행 파일</td><td>system binary</td></tr><tr><td><code>/srv</code></td><td>시스템 서비스 데이터 저장</td><td>service</td></tr><tr><td><code>/sys</code></td><td>커널 객체 정보 제공 가상 파일 시스템</td><td>system</td></tr><tr><td><code>/tmp</code></td><td>임시 파일 저장소</td><td>temporary</td></tr><tr><td><code>/usr</code></td><td>사용자 프로그램과 라이브러리 저장소</td><td>user / Unix System Resources</td></tr><tr><td><code>/var</code></td><td>가변 데이터 저장 (로그, 메일, 캐시 등)</td><td>variable</td></tr><tr><td><code>/lost+found</code></td><td>파일 시스템 손상 복구 시 fsck가 잃어버린 파일 조각을 모아두는 디렉터리</td><td>lost + found</td></tr></tbody></table></figure>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">각 디렉터리 상세 설명</h2>



<h3 class="wp-block-heading"><code>/</code></h3>



<p>리눅스에서 모든 파일과 디렉터리는 **루트 디렉터리 <code>/</code>**를 기준으로 계층 구조를 갖습니다. 모든 경로는 <code>/</code>에서 시작하며, Windows의 <code>C:\</code>와 비슷한 역할을 하지만, 드라이브 개념이 없고 모든 장치가 여기 아래로 마운트됩니다.</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><code>/bin</code></h3>



<p>시스템 부팅과 사용자 작업에 필수적인 <strong>기본 명령어</strong>가 저장됩니다.</p>



<p>예: <code>ls</code>, <code>cp</code>, <code>mv</code>, <code>cat</code>. 싱글 유저 모드에서도 실행 가능하도록 필수 명령어를 제공합니다.</p>



<ul class="wp-block-list">
<li><code>ls</code>, <code>cp</code>, <code>mv</code> &#8211; 파일 작업</li>



<li><code>cat</code>, <code>grep</code> &#8211; 텍스트 도구</li>



<li><code>bash</code> &#8211; 쉘(Shell)</li>
</ul>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><code>/boot</code></h3>



<p>부팅 관련 파일이 저장됩니다. </p>



<p>커널 파일(이미)(<code>vmlinuz</code>), 초기 램디스크(<code>initrd</code>/<code>initramfs</code>), 부트로더 설정(<code>grub.cfg</code>) 등이 포함되어 있으며, </p>



<p>부트로더(GRUB)는 이 파일들을 사용해 커널을 메모리에 올립니다.</p>



<p>GNU GRUB(Grand Unified Bootloader), <strong>커널 파일</strong> &#8211; 운영체제의 심장</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><code>/dev</code></h3>



<p>시스템의 <strong>장치 파일</strong>을 모아두는 디렉터리입니다. </p>



<p>하드디스크, 터미널, 프린터, 가상 장치 등이 모두 파일로 표현됩니다. </p>



<p>예: <code>/dev/sda</code>는 첫 번째 디스크, <code>/dev/null</code>은 데이터를 버리는 장치입니다.</p>



<ul class="wp-block-list">
<li><code>/dev/sda1</code> &#8211; 하드 드라이브 파티션</li>



<li><code>/dev/null</code> &#8211; 데이터를 삼켜버리는 유명한 &#8220;블랙홀&#8221;</li>



<li><code>/dev/random</code> &#8211; 난수 생성기</li>
</ul>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><code>/etc</code></h3>



<p>시스템의 <strong>전역 설정 파일</strong>이 있는 디렉터리입니다. </p>



<p>리눅스 시스템의 설정 본부입니다. 모든 설정, 규칙, 시스템 기본 설정이 이곳에 저장됩니다.</p>



<p>초기에는 &#8220;et cetera&#8221;(잡다한 설정) 의미였으며, 현재는 시스템 설정을 담당합니다. </p>



<p>예: <code>/etc/passwd</code>(사용자 계정), <code>/etc/fstab</code>(파일 시스템 마운트 정보).</p>



<ul class="wp-block-list">
<li><strong>사용자 계정</strong> (<code>passwd</code>, <code>shadow</code>)</li>



<li><strong>네트워크 설정</strong> (<code>hosts</code>, <code>resolv.conf</code>)</li>



<li><strong>서비스 설정</strong> (SSH, Apache 등)</li>



<li><strong>시작 스크립트 및 시스템 규칙</strong></li>
</ul>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><code>/home</code></h3>



<p>일반 사용자들의 <strong>홈 디렉터리</strong>입니다. </p>



<p>각 사용자는 <code>/home/username</code> 디렉터리를 갖습니다. </p>



<p>root 계정은 <code>/root</code>를 사용합니다. 보안과 안정성을 위해 일반 사용자 폴더(<code>/home</code>)와 분리되어 있습니다.</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><code>/lib</code>, <code>/lib64</code></h3>



<p>실행 파일이 필요로 하는 <strong>공유 라이브러리</strong>를 저장합니다. </p>



<p><code>/bin</code>과 <code>/sbin</code> 프로그램들이 실행되기 위해 필요한 공통 함수들을 제공합니다.</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><code>/media</code></h3>



<p>USB, CD-ROM 등 <strong>이동식 미디어</strong>를 자동 마운트하는 디렉터리입니다. </p>



<p>사용자가 장치를 연결하면 시스템이 <code>/media</code> 아래에 장치를 자동으로 연결합니다.</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><code>/mnt</code></h3>



<p>관리자가 <strong>수동으로 장치를 마운트</strong>할 때 사용하는 임시 디렉터리입니다. 테스트용 외장 하드나 파티션 마운트 시 사용됩니다.</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><code>/opt</code></h3>



<p>선택적 소프트웨어를 설치하는 디렉터리입니다. </p>



<p>표준 레이아웃을 따르지 않는 상용 프로그램이나 독립 패키지를 <code>/opt</code> 아래에 설치하는 방식이 일반적입니다.</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><code>/proc</code></h3>



<p>가상 파일 시스템으로, 커널과 프로세스 상태 정보를 제공합니다. </p>



<p><code>/proc/cpuinfo</code>(CPU 정보), <code>/proc/meminfo</code>(메모리 사용 현황)처럼 실제 파일은 없고 커널이 동적으로 생성합니다.</p>



<ul class="wp-block-list">
<li><code>/proc/cpuinfo</code> &#8211; CPU 상세 정보</li>



<li><code>/proc/meminfo</code> &#8211; 메모리 사용량</li>



<li><code>/proc/[PID]/</code> &#8211; 실행 중인 프로세스 정보</li>
</ul>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><code>/root</code></h3>



<p>root(관리자) 계정의 <strong>홈 디렉터리</strong>입니다. 일반 사용자 홈 디렉터리는 <code>/home</code>에 있습니다.</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><code>/run</code></h3>



<p>실행 중 생성되는 <strong>상태 파일</strong>을 저장합니다. </p>



<p>예: 서비스 PID 파일, 소켓 파일, 현재 세션 정보 등&#8230;</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><code>/sbin</code></h3>



<p>시스템 관리용 <strong>실행 파일</strong>을 저장합니다. </p>



<p>예: <code>fsck</code>, <code>reboot</code>, <code>ifconfig</code>. 일반 사용자는 주로 접근하지 않습니다.</p>



<ul class="wp-block-list">
<li><code>mount</code> &#8211; 파일시스템 마운트</li>



<li><code>iptables</code> &#8211; 방화벽 관리</li>
</ul>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><code>/srv</code></h3>



<p>시스템에서 제공하는 <strong>서비스 데이터</strong>를 담습니다. 예: 웹 서버의 웹 페이지 데이터 <code>/srv/www</code>.</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><code>/sys</code></h3>



<p>커널 객체 정보를 제공하는 <strong>가상 파일 시스템(sysfs)</strong>입니다. </p>



<p>하드웨어와 장치 드라이버 관련 정보를 확인하고 설정할 때 사용합니다.</p>



<p>커널 및 하드웨어 정보와 상호작용하는 더 새롭고 깔끔한 방식의 디렉토리입니다.</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><code>/tmp</code></h3>



<p><strong>임시 파일 저장소</strong>입니다.</p>



<p>프로그램 실행 중 생성되는 임시 데이터를 저장하며, <strong>시스템 재부팅 시 대부분 삭제</strong>됩니다.</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><code>/usr</code></h3>



<p>사용자 프로그램과 라이브러리 저장소입니다. </p>



<p>원래는 &#8220;user&#8221; 디렉터리였으나, 지금은 <strong>응용 프로그램, 라이브러리, 공유 데이터</strong>를 담습니다.</p>



<p><strong>U</strong>ser <strong>S</strong>ystem <strong>R</strong>esources의 약자로, 대부분의 프로그램이 설치되는 곳입니다.</p>



<ul class="wp-block-list">
<li><code>/usr/bin</code> &#8211; 사용자 프로그램 (Firefox, LibreOffice 등)</li>



<li><code>/usr/lib</code> &#8211; 프로그램 라이브러리</li>



<li><code>/usr/local</code> &#8211; 사용자가 직접 설치한 커스텀 소프트웨어</li>
</ul>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><code>/var</code></h3>



<p>끊임없이 변하는 가변 데이터를 저장하는 디렉터리입니다. </p>



<p>로그(<code>/var/log</code>), 메일, 캐시, 스풀, 데이터베이스 파일 등 수시로 변경되는 데이터를 저장합니다.</p>



<ul class="wp-block-list">
<li><code>/var/log</code> &#8211; 시스템 로그 (<strong>문제 해결의 보물창고!</strong>)</li>



<li><code>/var/cache</code> &#8211; 애플리케이션 캐시</li>
</ul>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading"><code>/lost+found</code></h3>



<p>파일 시스템 손상 복구를 위해 존재합니다. <code>fsck</code> 실행 시 깨진 inode나 위치를 잃은 파일을 이곳에 모아 복구 작업에 사용합니다.</p>



<p></p>
<p>The post <a href="https://lycos7560.com/ubuntu/%eb%a6%ac%eb%88%85%ec%8a%a4-%ea%b8%b0%eb%b3%b8-%eb%94%94%eb%a0%89%ed%84%b0%eb%a6%ac-%ea%b5%ac%ec%a1%b0-linux-default-directory-structure/40290/">Linux Default Directory Structure (기본 디렉터리 구조)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/ubuntu/%eb%a6%ac%eb%88%85%ec%8a%a4-%ea%b8%b0%eb%b3%b8-%eb%94%94%eb%a0%89%ed%84%b0%eb%a6%ac-%ea%b5%ac%ec%a1%b0-linux-default-directory-structure/40290/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>LVM(Logical Volume Manager) 구조 및 개념</title>
		<link>https://lycos7560.com/etc/lvmlogical-volume-manager-%ea%b5%ac%ec%a1%b0-%eb%b0%8f-%ea%b0%9c%eb%85%90/40489/</link>
					<comments>https://lycos7560.com/etc/lvmlogical-volume-manager-%ea%b5%ac%ec%a1%b0-%eb%b0%8f-%ea%b0%9c%eb%85%90/40489/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Sun, 22 Feb 2026 16:13:57 +0000</pubDate>
				<category><![CDATA[기타]]></category>
		<category><![CDATA[AIX admin]]></category>
		<category><![CDATA[AIX hdisk]]></category>
		<category><![CDATA[AIX LVM]]></category>
		<category><![CDATA[AIX storage]]></category>
		<category><![CDATA[Block Device]]></category>
		<category><![CDATA[Data Storage]]></category>
		<category><![CDATA[Disk allocation]]></category>
		<category><![CDATA[disk device]]></category>
		<category><![CDATA[Disk Management]]></category>
		<category><![CDATA[Disk Partition]]></category>
		<category><![CDATA[Enterprise storage]]></category>
		<category><![CDATA[ext4]]></category>
		<category><![CDATA[Extent]]></category>
		<category><![CDATA[FC storage]]></category>
		<category><![CDATA[Fibre Channel]]></category>
		<category><![CDATA[File System]]></category>
		<category><![CDATA[FileSystem]]></category>
		<category><![CDATA[hdisk]]></category>
		<category><![CDATA[hdisk0]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[IT infrastructure]]></category>
		<category><![CDATA[IT 인프라]]></category>
		<category><![CDATA[JFS]]></category>
		<category><![CDATA[JFS2]]></category>
		<category><![CDATA[LE]]></category>
		<category><![CDATA[Linux admin]]></category>
		<category><![CDATA[Linux LVM]]></category>
		<category><![CDATA[Linux storage]]></category>
		<category><![CDATA[Logical Disk]]></category>
		<category><![CDATA[Logical Extent]]></category>
		<category><![CDATA[Logical Partition]]></category>
		<category><![CDATA[Logical storage]]></category>
		<category><![CDATA[Logical Unit Number]]></category>
		<category><![CDATA[Logical Volume]]></category>
		<category><![CDATA[Logical Volume Manager]]></category>
		<category><![CDATA[LP]]></category>
		<category><![CDATA[lsdev]]></category>
		<category><![CDATA[lslv]]></category>
		<category><![CDATA[lspv]]></category>
		<category><![CDATA[lsvg]]></category>
		<category><![CDATA[LUN]]></category>
		<category><![CDATA[LV]]></category>
		<category><![CDATA[lvdisplay]]></category>
		<category><![CDATA[LVM]]></category>
		<category><![CDATA[LVM architecture]]></category>
		<category><![CDATA[LVM concept]]></category>
		<category><![CDATA[LVM hierarchy]]></category>
		<category><![CDATA[LVM 개념]]></category>
		<category><![CDATA[LVM 계층 구조]]></category>
		<category><![CDATA[LVM 구조]]></category>
		<category><![CDATA[lvs]]></category>
		<category><![CDATA[Mirroring]]></category>
		<category><![CDATA[mount]]></category>
		<category><![CDATA[mount point]]></category>
		<category><![CDATA[PE]]></category>
		<category><![CDATA[Physical Disk]]></category>
		<category><![CDATA[Physical Extent]]></category>
		<category><![CDATA[Physical Partition]]></category>
		<category><![CDATA[Physical storage]]></category>
		<category><![CDATA[Physical Volume]]></category>
		<category><![CDATA[PP]]></category>
		<category><![CDATA[PV]]></category>
		<category><![CDATA[pvdisplay]]></category>
		<category><![CDATA[pvs]]></category>
		<category><![CDATA[Quorum]]></category>
		<category><![CDATA[SAN]]></category>
		<category><![CDATA[SAN storage]]></category>
		<category><![CDATA[Server storage]]></category>
		<category><![CDATA[Storage]]></category>
		<category><![CDATA[Storage admin]]></category>
		<category><![CDATA[Storage architecture]]></category>
		<category><![CDATA[Storage concept]]></category>
		<category><![CDATA[Storage hierarchy]]></category>
		<category><![CDATA[Storage layer]]></category>
		<category><![CDATA[storage management]]></category>
		<category><![CDATA[Storage pool]]></category>
		<category><![CDATA[Storage virtualization]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[System Administration]]></category>
		<category><![CDATA[UNIX admin]]></category>
		<category><![CDATA[UNIX LVM]]></category>
		<category><![CDATA[UNIX storage]]></category>
		<category><![CDATA[VG]]></category>
		<category><![CDATA[VGDA]]></category>
		<category><![CDATA[vgdisplay]]></category>
		<category><![CDATA[vgs]]></category>
		<category><![CDATA[Virtual storage]]></category>
		<category><![CDATA[Volume Group]]></category>
		<category><![CDATA[Volume Group Descriptor Area]]></category>
		<category><![CDATA[Volume management]]></category>
		<category><![CDATA[xfs]]></category>
		<category><![CDATA[가상 스토리지]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[기초]]></category>
		<category><![CDATA[논리 디스크]]></category>
		<category><![CDATA[논리 볼륨]]></category>
		<category><![CDATA[논리 볼륨 관리자]]></category>
		<category><![CDATA[논리 스토리지]]></category>
		<category><![CDATA[논리 파티션]]></category>
		<category><![CDATA[데이터 저장]]></category>
		<category><![CDATA[디스크 관리]]></category>
		<category><![CDATA[디스크 파티션]]></category>
		<category><![CDATA[디스크 할당]]></category>
		<category><![CDATA[마운트]]></category>
		<category><![CDATA[마운트 포인트]]></category>
		<category><![CDATA[물리 디스크]]></category>
		<category><![CDATA[물리 볼륨]]></category>
		<category><![CDATA[물리 스토리지]]></category>
		<category><![CDATA[물리 파티션]]></category>
		<category><![CDATA[미러링]]></category>
		<category><![CDATA[볼륨 관리]]></category>
		<category><![CDATA[볼륨 그룹]]></category>
		<category><![CDATA[블록 디바이스]]></category>
		<category><![CDATA[서버 스토리지]]></category>
		<category><![CDATA[스토리지]]></category>
		<category><![CDATA[스토리지 가상화]]></category>
		<category><![CDATA[스토리지 개념]]></category>
		<category><![CDATA[스토리지 계층]]></category>
		<category><![CDATA[스토리지 관리]]></category>
		<category><![CDATA[스토리지 관리자]]></category>
		<category><![CDATA[스토리지 구조]]></category>
		<category><![CDATA[스토리지 아키텍처]]></category>
		<category><![CDATA[스토리지 풀]]></category>
		<category><![CDATA[시스템 관리]]></category>
		<category><![CDATA[시스템 운영]]></category>
		<category><![CDATA[엔터프라이즈 스토리지]]></category>
		<category><![CDATA[인프라]]></category>
		<category><![CDATA[쿼럼]]></category>
		<category><![CDATA[파일 시스템]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=40489</guid>

					<description><![CDATA[<p>LVM의 계층 구조와 주요 개념 LVM(Logical Volume Manager)은 리눅스 및 유닉스 계열 시스템에서 사용자가 논리적인 볼륨 저장소를 설정하고 제어할 수 있도록 하는 운영 체제 명령, 라이브러리 및 도구 세트입니다. (Manager) 이는 실제 물리적 디스크와 응용 프로그램 사이에 장치 드라이버 계층을 두어, 물리적 디스크 구조와 무관하게 스토리지 공간을 논리적으로 관리할 수 있게 해줍니다. (여러 물리적인 디스크들을 [&#8230;]</p>
<p>The post <a href="https://lycos7560.com/etc/lvmlogical-volume-manager-%ea%b5%ac%ec%a1%b0-%eb%b0%8f-%ea%b0%9c%eb%85%90/40489/">LVM(Logical Volume Manager) 구조 및 개념</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-472a844f      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#lvm의-계층-구조와-주요-개념" class="uagb-toc-link__trigger">LVM의 계층 구조와 주요 개념</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#1-물리적-계층-pv-physical-volume-및-pp-physical-partition" class="uagb-toc-link__trigger">1. 물리적 계층: PV (Physical Volume) 및 PP (Physical Partition)</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#pv-physical-volume" class="uagb-toc-link__trigger">PV (Physical Volume)</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#pp-physical-partition" class="uagb-toc-link__trigger">PP (Physical Partition)</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#관련-명령어" class="uagb-toc-link__trigger">관련 명령어</a></li></ul><li class="uagb-toc__list"><a href="#2-논리적-그룹-계층-vg-volume-group" class="uagb-toc-link__trigger">2. 논리적 그룹 계층: VG (Volume Group)</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#vg-volume-group" class="uagb-toc-link__trigger">VG (Volume Group)</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#관련-명령어" class="uagb-toc-link__trigger">관련 명령어</a></li></ul><li class="uagb-toc__list"><a href="#3-논리적-할당-계층-lv-logical-volume-및-lp-logical-partition-미러링mirroring" class="uagb-toc-link__trigger">3. 논리적 할당 계층: LV (Logical Volume) 및 LP (Logical Partition) / 미러링(Mirroring)</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#lv-logical-volume" class="uagb-toc-link__trigger">LV (Logical Volume)</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#lp-logical-partition" class="uagb-toc-link__trigger">LP (Logical Partition)</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#미러링mirroring" class="uagb-toc-link__trigger">미러링(Mirroring)</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#관련-명령어" class="uagb-toc-link__trigger">관련 명령어</a></li></ul><li class="uagb-toc__list"><a href="#4-계층-구조의-상위-단계-파일-시스템file-system" class="uagb-toc-link__trigger">4. 계층 구조의 상위 단계: 파일 시스템(File System)</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#file-system" class="uagb-toc-link__trigger">File System</a></li></ul><li class="uagb-toc__list"><a href="#주요-개념-요약" class="uagb-toc-link__trigger">주요 개념 요약</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#계층-구조" class="uagb-toc-link__trigger">계층 구조</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#유연성" class="uagb-toc-link__trigger">유연성</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#데이터-무결성" class="uagb-toc-link__trigger">데이터 무결성</a></ul></ul></ol>					</div>
									</div>
				</div>
			


<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">LVM의 계층 구조와 주요 개념</h3>



<p><strong>LVM(Logical Volume Manager)</strong>은 리눅스 및 유닉스 계열 시스템에서 사용자가 논리적인 볼륨 저장소를 설정하고 제어할 수 있도록 하는 운영 체제 명령, 라이브러리 및 도구 세트입니다. (Manager)</p>



<p>이는 실제 <strong>물리적 디스크</strong>와 <strong>응용 프로그램</strong> 사이에 <strong>장치 드라이버 계층</strong>을 두어, <strong>물리적 디스크 구조</strong>와<strong> 무관하게 스토리지 공간을 논리적으로 관리</strong>할 수 있게 해줍니다.</p>



<p>(여러 물리적인 디스크들을 하나의 논리적인 디스크처럼 다룰 수 있게 함 &#8211; 고용량, 고속, 데이터의 무결성 등을 실현 가능)</p>



<ul class="wp-block-list">
<li><strong>LVM이 필요한 이유?</strong></li>
</ul>



<p>기존 파티션 기반 스토리지 관리 방식은 용량 확장이나 재구성이 복잡하고 다운 타임이 발생할 수 있다. </p>



<p>그러나 LVM을 사용하면 하드 드라이브를 재분할할 필요 없이 논리 볼륨을 생성, 크기 조정, 이동 및 삭제할 수 있습니다.</p>



<p>LVM의 진정한 매력은 논리 볼륨과 볼륨 그룹의 크기를 실시간으로 조정할 수 있다는 점에 있습니다.</p>



<p>예를 들어) 갑자기 데이터베이스 용량 필요하다고 해도<strong> LVM을 사용하면 운영 중단 없이 손쉽게 공간을 확장</strong>할 수 있습니다.</p>



<p>LVM은 하드 디스크 위에 얇은 소프트웨어 계층을 덧씌워 하드 드라이브 관리의 연속성과 편의성을 추상화한 것이라고 생각하면 될 것 같습니다.</p>



<div class="wp-block-uagb-container uagb-block-a9759a32 alignfull uagb-is-root-container"><div class="uagb-container-inner-blocks-wrap">
<div class="wp-block-uagb-container uagb-block-9b76df1b">
<figure class="wp-block-image size-full is-resized"><img fetchpriority="high" decoding="async" width="960" height="967" src="https://lycos7560.com/wp-content/uploads/2026/02/Lvm.svg_.png" alt="" class="wp-image-40492" style="width:792px;height:auto" srcset="https://lycos7560.com/wp-content/uploads/2026/02/Lvm.svg_.png 960w, https://lycos7560.com/wp-content/uploads/2026/02/Lvm.svg_-298x300.png 298w, https://lycos7560.com/wp-content/uploads/2026/02/Lvm.svg_-150x150.png 150w, https://lycos7560.com/wp-content/uploads/2026/02/Lvm.svg_-768x774.png 768w" sizes="(max-width: 960px) 100vw, 960px" /><figcaption class="wp-element-caption"><a href="https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux)">https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux)</a></figcaption></figure>
</div>



<div class="wp-block-uagb-container uagb-block-f0a092a6">
<figure class="wp-block-image size-full has-custom-border"><img decoding="async" width="791" height="481" src="https://lycos7560.com/wp-content/uploads/2026/02/image-8.png" alt="" class="wp-image-40490" style="border-width:1px" srcset="https://lycos7560.com/wp-content/uploads/2026/02/image-8.png 791w, https://lycos7560.com/wp-content/uploads/2026/02/image-8-300x182.png 300w, https://lycos7560.com/wp-content/uploads/2026/02/image-8-768x467.png 768w" sizes="(max-width: 791px) 100vw, 791px" /><figcaption class="wp-element-caption"><a href="https://medium.com/@habibullah.127.0.0.1/what-is-lvm-lvm-architecture-how-to-create-pvs-vgs-lvs-in-linux-30acd24e4f0b" target="_blank" rel="noreferrer noopener">https://medium.com/@habibullah.127.0.0.1/what-is-lvm-lvm-architecture-how-to-create-pvs-vgs-lvs-in-linux-30acd24e4f0b</a></figcaption></figure>
</div>
</div></div>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">1. 물리적 계층: PV (Physical Volume) 및 PP (Physical Partition)</h4>



<h5 class="wp-block-heading"><strong>PV (Physical Volume)</strong></h5>



<p>LVM에서 인식하는 <strong>물리적 디스크 드라이브</strong> 자체를 의미하며, AIX 시스템에서는 <code>hdisk0</code>, <code>hdisk1</code>과 같은 이름으로 표시됩니다.</p>



<p><mark style="background-color:rgba(0, 0, 0, 0);color:#ff6900" class="has-inline-color"><strong>하나의 PV는 </strong></mark>반드시 <mark style="background-color:rgba(0, 0, 0, 0);color:#ff6900" class="has-inline-color"><strong>하나의 VG</strong></mark>에만 속할 수 있습니다.</p>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h5 class="wp-block-heading"><strong><strong>PP (Physical Partition)</strong></strong></h5>



<p>PV를 일정한 크기로 나눈 <strong>최소의 물리적 단위</strong>입니다.</p>



<p>PP의 크기는 1MB에서 1GB까지 설정 가능하며, <mark style="background-color:rgba(0, 0, 0, 0);color:#ff6900" class="has-inline-color"><strong>동일한 VG 내의 모든 PV</strong></mark>는<mark style="background-color:rgba(0, 0, 0, 0);color:#ff6900" class="has-inline-color"><strong> 동일한 크기의 PP</strong></mark>를 가집니다.</p>



<h5 class="wp-block-heading"><strong><strong>관련 명령어</strong></strong></h5>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># 하드 디스크 총 개수, 파티션 수, 저장 용량 및 사용 가능 용량을 확인
- Linux
lsblk
- AIX
lsdev -Cc disk

# Physical Volumes 총 개수
- Linux
pvs
pvdisplay
- AIX
lspv
lspv hdisk0</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">2. 논리적 그룹 계층: VG (Volume Group)</h4>



<h5 class="wp-block-heading"><strong><strong>VG (Volume Group)</strong></strong></h5>



<p>하나 이상의 <strong>PV들을 논리적으로 묶은 집합체</strong>입니다.</p>



<p>VG 내의 디스크들은 PP라는 단위로 쪼개져 관리되며, 이를 통해 여러 <strong>물리적 디스크에 걸쳐 있는 논리적 볼륨을 생성하는 등 유연한 관리가 가능</strong>해집니다.</p>



<p>데이터 보호를 위해 미러링을 설정하면, <strong>하나의 LP가 2개 또는 3개의 PP에 대응</strong>되어 동일한 데이터 사본을 여러 곳에 저장하게 됩니다.</p>



<h5 class="wp-block-heading"><strong><strong>관련 명령어</strong></strong></h5>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># Volume groups 확인
- Linux
vgs
vgdisplay
- AIX
lsvg
lsvg vgname</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">3. 논리적 할당 계층: LV (Logical Volume) 및 LP (Logical Partition) / <strong>미러링(Mirroring)</strong></h4>



<h5 class="wp-block-heading"><strong><strong><strong>LV (Logical Volume)</strong></strong></strong></h5>



<p>사용자가 실제 데이터를 저장하기 위해 VG 내에서 정의하는 <strong>논리적인 저장 공간</strong>입니다.</p>



<p>LV는 사용자에게는 연속된 공간으로 보이지만, <strong>실제 물리적 위치(PP)는 디스크 상에서 흩어져 있거나 여러 PV에 걸쳐 있을 수 있습니다</strong>.</p>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h5 class="wp-block-heading"><strong><strong><strong><strong>LP (Logical Partition)</strong></strong></strong></strong></h5>



<p>LV를 구성하는 <strong>최소 논리 단위</strong>로, <strong>하나 이상의 PP</strong>에 대응됩니다.</p>



<p>※ 참고: AIX에서는 LP/PP라는 용어를 사용하며,<br>Linux LVM에서는 LE/PE(Extent)라는 용어를 사용한다.</p>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h5 class="wp-block-heading"><strong><strong><strong><strong><strong>미러링(Mirroring)</strong></strong></strong></strong></strong></h5>



<p>데이터 보호를 위해 미러링을 설정하면, <strong>하나의 LP가 2개 또는 3개의 PP에 대응</strong>되어 동일한 데이터 사본을 여러 곳에 저장하게 됩니다.</p>



<h5 class="wp-block-heading"><strong><strong>관련 명령어</strong></strong></h5>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># Logical volumes 확인
- Linux
lvs
lvdisplay
- AIX
lslv
lslv lvname</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">4. 계층 구조의 상위 단계: 파일 시스템(File System)</h4>



<h5 class="wp-block-heading"><strong><strong><strong>File System</strong></strong></strong></h5>



<p>LV 위에 구축되어 사용자가 <strong>실제 파일을 저장하고 접근할 수 있도록 하는 논리적인 구조</strong>입니다.</p>



<p>생성된 <strong>LV 위에는 JFS 또는 JFS2와 같은 파일 시스템</strong>이 구축되거나, 페이징 공간(Paging Space)으로 사용됩니다.</p>



<p>운영체제는 이러한 파일 시스템을 통해 파일을 저장하고 관리합니다.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:0;margin-bottom:0"/>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">주요 개념 요약</h4>



<h5 class="wp-block-heading"><strong><strong><strong><strong>계층 구조</strong></strong></strong></strong></h5>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">PV(PP) → VG → LV(LP) → 파일 시스템</pre>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h5 class="wp-block-heading"><strong><strong><strong><strong><strong>유연성</strong></strong></strong></strong></strong></h5>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">LVM을 사용하면 운영 중에 파일 시스템의 용량을 늘리거나 줄이는 것이 가능하며, 
물리적인 디스크 한계를 넘어 스토리지를 효율적으로 관리할 수 있습니다</pre>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h5 class="wp-block-heading"><strong><strong><strong><strong><strong><strong>데이터 무결성</strong></strong></strong></strong></strong></strong></h5>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">VGDA(Volume Group Descriptor Area)와 같은 영역에 LVM 구조 정보를 저장하여 관리하며, 
쿼럼(Quorum) 메커니즘을 통해 디스크 장애 시에도 데이터의 무결성을 보장합니다.</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="[리눅스 기초 강의] 41강. 6.3 LVM(Logical Volume Manage)" width="1778" height="1000" src="https://www.youtube.com/embed/eb2cDW-zXlI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p></p>



<p></p>
<p>The post <a href="https://lycos7560.com/etc/lvmlogical-volume-manager-%ea%b5%ac%ec%a1%b0-%eb%b0%8f-%ea%b0%9c%eb%85%90/40489/">LVM(Logical Volume Manager) 구조 및 개념</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/etc/lvmlogical-volume-manager-%ea%b5%ac%ec%a1%b0-%eb%b0%8f-%ea%b0%9c%eb%85%90/40489/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Linux Development Tools Install</title>
		<link>https://lycos7560.com/etc/linux-development-tools-install/40476/</link>
					<comments>https://lycos7560.com/etc/linux-development-tools-install/40476/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Mon, 16 Feb 2026 22:31:03 +0000</pubDate>
				<category><![CDATA[기타]]></category>
		<category><![CDATA[autoconf]]></category>
		<category><![CDATA[automake]]></category>
		<category><![CDATA[C 언어]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[C++ 언어]]></category>
		<category><![CDATA[CI/CD]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[Development Tools]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[dnf]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[gdb]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[glibc-devel]]></category>
		<category><![CDATA[groupinstall]]></category>
		<category><![CDATA[How-to 가이드]]></category>
		<category><![CDATA[kernel-devel]]></category>
		<category><![CDATA[kernel-headers]]></category>
		<category><![CDATA[libstdc++-devel]]></category>
		<category><![CDATA[libtool]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Linux 개발 환경]]></category>
		<category><![CDATA[Linux 관리]]></category>
		<category><![CDATA[Linux 설치]]></category>
		<category><![CDATA[Linux 정보]]></category>
		<category><![CDATA[Linux 초보자]]></category>
		<category><![CDATA[Linux 커널]]></category>
		<category><![CDATA[Linux 컴파일]]></category>
		<category><![CDATA[Linux 팁]]></category>
		<category><![CDATA[make]]></category>
		<category><![CDATA[OS 개발]]></category>
		<category><![CDATA[Rocky]]></category>
		<category><![CDATA[Rocky Linux]]></category>
		<category><![CDATA[Rocky Linux 설치]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[vmtoolsd]]></category>
		<category><![CDATA[VMware Tools]]></category>
		<category><![CDATA[VMware Workstation]]></category>
		<category><![CDATA[가상 머신]]></category>
		<category><![CDATA[개발 입문]]></category>
		<category><![CDATA[개발 정보]]></category>
		<category><![CDATA[개발 튜토리얼]]></category>
		<category><![CDATA[개발 팁]]></category>
		<category><![CDATA[개발 필수 도구]]></category>
		<category><![CDATA[개발 환경]]></category>
		<category><![CDATA[개발자 가이드]]></category>
		<category><![CDATA[개발자 도구]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[기술 문서]]></category>
		<category><![CDATA[기술 블로그]]></category>
		<category><![CDATA[기술 정보]]></category>
		<category><![CDATA[기초]]></category>
		<category><![CDATA[단계별 설명]]></category>
		<category><![CDATA[드라이버 개발]]></category>
		<category><![CDATA[디버거]]></category>
		<category><![CDATA[라이브러리 빌드]]></category>
		<category><![CDATA[링킹]]></category>
		<category><![CDATA[바이너리 생성]]></category>
		<category><![CDATA[백엔드 개발]]></category>
		<category><![CDATA[버전 관리]]></category>
		<category><![CDATA[비유 설명]]></category>
		<category><![CDATA[빌드 과정]]></category>
		<category><![CDATA[빌드 관리]]></category>
		<category><![CDATA[빌드 도구]]></category>
		<category><![CDATA[빌드 자동화]]></category>
		<category><![CDATA[상세 설명]]></category>
		<category><![CDATA[서버 개발]]></category>
		<category><![CDATA[설치 가이드]]></category>
		<category><![CDATA[성능 최적화]]></category>
		<category><![CDATA[소스 코드]]></category>
		<category><![CDATA[소스 코드 컴파일]]></category>
		<category><![CDATA[소프트웨어 개발]]></category>
		<category><![CDATA[소프트웨어 빌드]]></category>
		<category><![CDATA[소프트웨어 설치]]></category>
		<category><![CDATA[소프트웨어 아키텍처]]></category>
		<category><![CDATA[시스템 개발]]></category>
		<category><![CDATA[시스템 관리]]></category>
		<category><![CDATA[시스템 구축]]></category>
		<category><![CDATA[시스템 프로그래밍]]></category>
		<category><![CDATA[실습 환경]]></category>
		<category><![CDATA[실전 가이드]]></category>
		<category><![CDATA[에뮬레이션]]></category>
		<category><![CDATA[오류 해결]]></category>
		<category><![CDATA[오픈소스]]></category>
		<category><![CDATA[오픈소스 개발]]></category>
		<category><![CDATA[운영체제]]></category>
		<category><![CDATA[의존성 관리]]></category>
		<category><![CDATA[이해하기 쉬운 설명]]></category>
		<category><![CDATA[임베디드 시스템]]></category>
		<category><![CDATA[자동화]]></category>
		<category><![CDATA[자동화 빌드]]></category>
		<category><![CDATA[주의사항]]></category>
		<category><![CDATA[초보자 가이드]]></category>
		<category><![CDATA[커널 개발]]></category>
		<category><![CDATA[커널 모듈]]></category>
		<category><![CDATA[커널 헤더]]></category>
		<category><![CDATA[컴파일 과정]]></category>
		<category><![CDATA[컴파일 도구]]></category>
		<category><![CDATA[컴파일러]]></category>
		<category><![CDATA[컴퓨터 아키텍처]]></category>
		<category><![CDATA[클라우드 개발]]></category>
		<category><![CDATA[튜토리얼]]></category>
		<category><![CDATA[트러블슈팅]]></category>
		<category><![CDATA[패키지 관리]]></category>
		<category><![CDATA[패키지 설치]]></category>
		<category><![CDATA[프로그래밍]]></category>
		<category><![CDATA[프로그래밍 도구]]></category>
		<category><![CDATA[학습 가이드]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=40476</guid>

					<description><![CDATA[<p>Development Tools (개발 도구 모음) ? Linux에서 소프트웨어를 개발하고 컴파일하는 데 필요한 도구들의 패키지입니다. 예를 들어 &#8220;VMware Tools&#8221;처럼 C/C++ 소스 코드로 작성된 프로그램을 설치할 때 반드시 필요합니다. 설치 명령 부분 의미 주의 sudo 관리자 권한 필수! dnf Rocky Linux 패키지 매니저 Ubuntu는 apt groupinstall 패키지 그룹 설치 install과 다름 "Development Tools" 그룹 이름 따옴표 필수 [&#8230;]</p>
<p>The post <a href="https://lycos7560.com/etc/linux-development-tools-install/40476/">Linux Development Tools Install</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-7dc8e9d1      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#development-tools-개발-도구-모음" class="uagb-toc-link__trigger">Development Tools (개발 도구 모음) ?</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#설치-명령" class="uagb-toc-link__trigger">설치 명령</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#설치-시간-및-용량" class="uagb-toc-link__trigger">설치 시간 및 용량</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#설치-결과" class="uagb-toc-link__trigger">설치 결과</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#주요-설치-파일-cc-기준" class="uagb-toc-link__trigger">주요 설치 파일 (C/C++ 기준)</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#컴파일러-compiler" class="uagb-toc-link__trigger">컴파일러 (Compiler)</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#빌드-도구-build-tools" class="uagb-toc-link__trigger">빌드 도구 (Build Tools)</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#커널-개발-패키지-kernel-development" class="uagb-toc-link__trigger">커널 개발 패키지 (Kernel Development)</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#라이브러리-개발-패키지-library-development" class="uagb-toc-link__trigger">라이브러리 개발 패키지 (Library Development)</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#추가-개발-도구" class="uagb-toc-link__trigger">추가 개발 도구</a></li></ul><li class="uagb-toc__list"><a href="#참고-및-주의사항" class="uagb-toc-link__trigger">참고 및 주의사항</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#groupinstall-vs-install" class="uagb-toc-link__trigger">groupinstall vs install</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#설치-확인" class="uagb-toc-link__trigger">설치 확인</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#오류-발생-시" class="uagb-toc-link__trigger">오류 발생 시</a></ul></ul></ol>					</div>
									</div>
				</div>
			


<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Development Tools (개발 도구 모음) ?</h2>



<p>Linux에서 소프트웨어를 <strong>개발하고 컴파일하는 데 필요한 도구들의 패키지</strong>입니다.</p>



<p>예를 들어 &#8220;VMware Tools&#8221;처럼 <strong>C/C++ 소스 코드로 작성된 프로그램</strong>을 설치할 때 반드시 필요합니다.</p>



<h3 class="wp-block-heading">설치 명령</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">rocky linux

dnf groupinstall "Development Tools" -y

// vm-tool 설치 (Rocky Linux 공식 저장소에서 설치, ISO 방식이 아님)
sudo dnf install open-vm-tools open-vm-tools-desktop -y
</pre>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>부분</th><th>의미</th><th>주의</th></tr></thead><tbody><tr><td><code>sudo</code></td><td>관리자 권한</td><td>필수!</td></tr><tr><td><code>dnf</code></td><td>Rocky Linux 패키지 매니저</td><td>Ubuntu는 <code>apt</code></td></tr><tr><td><code>groupinstall</code></td><td>패키지 <strong>그룹</strong> 설치</td><td><code>install</code>과 다름</td></tr><tr><td><code>"Development Tools"</code></td><td>그룹 이름</td><td><strong>따옴표 필수</strong></td></tr><tr><td><code>-y</code></td><td>Yes 자동 응답</td><td>사용자 입력 생략</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--40);margin-bottom:var(--wp--preset--spacing--40)"/>



<h3 class="wp-block-heading">설치 시간 및 용량</h3>



<ul class="wp-block-list">
<li><strong>예상 시간:</strong> 3-5분</li>



<li><strong>설치 크기:</strong> ~1GB</li>



<li><strong>필요 디스크:</strong> ~2GB</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)"/>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">설치 결과</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">20260217 설치 결과는 Rocky Linux 버전 및 시간에 따라 다를 수 있습니다.

--------------

Installed:
  annobin-docs-12.99-1.el10.noarch                 annobin-plugin-gcc-12.99-1.el10.x86_64               asciidoc-10.2.0-12.el10.noarch                   autoconf-2.71-13.el10.noarch                                   
  automake-1.16.5-20.el10.noarch                   bison-3.8.2-9.el10.x86_64                            boost-atomic-1.83.0-5.el10.x86_64                boost-filesystem-1.83.0-5.el10.x86_64                          
  boost-regex-1.83.0-5.el10.x86_64                 boost-system-1.83.0-5.el10.x86_64                    boost-thread-1.83.0-5.el10.x86_64                byacc-2.0.20230521-7.el10.x86_64                               
  cmake-filesystem-3.30.5-3.el10_0.x86_64          cpp-14.3.1-2.1.el10.x86_64                           debugedit-5.1-8.el10.x86_64                      diffstat-1.66-3.el10.x86_64                                    
  docbook-dtds-1.0-92.el10.noarch                  docbook-style-xsl-1.79.2-30.el10.noarch              dwz-0.16-1.el10.x86_64                           dyninst-13.0.0-1.el10.x86_64                                   
  efi-srpm-macros-6-7.el10.noarch                  efivar-libs-39-3.el10.x86_64                         elfutils-0.193-1.el10.rocky.0.1.x86_64           elfutils-debuginfod-client-devel-0.193-1.el10.rocky.0.1.x86_64 
  elfutils-devel-0.193-1.el10.rocky.0.1.x86_64     elfutils-libelf-devel-0.193-1.el10.rocky.0.1.x86_64  flex-2.6.4-19.el10.x86_64                        fonts-srpm-macros-1:2.0.5-18.el10.noarch                       
  forge-srpm-macros-0.4.0-6.el10.noarch            gcc-14.3.1-2.1.el10.x86_64                           gcc-c++-14.3.1-2.1.el10.x86_64                   gcc-plugin-annobin-14.3.1-2.1.el10.x86_64                      
  gdb-16.3-2.el10.x86_64                           gdb-headless-16.3-2.el10.x86_64                      gettext-common-devel-0.22.5-6.el10.noarch        gettext-devel-0.22.5-6.el10.x86_64                             
  git-2.47.3-1.el10.x86_64                         git-core-2.47.3-1.el10.x86_64                        git-core-doc-2.47.3-1.el10.noarch                glibc-devel-2.39-58.el10_1.7.x86_64                            
  go-srpm-macros-3.6.0-4.el10.noarch               graphviz-9.0.0-15.el10.x86_64                        intltool-0.51.0-29.el10.noarch                   javapackages-filesystem-6.4.0-1.el10.noarch                    
  jna-5.14.0-7.el10.x86_64                         kernel-devel-6.12.0-124.35.1.el10_1.x86_64           kernel-headers-6.12.0-124.35.1.el10_1.x86_64     kernel-srpm-macros-1.0-26.el10.noarch                          
  libipt-2.1-5.el10.x86_64                         libstdc++-devel-14.3.1-2.1.el10.x86_64               libtool-2.4.7-13.el10.x86_64                     libxcrypt-devel-4.4.36-10.el10.x86_64                          
  libzstd-devel-1.5.5-9.el10.x86_64                ltrace-0.7.91-52.el10.x86_64                         lua-srpm-macros-1-15.el10.noarch                 m4-1.4.19-11.el10.x86_64                                       
  make-1:4.4.1-9.el10.x86_64                       mokutil-2:0.7.2-1.el10.x86_64                        nss-tools-3.112.0-4.el10_0.x86_64                ocaml-srpm-macros-10-4.el10.noarch                             
  openblas-srpm-macros-2-19.el10.noarch            openssl-devel-1:3.5.1-7.el10_1.x86_64                package-notes-srpm-macros-0.5-13.el10.noarch     patch-2.7.6-26.el10.x86_64                                     
  patchutils-0.4.2-15.el10.x86_64                  perl-Clone-0.46-10.el10.x86_64                       perl-Compress-Raw-Bzip2-2.212-512.el10.x86_64    perl-Compress-Raw-Zlib-2.212-513.el10_1.x86_64                 
  perl-Data-Dump-1.25-13.el10.noarch               perl-Digest-HMAC-1.04-12.el10.noarch                 perl-Digest-SHA-1:6.04-512.el10.x86_64           perl-Encode-Locale-1.05-31.el10.noarch                         
  perl-Error-1:0.17029-18.el10.noarch              perl-Fedora-VSP-0.001-36.el10.noarch                 perl-File-Compare-1.100.800-512.2.el10_0.noarch  perl-File-Copy-2.41-512.2.el10_0.noarch                        
  perl-File-Listing-6.16-5.el10.noarch             perl-Git-2.47.3-1.el10.noarch                        perl-HTML-Parser-3.82-3.el10.x86_64              perl-HTML-Tagset-3.20-59.el10.noarch                           
  perl-HTTP-Cookies-6.11-5.el10.noarch             perl-HTTP-Date-6.06-6.el10.noarch                    perl-HTTP-Message-6.45-5.el10.noarch             perl-HTTP-Negotiate-6.01-40.el10.noarch                        
  perl-I18N-Langinfo-0.24-512.2.el10_0.x86_64      perl-IO-Compress-2.212-512.el10.noarch               perl-IO-HTML-1.004-14.el10.noarch                perl-LWP-MediaTypes-6.04-19.el10.noarch                        
  perl-Module-Load-1:0.36-511.el10.noarch          perl-NTLM-1.09-41.el10.noarch                        perl-Net-HTTP-6.23-6.el10.noarch                 perl-TermReadKey-2.38-24.el10.x86_64                           
  perl-Thread-Queue-3.14-511.el10.noarch           perl-TimeDate-1:2.33-16.el10.noarch                  perl-Try-Tiny-0.31-12.el10.noarch                perl-WWW-RobotRules-6.02-41.el10.noarch                        
  perl-XML-Parser-2.47-6.el10.x86_64               perl-generators-1.16-7.el10.noarch                   perl-lib-0.65-512.2.el10_0.x86_64                perl-libwww-perl-6.76-3.el10.noarch                            
  perl-macros-4:5.40.2-512.2.el10_0.noarch         perl-srpm-macros-1-57.el10.noarch                    perl-subs-1.04-512.2.el10_0.noarch               perl-threads-1:2.40-511.el10.x86_64                            
  perl-threads-shared-1.69-511.el10.x86_64         perl-version-8:0.99.32-4.el10.x86_64                 pesign-116-6.el10.x86_64                         pyproject-srpm-macros-1.16.2-1.el10.noarch                     
  python-srpm-macros-3.12-10.el10.noarch           qt6-srpm-macros-6.9.1-1.el10.noarch                  redhat-rpm-config-293-1.el10.rocky.0.2.noarch    rpm-build-4.19.1.1-20.el10.x86_64                              
  rpm-sign-4.19.1.1-20.el10.x86_64                 rust-toolset-srpm-macros-1.88.0-1.el10.noarch        sgml-common-0.6.3-65.el10.noarch                 source-highlight-3.1.9-25.el10.x86_64                          
  systemd-rpm-macros-257-13.el10.rocky.0.1.noarch  systemtap-5.3-3b.el10.x86_64                         systemtap-client-5.3-3b.el10.x86_64              systemtap-devel-5.3-3b.el10.x86_64                             
  systemtap-runtime-5.3-3b.el10.x86_64             tbb-2021.11.0-7.el10.x86_64                          valgrind-1:3.25.1-3.el10.x86_64                  valgrind-devel-1:3.25.1-3.el10.x86_64                          
  valgrind-docs-1:3.25.1-3.el10.x86_64             valgrind-gdb-1:3.25.1-3.el10.x86_64                  valgrind-scripts-1:3.25.1-3.el10.x86_64          xz-devel-1:5.6.2-4.el10_0.x86_64                               
  zlib-ng-compat-devel-2.2.3-3.el10_1.x86_64       zstd-1.5.5-9.el10.x86_64                            

Complete!</pre>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)"/>



<h3 class="wp-block-heading">주요 설치 파일 (C/C++ 기준)</h3>



<h4 class="wp-block-heading">컴파일러 (Compiler)</h4>



<p>소스 코드(.c, .cpp) → 기계어 실행파일로 변환</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">gcc-14.3.1           → C 언어 컴파일러
gcc-c++-14.3.1       → C++ 언어 컴파일러</pre>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">빌드 도구 (Build Tools)</h4>



<p>컴파일러 옵션 자동 설정 / 복잡한 빌드 과정 자동화 / 어떤 파일을 먼저 컴파일할지 관리 등&#8230;</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">make-4.4.1           → 자동 빌드 관리
autoconf-2.71        → 자동 설정 생성
automake-1.16.5      → Makefile 자동 생성</pre>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">커널 개발 패키지 (Kernel Development)</h4>



<p><strong>역할:</strong> 커널과 상호작용하는 모듈 작성 가능</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">kernel-devel-6.12.0-124.35.1
kernel-headers-6.12.0-124.35.1
-----------------------------------------------
설치 명령어
sudo dnf install kernel-devel kernel-headers -y </pre>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">라이브러리 개발 패키지 (Library Development)</h4>



<p><strong>역할:</strong> 컴파일된 코드를 실행 가능 파일로 연결 (링킹)</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">glibc-devel-2.39           → C 표준 라이브러리
libstdc++-devel-14.3.1     → C++ 표준 라이브러리
-----------------------------------------------
모든 C/C++ 프로그램의 기본 함수 제공
printf(), malloc() 등의 함수 구현</pre>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">추가 개발 도구</h4>



<p>Git: 소스 코드 변경 이력 관리, GDB: 프로그램 실행 중 오류 추적, libtool: 공유 라이브러리(.so) 빌드</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">git-2.47.3           → 소스 코드 버전 관리
gdb-16.3             → 프로그램 디버거
libtool-2.4.7        → 라이브러리 빌드 도구</pre>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50)"/>



<h3 class="wp-block-heading">참고 및 주의사항</h3>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">groupinstall vs install</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 잘못된 방법 (의존성 부족 가능)
sudo dnf install gcc

# <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 올바른 방법 (모든 관련 도구 자동 설치)
sudo dnf groupinstall "Development Tools" -y</pre>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">설치 확인</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># 컴파일러 확인
gcc --version

# Make 확인
make --version

# 커널 헤더 확인
ls /usr/src/kernels/</pre>



<div style="height:10px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">오류 발생 시</h4>



<p><strong>네트워크 오류:</strong></p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">sudo dnf clean all
sudo dnf groupinstall "Development Tools" -y</pre>



<p><strong>의존성 충돌:</strong></p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">sudo dnf groupinstall "Development Tools" --allowerasing -y</pre>



<p></p>
<p>The post <a href="https://lycos7560.com/etc/linux-development-tools-install/40476/">Linux Development Tools Install</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/etc/linux-development-tools-install/40476/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Unity Package Manager &#8220;Invalid Signature&#8221;</title>
		<link>https://lycos7560.com/unity/unity-package-manager-invalid-signature/40434/</link>
					<comments>https://lycos7560.com/unity/unity-package-manager-invalid-signature/40434/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Tue, 10 Feb 2026 21:02:46 +0000</pubDate>
				<category><![CDATA[Unity]]></category>
		<category><![CDATA[개인 공부 저장용]]></category>
		<category><![CDATA[기타]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[Invalid Signature]]></category>
		<category><![CDATA[Manager]]></category>
		<category><![CDATA[package]]></category>
		<category><![CDATA[Package Manager]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[기초]]></category>
		<category><![CDATA[버그]]></category>
		<category><![CDATA[유나티]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=40434</guid>

					<description><![CDATA[<p>문제 상황 Unity 에디터의 Package Manager에서 Services Core 패키지가 빨간색 경고와 함께 &#8220;Invalid Signature&#8221; 표시 광고 초기화 실패(Gateway communication failure) 등의 문제가 발생 이는 패키지 자체의 손상이 아니라 Package Manager의 서명 검증 시스템 오류 오류의 의미와 영향 Package Manager의 서명 검증 실패 Unity Package Manager는 모든 패키지의 디지털 서명을 확인하는 검증 메커니즘을 가지고 있 &#8220;Invalid [&#8230;]</p>
<p>The post <a href="https://lycos7560.com/unity/unity-package-manager-invalid-signature/40434/">Unity Package Manager &#8220;Invalid Signature&#8221;</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-31667817      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#문제-상황" class="uagb-toc-link__trigger">문제 상황</a><li class="uagb-toc__list"><a href="#오류의-의미와-영향" class="uagb-toc-link__trigger">오류의 의미와 영향</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#package-manager의-서명-검증-실패" class="uagb-toc-link__trigger">Package Manager의 서명 검증 실패</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#unity-ads-초기화-실패와의-연결" class="uagb-toc-link__trigger">Unity Ads 초기화 실패와의 연결</a></li></ul></li><li class="uagb-toc__list"><a href="#해결-방법-개인적인" class="uagb-toc-link__trigger">해결 방법 (개인적인)</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#package-manager-캐시-삭제" class="uagb-toc-link__trigger">Package Manager 캐시 삭제</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#reset-packages-to-defaults-마지막-수단" class="uagb-toc-link__trigger">Reset Packages to Defaults (마지막 수단)</a></ul></ul></ol>					</div>
									</div>
				</div>
			


<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">문제 상황</h2>



<p>Unity 에디터의 Package Manager에서 <strong>Services Core 패키지가 빨간색 경고와 함께 &#8220;Invalid Signature&#8221;</strong> 표시</p>



<p>광고 초기화 실패(<code>Gateway communication failure</code>) 등의 문제가 발생</p>



<p>이는 패키지 자체의 손상이 아니라 <strong>Package Manager의 서명 검증 시스템 오류</strong></p>



<figure class="wp-block-image size-full"><img decoding="async" width="828" height="320" src="https://lycos7560.com/wp-content/uploads/2026/02/image.png" alt="" class="wp-image-40435" srcset="https://lycos7560.com/wp-content/uploads/2026/02/image.png 828w, https://lycos7560.com/wp-content/uploads/2026/02/image-300x116.png 300w, https://lycos7560.com/wp-content/uploads/2026/02/image-768x297.png 768w" sizes="(max-width: 828px) 100vw, 828px" /></figure>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">오류의 의미와 영향</h2>



<h3 class="wp-block-heading">Package Manager의 서명 검증 실패</h3>



<p>Unity Package Manager는 모든 패키지의 디지털 서명을 확인하는 검증 메커니즘을 가지고 있</p>



<p>&#8220;Invalid Signature&#8221;는 <strong>Package Manager의 서명 검증 로직이 정상적인 패키지를 잘못 거부하는 버그</strong></p>



<p>실제 패키지는 정상이지만, Package Manager가 잘못된 판단을 내리고 있는 상태로 생각됨</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">Unity Ads 초기화 실패와의 연결</h3>



<p>Services Core는 단순한 라이브러리가 아니라 <strong>Unity Ads를 포함한 모든 유니티 서비스의 핵심 패키지</strong>입니다. </p>



<p>이 패키지가 손상되면:</p>



<ul class="wp-block-list">
<li>Unity Ads 초기화 실패 <code>Gateway communication failure</code> 오류 발생 광고 로드 및 표시 불가 기타 Unity Services(Analytics, Crash Reporting 등) 동작 불능</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">해결 방법 (개인적인)</h2>



<h3 class="wp-block-heading">Package Manager 캐시 삭제 </h3>



<p>로컬에 저장된 손상된 패키지 캐시를 강제로 삭제</p>



<p><strong>Unity 에디터를 완전히 종료</strong>합니다 다음 폴더로 이동:</p>



<ul class="wp-block-list">
<li><strong>Windows</strong>: <code>%AppData%/Local/Unity/cache/upm</code></li>



<li><strong>Mac</strong>: <code>~/Library/Caches/Unity/upm</code></li>



<li><strong>Linux</strong>: <code>~/.cache/unity/upm</code></li>
</ul>



<p><code>upm</code> 폴더 전체를 삭제합니다 </p>



<p>Unity 에디터를 다시 열면 Package Manager가 서버에서 패키지를 새로 다운로드하고 서명을 다시 검증</p>



<p><strong>주의</strong>: 이 작업은 안전하며, 폴더를 다시 열면 필요한 캐시가 자동으로 재생성됩니다.</p>



<h3 class="wp-block-heading">Reset Packages to Defaults (마지막 수단)</h3>



<p>프로젝트의 패키지 설정이 꼬인 경우 초기화가 필요합니다.</p>



<p>Unity 상단 메뉴: Help &gt; Reset Packages to defaults 선택</p>



<p>확인 대화상자에서 &#8220;Yes&#8221; 클릭</p>



<p>프로젝트의 manifest.json이 기본값으로 되돌려집니다</p>



<p>주의: 이 작업은 프로젝트의 패키지 설정을 초기화하므로:</p>



<p>수동으로 추가했던 다른 패키지가 있다면 다시 설치해야 합니다</p>



<p>Packages/manifest.json 파일이 변경됩니다</p>



<p></p>
<p>The post <a href="https://lycos7560.com/unity/unity-package-manager-invalid-signature/40434/">Unity Package Manager &#8220;Invalid Signature&#8221;</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/unity/unity-package-manager-invalid-signature/40434/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MySQL 데이터베이스 &#038; 테이블 용량 확인</title>
		<link>https://lycos7560.com/etc/mysql-%eb%8d%b0%ec%9d%b4%ed%84%b0%eb%b2%a0%ec%9d%b4%ec%8a%a4-%ed%85%8c%ec%9d%b4%eb%b8%94-%ec%9a%a9%eb%9f%89-%ed%99%95%ec%9d%b8/40431/</link>
					<comments>https://lycos7560.com/etc/mysql-%eb%8d%b0%ec%9d%b4%ed%84%b0%eb%b2%a0%ec%9d%b4%ec%8a%a4-%ed%85%8c%ec%9d%b4%eb%b8%94-%ec%9a%a9%eb%9f%89-%ed%99%95%ec%9d%b8/40431/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Wed, 04 Feb 2026 20:16:04 +0000</pubDate>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[개인 공부 저장용]]></category>
		<category><![CDATA[기타]]></category>
		<category><![CDATA[AWS_RDS]]></category>
		<category><![CDATA[Backend]]></category>
		<category><![CDATA[BackendDeveloper]]></category>
		<category><![CDATA[BigData]]></category>
		<category><![CDATA[CloudDatabase]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[DataAnalysis]]></category>
		<category><![CDATA[DataBase]]></category>
		<category><![CDATA[DatabaseEngineer]]></category>
		<category><![CDATA[DatabaseHealth]]></category>
		<category><![CDATA[DatabaseOptimization]]></category>
		<category><![CDATA[DatabaseSize]]></category>
		<category><![CDATA[DatabaseStorage]]></category>
		<category><![CDATA[DatabaseTuning]]></category>
		<category><![CDATA[DataCleanup]]></category>
		<category><![CDATA[DataFree]]></category>
		<category><![CDATA[DataLength]]></category>
		<category><![CDATA[DataManagement]]></category>
		<category><![CDATA[DataStructure]]></category>
		<category><![CDATA[DataUsage]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[DBMS]]></category>
		<category><![CDATA[DBPerformance]]></category>
		<category><![CDATA[DBStatistics]]></category>
		<category><![CDATA[DB관리]]></category>
		<category><![CDATA[DB단편화]]></category>
		<category><![CDATA[DB모니터링]]></category>
		<category><![CDATA[DB상태체크]]></category>
		<category><![CDATA[DB용량확인]]></category>
		<category><![CDATA[DB튜닝]]></category>
		<category><![CDATA[DeveloperLife]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DiskUsage]]></category>
		<category><![CDATA[Efficiency]]></category>
		<category><![CDATA[Fragmentation]]></category>
		<category><![CDATA[Indexing]]></category>
		<category><![CDATA[IndexSize]]></category>
		<category><![CDATA[InformationDesign]]></category>
		<category><![CDATA[InformationSchema]]></category>
		<category><![CDATA[Insight]]></category>
		<category><![CDATA[Maintenance]]></category>
		<category><![CDATA[mariadb]]></category>
		<category><![CDATA[Metrics]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[OptimizeTable]]></category>
		<category><![CDATA[PerformanceTuning]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[QueryOptimization]]></category>
		<category><![CDATA[QueryPerformance]]></category>
		<category><![CDATA[QueryTips]]></category>
		<category><![CDATA[RDBMS]]></category>
		<category><![CDATA[RelationalDatabase]]></category>
		<category><![CDATA[Scalability]]></category>
		<category><![CDATA[ServerManagement]]></category>
		<category><![CDATA[ServerSide]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQLQuery]]></category>
		<category><![CDATA[SQLTutorial]]></category>
		<category><![CDATA[Storage]]></category>
		<category><![CDATA[SystemAdministration]]></category>
		<category><![CDATA[TableRows]]></category>
		<category><![CDATA[TableSize]]></category>
		<category><![CDATA[TechnicalPost]]></category>
		<category><![CDATA[TechStack]]></category>
		<category><![CDATA[WebDevelopment]]></category>
		<category><![CDATA[개발자일상]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[관계형데이터베이스]]></category>
		<category><![CDATA[기술블로그]]></category>
		<category><![CDATA[기초]]></category>
		<category><![CDATA[데브옵스]]></category>
		<category><![CDATA[데이터구조]]></category>
		<category><![CDATA[데이터베이스]]></category>
		<category><![CDATA[데이터베이스기초]]></category>
		<category><![CDATA[데이터분석]]></category>
		<category><![CDATA[데이터사용량]]></category>
		<category><![CDATA[데이터정리]]></category>
		<category><![CDATA[디스크사용량]]></category>
		<category><![CDATA[마리아DB]]></category>
		<category><![CDATA[백엔드]]></category>
		<category><![CDATA[백엔드개발자]]></category>
		<category><![CDATA[빅데이터]]></category>
		<category><![CDATA[서버관리]]></category>
		<category><![CDATA[서버사이드]]></category>
		<category><![CDATA[성능최적화]]></category>
		<category><![CDATA[시스템관리]]></category>
		<category><![CDATA[용량최적화]]></category>
		<category><![CDATA[웹개발]]></category>
		<category><![CDATA[유지보수]]></category>
		<category><![CDATA[인덱스용량]]></category>
		<category><![CDATA[인덱싱]]></category>
		<category><![CDATA[인사이트]]></category>
		<category><![CDATA[인포메이션스키마]]></category>
		<category><![CDATA[정보설계]]></category>
		<category><![CDATA[지표분석]]></category>
		<category><![CDATA[최적화]]></category>
		<category><![CDATA[코딩]]></category>
		<category><![CDATA[쿼리꿀팁]]></category>
		<category><![CDATA[쿼리최적화]]></category>
		<category><![CDATA[클라우드DB]]></category>
		<category><![CDATA[테이블용량]]></category>
		<category><![CDATA[프로그래밍]]></category>
		<category><![CDATA[행개수]]></category>
		<category><![CDATA[확장성]]></category>
		<category><![CDATA[효율성]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=40431</guid>

					<description><![CDATA[<p>1. 모든 데이터베이스별 총 용량 확인 현재 서버에 있는 모든 DB의 크기를 한눈에 비교하고 싶을 때 사용합니다. 용량이 큰 순서대로 정렬되어 출력됩니다. 2. 특정 데이터베이스 내의 테이블별 용량 상세 확인 &#8220;어떤 테이블이 용량을 다 잡아먹고 있지?&#8221;라는 궁금증이 생겼을 때 사용합니다. 데이터 크기와 인덱스 크기를 구분해서 보여줍니다. 데이터 크기와 인덱스 크기를 구분 3. 전체 서버의 총 [&#8230;]</p>
<p>The post <a href="https://lycos7560.com/etc/mysql-%eb%8d%b0%ec%9d%b4%ed%84%b0%eb%b2%a0%ec%9d%b4%ec%8a%a4-%ed%85%8c%ec%9d%b4%eb%b8%94-%ec%9a%a9%eb%9f%89-%ed%99%95%ec%9d%b8/40431/">MySQL 데이터베이스 &amp; 테이블 용량 확인</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-37ada8aa      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#1-모든-데이터베이스별-총-용량-확인" class="uagb-toc-link__trigger">1. 모든 데이터베이스별 총 용량 확인</a><li class="uagb-toc__list"><a href="#2-특정-데이터베이스-내의-테이블별-용량-상세-확인" class="uagb-toc-link__trigger">2. 특정 데이터베이스 내의 테이블별 용량 상세 확인</a><li class="uagb-toc__list"><a href="#3-전체-서버의-총-합계-용량-확인" class="uagb-toc-link__trigger">3. 전체 서버의 총 합계 용량 확인</a><li class="uagb-toc__list"><a href="#4-참고" class="uagb-toc-link__trigger">4. 참고</a></ol>					</div>
									</div>
				</div>
			


<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">1. 모든 데이터베이스별 총 용량 확인</h2>



<p>현재 서버에 있는 <strong>모든 DB의 크기를 한눈에 비교</strong>하고 싶을 때 사용합니다. </p>



<p>용량이 큰 순서대로 정렬되어 출력됩니다.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT 
    table_schema AS 'Database Name',
    ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Size (MB)',
    ROUND(SUM(data_free) / 1024 / 1024, 2) AS 'Free Space (MB)'
FROM 
    information_schema.tables
GROUP BY 
    table_schema
ORDER BY 
    (SUM(data_length + index_length)) DESC;</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">2. 특정 데이터베이스 내의 테이블별 용량 상세 확인</h2>



<p>&#8220;어떤 테이블이 용량을 다 잡아먹고 있지?&#8221;라는 궁금증이 생겼을 때 사용합니다. </p>



<p><strong>데이터 크기와 인덱스 크기를 구분</strong>해서 보여줍니다.</p>



<p><strong>데이터 크기와 인덱스 크기를 구분</strong></p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT 
    table_name AS 'Table Name',
    table_rows AS 'Total Rows',
    ROUND(data_length / 1024 / 1024, 2) AS 'Data Size (MB)',
    ROUND(index_length / 1024 / 1024, 2) AS 'Index Size (MB)',
    ROUND((data_length + index_length) / 1024 / 1024, 2) AS 'Total Size (MB)'
FROM 
    information_schema.tables
WHERE 
    table_schema = '데이터베이스명' -- 여기에 DB 이름 입력
ORDER BY 
    (data_length + index_length) DESC;</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">3. 전체 서버의 총 합계 용량 확인</h2>



<p>서버 전체에서 <strong>MySQL이 사용하는 총 디스크 용량</strong>만 깔끔하게 보고 싶을 때 유용합니다.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT 
    ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS 'Total Global Size (GB)'
FROM 
    information_schema.tables;</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">4. 참고</h2>



<ul class="wp-block-list">
<li><strong>data_length</strong>: 실제 데이터가 들어있는 물리적 크기입니다.</li>



<li><strong>index_length</strong>: 인덱스(색인)가 차지하는 크기입니다. 데이터는 적은데 인덱스가 너무 크면 최적화(<code>OPTIMIZE TABLE</code>)를 고려해야 합니다.</li>



<li><strong>data_free</strong>: <code>DELETE</code> 등으로 삭제된 행이 차지하던 &#8216;비어있는 공간&#8217;입니다. 이 값이 너무 크면 디스크 공간 낭비가 심하다는 뜻입니다.</li>
</ul>



<p></p>
<p>The post <a href="https://lycos7560.com/etc/mysql-%eb%8d%b0%ec%9d%b4%ed%84%b0%eb%b2%a0%ec%9d%b4%ec%8a%a4-%ed%85%8c%ec%9d%b4%eb%b8%94-%ec%9a%a9%eb%9f%89-%ed%99%95%ec%9d%b8/40431/">MySQL 데이터베이스 &amp; 테이블 용량 확인</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/etc/mysql-%eb%8d%b0%ec%9d%b4%ed%84%b0%eb%b2%a0%ec%9d%b4%ec%8a%a4-%ed%85%8c%ec%9d%b4%eb%b8%94-%ec%9a%a9%eb%9f%89-%ed%99%95%ec%9d%b8/40431/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MySQL 사용자 관리 명령어 (Ubuntu)</title>
		<link>https://lycos7560.com/ubuntu/mysql-%ec%82%ac%ec%9a%a9%ec%9e%90-%ea%b4%80%eb%a6%ac-%eb%aa%85%eb%a0%b9%ec%96%b4-ubuntu/40258/</link>
					<comments>https://lycos7560.com/ubuntu/mysql-%ec%82%ac%ec%9a%a9%ec%9e%90-%ea%b4%80%eb%a6%ac-%eb%aa%85%eb%a0%b9%ec%96%b4-ubuntu/40258/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Mon, 26 Jan 2026 07:08:55 +0000</pubDate>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[기타]]></category>
		<category><![CDATA[127.0.0.1]]></category>
		<category><![CDATA[alter_user]]></category>
		<category><![CDATA[bind-address]]></category>
		<category><![CDATA[create_user]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[drop_user]]></category>
		<category><![CDATA[flush_privileges]]></category>
		<category><![CDATA[grant명령어]]></category>
		<category><![CDATA[IP주소]]></category>
		<category><![CDATA[localhost]]></category>
		<category><![CDATA[mariadb]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysql_secure_installation]]></category>
		<category><![CDATA[mysql_upgrade]]></category>
		<category><![CDATA[mysql.user]]></category>
		<category><![CDATA[mysqld_safe]]></category>
		<category><![CDATA[mysqld.cnf]]></category>
		<category><![CDATA[RBAC]]></category>
		<category><![CDATA[revoke명령어]]></category>
		<category><![CDATA[root계정]]></category>
		<category><![CDATA[set_password]]></category>
		<category><![CDATA[show_grants]]></category>
		<category><![CDATA[skip-grant-tables]]></category>
		<category><![CDATA[SQL인젝션방지]]></category>
		<category><![CDATA[systemctl]]></category>
		<category><![CDATA[tail명령어]]></category>
		<category><![CDATA[ufw]]></category>
		<category><![CDATA[with_grant_option]]></category>
		<category><![CDATA[감사로그]]></category>
		<category><![CDATA[계정관리]]></category>
		<category><![CDATA[계정잠금]]></category>
		<category><![CDATA[구조변경권한]]></category>
		<category><![CDATA[권한부여]]></category>
		<category><![CDATA[권한상속]]></category>
		<category><![CDATA[권한설정]]></category>
		<category><![CDATA[권한테이블]]></category>
		<category><![CDATA[기초]]></category>
		<category><![CDATA[네트워크보안]]></category>
		<category><![CDATA[네트워크설정]]></category>
		<category><![CDATA[데이터베이스]]></category>
		<category><![CDATA[데이터베이스관리자]]></category>
		<category><![CDATA[데이터베이스생성]]></category>
		<category><![CDATA[데이터베이스연결]]></category>
		<category><![CDATA[데이터보안]]></category>
		<category><![CDATA[데이터조작권한]]></category>
		<category><![CDATA[동시접속]]></category>
		<category><![CDATA[로그확인]]></category>
		<category><![CDATA[로컬접속]]></category>
		<category><![CDATA[리눅스]]></category>
		<category><![CDATA[만료설정]]></category>
		<category><![CDATA[모니터링]]></category>
		<category><![CDATA[문제해결]]></category>
		<category><![CDATA[바인드주소]]></category>
		<category><![CDATA[방화벽]]></category>
		<category><![CDATA[백업사용자]]></category>
		<category><![CDATA[보안강화]]></category>
		<category><![CDATA[보안설정]]></category>
		<category><![CDATA[부팅시자동시작]]></category>
		<category><![CDATA[뷰권한]]></category>
		<category><![CDATA[비밀번호변경]]></category>
		<category><![CDATA[사용자관리]]></category>
		<category><![CDATA[사용자삭제]]></category>
		<category><![CDATA[사용자생성]]></category>
		<category><![CDATA[상태확인]]></category>
		<category><![CDATA[서버관리]]></category>
		<category><![CDATA[서비스시작]]></category>
		<category><![CDATA[서비스재시작]]></category>
		<category><![CDATA[서비스중지]]></category>
		<category><![CDATA[설정파일]]></category>
		<category><![CDATA[성능튜닝]]></category>
		<category><![CDATA[스키마관리]]></category>
		<category><![CDATA[시스템관리]]></category>
		<category><![CDATA[안전모드]]></category>
		<category><![CDATA[암호화]]></category>
		<category><![CDATA[에러로그]]></category>
		<category><![CDATA[역할기반접근제어]]></category>
		<category><![CDATA[연결제한]]></category>
		<category><![CDATA[와일드카드]]></category>
		<category><![CDATA[우분투]]></category>
		<category><![CDATA[원격접속]]></category>
		<category><![CDATA[웹애플리케이션]]></category>
		<category><![CDATA[이벤트권한]]></category>
		<category><![CDATA[인덱스권한]]></category>
		<category><![CDATA[인증]]></category>
		<category><![CDATA[일반사용자]]></category>
		<category><![CDATA[읽기전용]]></category>
		<category><![CDATA[접근로그]]></category>
		<category><![CDATA[접근제어]]></category>
		<category><![CDATA[접속설정]]></category>
		<category><![CDATA[최소권한원칙]]></category>
		<category><![CDATA[커넥션풀]]></category>
		<category><![CDATA[컬럼권한]]></category>
		<category><![CDATA[쿼리권한]]></category>
		<category><![CDATA[쿼리제한]]></category>
		<category><![CDATA[테이블권한]]></category>
		<category><![CDATA[테이블복구]]></category>
		<category><![CDATA[테이블생성권한]]></category>
		<category><![CDATA[트리거권한]]></category>
		<category><![CDATA[특권사용자]]></category>
		<category><![CDATA[패스워드정책]]></category>
		<category><![CDATA[퍼센트기호]]></category>
		<category><![CDATA[포트설정]]></category>
		<category><![CDATA[프로시저권한]]></category>
		<category><![CDATA[함수권한]]></category>
		<category><![CDATA[호스트설정]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=40258</guid>

					<description><![CDATA[<p>MySQL 서비스 상태 확인 및 관리 MySQL 접속 로컬 접속 원격 접속 사용자 계정 관리 사용자 생성 사용자 목록 조회 사용자 삭제 계정 잠금/해제 웹 애플리케이션용 사용자 생성 읽기 전용 사용자 생성 백업 전용 사용자 생성 비밀번호 관리 비밀번호 변경 root 비밀번호 초기화 권한 관리 권한 부여 권한 조회 권한 제거 권한 적용 주요 권한 [&#8230;]</p>
<p>The post <a href="https://lycos7560.com/ubuntu/mysql-%ec%82%ac%ec%9a%a9%ec%9e%90-%ea%b4%80%eb%a6%ac-%eb%aa%85%eb%a0%b9%ec%96%b4-ubuntu/40258/">MySQL 사용자 관리 명령어 (Ubuntu)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-06e23be1      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#mysql-서비스-상태-확인-및-관리" class="uagb-toc-link__trigger">MySQL 서비스 상태 확인 및 관리</a><li class="uagb-toc__list"><a href="#mysql-접속" class="uagb-toc-link__trigger">MySQL 접속</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#로컬-접속" class="uagb-toc-link__trigger">로컬 접속</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#원격-접속" class="uagb-toc-link__trigger">원격 접속</a></li></ul></li><li class="uagb-toc__list"><a href="#사용자-계정-관리" class="uagb-toc-link__trigger">사용자 계정 관리</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#사용자-생성" class="uagb-toc-link__trigger">사용자 생성</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#사용자-목록-조회" class="uagb-toc-link__trigger">사용자 목록 조회</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#사용자-삭제" class="uagb-toc-link__trigger">사용자 삭제</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#계정-잠금해제" class="uagb-toc-link__trigger">계정 잠금/해제</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#웹-애플리케이션용-사용자-생성" class="uagb-toc-link__trigger">웹 애플리케이션용 사용자 생성</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#읽기-전용-사용자-생성" class="uagb-toc-link__trigger">읽기 전용 사용자 생성</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#백업-전용-사용자-생성" class="uagb-toc-link__trigger">백업 전용 사용자 생성</a></li></ul></li></ul></li><li class="uagb-toc__list"><a href="#비밀번호-관리" class="uagb-toc-link__trigger">비밀번호 관리</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#비밀번호-변경" class="uagb-toc-link__trigger">비밀번호 변경</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#root-비밀번호-초기화" class="uagb-toc-link__trigger">root 비밀번호 초기화</a></li></ul></li></ul></li></ul></li><li class="uagb-toc__list"><a href="#권한-관리" class="uagb-toc-link__trigger">권한 관리</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#권한-부여" class="uagb-toc-link__trigger">권한 부여</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#권한-조회" class="uagb-toc-link__trigger">권한 조회</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#권한-제거" class="uagb-toc-link__trigger">권한 제거</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#권한-적용" class="uagb-toc-link__trigger">권한 적용</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#주요-권한-종류" class="uagb-toc-link__trigger">주요 권한 종류</a></ul></ul></ul></ul></ol>					</div>
									</div>
				</div>
			


<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">MySQL 서비스 상태 확인 및 관리</h2>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># 서비스 상태 확인
sudo systemctl status mysql

# MySQL 서비스 시작
sudo systemctl start mysql

# MySQL 서비스 중지
sudo systemctl stop mysql

# MySQL 서비스 재시작
sudo systemctl restart mysql

# 부팅 시 자동 시작 설정
sudo systemctl enable mysql

# 자동 시작 해제
sudo systemctl disable mysql</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">MySQL 접속</h2>



<h3 class="wp-block-heading">로컬 접속</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># root 사용자로 접속
sudo mysql -u root -p

# 특정 사용자로 접속
mysql -u username -p

# 데이터베이스 지정하여 접속
mysql -u username -p database_name</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">원격 접속</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># 원격 서버 접속
mysql -h hostname_or_ip -u username -p

# 포트 지정 접속
mysql -h hostname_or_ip -P 3306 -u username -p</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">사용자 계정 관리</h2>



<h3 class="wp-block-heading">사용자 생성</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">-- 로컬 접속만 허용하는 사용자 생성
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

-- 특정 IP에서만 접속 허용
CREATE USER 'username'@'192.168.1.100' IDENTIFIED BY 'password';

-- 특정 도메인에서만 접속 허용
CREATE USER 'username'@'%.example.com' IDENTIFIED BY 'password';

-- 모든 호스트에서 접속 허용 (보안상 주의)
CREATE USER 'username'@'%' IDENTIFIED BY 'password';

-- 패스워드 없는 사용자 생성
CREATE USER 'username'@'localhost';</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">사용자 목록 조회</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">-- 모든 사용자 조회
SELECT user, host FROM mysql.user;

-- 특정 사용자 조회
SELECT user, host FROM mysql.user WHERE user = 'username';

-- 현재 접속 중인 사용자 확인
SELECT USER();
SELECT CURRENT_USER();

-- 사용자의 권한 정보와 함께 조회
SELECT user, host, password_expired, account_locked FROM mysql.user;</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">사용자 삭제</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">-- 사용자 삭제
DROP USER 'username'@'host';

-- 여러 사용자 동시 삭제
DROP USER 'user1'@'localhost', 'user2'@'%';

-- 존재하지 않을 수도 있는 사용자 삭제 (에러 방지)
DROP USER IF EXISTS 'username'@'localhost';</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">계정 잠금/해제</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">-- 계정 잠금
ALTER USER 'username'@'host' ACCOUNT LOCK;

-- 계정 해제
ALTER USER 'username'@'host' ACCOUNT UNLOCK;

-- 잠금 상태 확인
SELECT user, host, account_locked FROM mysql.user WHERE user = 'username';</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">웹 애플리케이션용 사용자 생성</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">-- 데이터베이스 생성
CREATE DATABASE webapp_db;

-- 사용자 생성 및 권한 부여
CREATE USER 'webapp_user'@'localhost' IDENTIFIED BY 'secure_password123';
GRANT SELECT, INSERT, UPDATE, DELETE ON webapp_db.* TO 'webapp_user'@'localhost';
FLUSH PRIVILEGES;</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">읽기 전용 사용자 생성</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">-- 읽기 전용 사용자
CREATE USER 'readonly_user'@'%' IDENTIFIED BY 'readonly_password';
GRANT SELECT ON *.* TO 'readonly_user'@'%';
FLUSH PRIVILEGES;</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">백업 전용 사용자 생성</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">-- 백업 사용자 생성
CREATE USER 'backup_user'@'localhost' IDENTIFIED BY 'backup_password';
GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON *.* TO 'backup_user'@'localhost';
FLUSH PRIVILEGES;</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">비밀번호 관리</h2>



<h3 class="wp-block-heading">비밀번호 변경</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">-- 현재 사용자의 비밀번호 변경
ALTER USER USER() IDENTIFIED BY 'new_password';

-- 특정 사용자의 비밀번호 변경 (MySQL 8.0 이상 권장)
ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';

-- 이전 버전의 MySQL
SET PASSWORD FOR 'username'@'host' = PASSWORD('new_password');</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">root 비밀번호 초기화</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># 1. MySQL 서비스 중지
sudo systemctl stop mysql

# 2. 권한 테이블 없이 MySQL 시작
sudo mysqld_safe --skip-grant-tables &amp;

# 3. root로 비밀번호 없이 접속
mysql -u root

# 4. MySQL 내부에서 비밀번호 변경 (MySQL 8.0 기준)
mysql> FLUSH PRIVILEGES;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

# 5. MySQL 종료 후 정상 재시작
mysql> exit
sudo systemctl restart mysql</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">권한 관리</h2>



<h3 class="wp-block-heading">권한 부여</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">-- 모든 데이터베이스 목록 보기
SHOW DATABASES;

-- 특정 사용자의 권한이 있는 데이터베이스 확인
SHOW GRANTS FOR 'username'@'host';

-- 모든 데이터베이스에 모든 권한 부여
GRANT ALL PRIVILEGES ON *.* TO 'username'@'host';

-- 특정 데이터베이스에 모든 권한 부여
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';

-- 특정 테이블에 권한 부여
GRANT SELECT, INSERT, UPDATE ON database_name.table_name TO 'username'@'host';

-- 읽기 전용 권한
GRANT SELECT ON database_name.* TO 'username'@'host';

-- 특정 컬럼에만 권한 부여
GRANT SELECT (column1, column2) ON database_name.table_name TO 'username'@'host';

-- WITH GRANT OPTION (다른 사용자에게 권한 부여 가능)
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host' WITH GRANT OPTION;</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">권한 조회</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">-- 특정 사용자의 권한 조회
SHOW GRANTS FOR 'username'@'host';

-- 현재 사용자의 권한 조회
SHOW GRANTS;

-- 모든 사용자의 권한 요약
SELECT user, host, Select_priv, Insert_priv, Update_priv, Delete_priv 
FROM mysql.user;</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">권한 제거</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">-- 특정 권한 제거
REVOKE INSERT, UPDATE ON database_name.* FROM 'username'@'host';

-- 모든 권한 제거
REVOKE ALL PRIVILEGES ON *.* FROM 'username'@'host';

-- GRANT OPTION 제거
REVOKE GRANT OPTION ON database_name.* FROM 'username'@'host';</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">권한 적용</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">-- 권한 변경사항 즉시 적용
-- 권한 관련 오류 시 권한 테이블 새로고침
FLUSH PRIVILEGES;</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">주요 권한 종류</h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>권한</th><th>설명</th></tr></thead><tbody><tr><td>ALL PRIVILEGES</td><td>모든 권한</td></tr><tr><td>SELECT</td><td>데이터 조회</td></tr><tr><td>INSERT</td><td>데이터 삽입</td></tr><tr><td>UPDATE</td><td>데이터 수정</td></tr><tr><td>DELETE</td><td>데이터 삭제</td></tr><tr><td>CREATE</td><td>테이블/데이터베이스 생성</td></tr><tr><td>DROP</td><td>테이블/데이터베이스 삭제</td></tr><tr><td>ALTER</td><td>테이블 구조 변경</td></tr><tr><td>INDEX</td><td>인덱스 생성/삭제</td></tr><tr><td>LOCK TABLES</td><td>테이블 잠금</td></tr><tr><td>CREATE USER</td><td>사용자 생성</td></tr><tr><td>RELOAD</td><td>권한 새로고침</td></tr><tr><td>SHUTDOWN</td><td>서버 종료</td></tr></tbody></table></figure>



<p></p>



<p></p>



<p></p>



<p></p>
<p>The post <a href="https://lycos7560.com/ubuntu/mysql-%ec%82%ac%ec%9a%a9%ec%9e%90-%ea%b4%80%eb%a6%ac-%eb%aa%85%eb%a0%b9%ec%96%b4-ubuntu/40258/">MySQL 사용자 관리 명령어 (Ubuntu)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/ubuntu/mysql-%ec%82%ac%ec%9a%a9%ec%9e%90-%ea%b4%80%eb%a6%ac-%eb%aa%85%eb%a0%b9%ec%96%b4-ubuntu/40258/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Nginx + Apache / Reverse Proxy</title>
		<link>https://lycos7560.com/ubuntu/nginx-apache-reverse-proxy/40373/</link>
					<comments>https://lycos7560.com/ubuntu/nginx-apache-reverse-proxy/40373/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Fri, 05 Dec 2025 12:18:49 +0000</pubDate>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[기타]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[127.0.0.1]]></category>
		<category><![CDATA[301 redirect]]></category>
		<category><![CDATA[502 bad gateway]]></category>
		<category><![CDATA[a2dissite]]></category>
		<category><![CDATA[a2ensite]]></category>
		<category><![CDATA[access log]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[apache configuration]]></category>
		<category><![CDATA[apache modules]]></category>
		<category><![CDATA[apache reload]]></category>
		<category><![CDATA[apache virtualhost]]></category>
		<category><![CDATA[application server]]></category>
		<category><![CDATA[auto renewal]]></category>
		<category><![CDATA[Backend Server]]></category>
		<category><![CDATA[Caching Strategy]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Certbot]]></category>
		<category><![CDATA[Certificate Management]]></category>
		<category><![CDATA[connection pooling]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Decryption]]></category>
		<category><![CDATA[deny rules]]></category>
		<category><![CDATA[document root]]></category>
		<category><![CDATA[domain configuration]]></category>
		<category><![CDATA[downstream server]]></category>
		<category><![CDATA[dynamic content]]></category>
		<category><![CDATA[Encryption]]></category>
		<category><![CDATA[error log]]></category>
		<category><![CDATA[file protection]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[frontend server]]></category>
		<category><![CDATA[gzip compression]]></category>
		<category><![CDATA[Header Manipulation]]></category>
		<category><![CDATA[host header]]></category>
		<category><![CDATA[HSTS]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[http to https]]></category>
		<category><![CDATA[HTTP2]]></category>
		<category><![CDATA[HTTPS]]></category>
		<category><![CDATA[https redirect]]></category>
		<category><![CDATA[internal port]]></category>
		<category><![CDATA[KeepAlive]]></category>
		<category><![CDATA[lamp stack]]></category>
		<category><![CDATA[lemp stack]]></category>
		<category><![CDATA[let's encrypt]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Load Balancing]]></category>
		<category><![CDATA[localhost]]></category>
		<category><![CDATA[location block]]></category>
		<category><![CDATA[Log Analysis]]></category>
		<category><![CDATA[mixed content]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[nginx configuration]]></category>
		<category><![CDATA[nginx modules]]></category>
		<category><![CDATA[nginx reload]]></category>
		<category><![CDATA[Performance Tuning]]></category>
		<category><![CDATA[permanent redirect]]></category>
		<category><![CDATA[php processing]]></category>
		<category><![CDATA[port configuration]]></category>
		<category><![CDATA[port forwarding]]></category>
		<category><![CDATA[port forwarding configuration]]></category>
		<category><![CDATA[proxy buffer]]></category>
		<category><![CDATA[proxy headers]]></category>
		<category><![CDATA[proxy pass]]></category>
		<category><![CDATA[proxy redirect]]></category>
		<category><![CDATA[proxy set header]]></category>
		<category><![CDATA[real ip]]></category>
		<category><![CDATA[redirect loop]]></category>
		<category><![CDATA[regex location]]></category>
		<category><![CDATA[remote addr]]></category>
		<category><![CDATA[Request Forwarding]]></category>
		<category><![CDATA[Reverse Proxy]]></category>
		<category><![CDATA[scheme forwarding]]></category>
		<category><![CDATA[security headers]]></category>
		<category><![CDATA[seo optimization]]></category>
		<category><![CDATA[server block]]></category>
		<category><![CDATA[Server Configuration]]></category>
		<category><![CDATA[server management]]></category>
		<category><![CDATA[server name]]></category>
		<category><![CDATA[server optimization]]></category>
		<category><![CDATA[sites-available]]></category>
		<category><![CDATA[sites-enabled]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[ssl certificate]]></category>
		<category><![CDATA[SSL Termination]]></category>
		<category><![CDATA[Static Files]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[symbolic link]]></category>
		<category><![CDATA[systemctl]]></category>
		<category><![CDATA[TLS]]></category>
		<category><![CDATA[tls termination]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[upstream server]]></category>
		<category><![CDATA[virtual host]]></category>
		<category><![CDATA[web architecture]]></category>
		<category><![CDATA[web hosting]]></category>
		<category><![CDATA[Web Performance]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[web stack]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wordpress security]]></category>
		<category><![CDATA[wp-config]]></category>
		<category><![CDATA[x-content-type-options]]></category>
		<category><![CDATA[x-forwarded-for]]></category>
		<category><![CDATA[x-forwarded-proto]]></category>
		<category><![CDATA[X-Frame-Options]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[기초]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=40373</guid>

					<description><![CDATA[<p>Nginx를 리버스 프록시로, Apache를 백엔드 웹서버로 사용하는 구성 방법 Nginx가 SSL/TLS 처리와 클라이언트 요청을 담당하고, Apache는 WordPress 애플리케이션을 실행 아키텍처 구조 1. WordPress 설정 파일 위치 wp-config.php (WordPress 루트 디렉토리) 설정 목적 Nginx 리버스 프록시 환경에서 WordPress가 HTTPS를 올바르게 인식하도록 설정 코드 추가 위치 /* That's all, stop editing! Happy blogging. */ 주석 위에 다음 [&#8230;]</p>
<p>The post <a href="https://lycos7560.com/ubuntu/nginx-apache-reverse-proxy/40373/">Nginx + Apache / Reverse Proxy</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>


				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-ad566142      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#아키텍처-구조" class="uagb-toc-link__trigger">아키텍처 구조</a><li class="uagb-toc__list"><a href="#1-wordpress-설정" class="uagb-toc-link__trigger">1. WordPress 설정</a><li class="uagb-toc__list"><a href="#2-nginx-설정" class="uagb-toc-link__trigger">2. Nginx 설정</a><li class="uagb-toc__list"><a href="#3-apache-설정" class="uagb-toc-link__trigger">3. Apache 설정</a><li class="uagb-toc__list"><a href="#4-전체-설정-흐름" class="uagb-toc-link__trigger">4. 전체 설정 흐름</a><li class="uagb-toc__list"><a href="#5-트러블슈팅" class="uagb-toc-link__trigger">5. 트러블슈팅</a><li class="uagb-toc__list"><a href="#6-보안-체크리스트" class="uagb-toc-link__trigger">6. 보안 체크리스트</a><li class="uagb-toc__list"><a href="#7-성능-최적화-팁" class="uagb-toc-link__trigger">7. 성능 최적화 팁</a><li class="uagb-toc__list"><a href="#참고-사항" class="uagb-toc-link__trigger">참고 사항</a></ol>					</div>
									</div>
				</div>
			


<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Nginx를 리버스 프록시로, Apache를 백엔드 웹서버로 사용하는 구성 방법</p>



<p>Nginx가 SSL/TLS 처리와 클라이언트 요청을 담당하고, Apache는 WordPress 애플리케이션을 실행</p>



<ul class="wp-block-list">
<li><strong>Nginx</strong>: <br>&#8211; 정적 파일(이미지, CSS, JS) 처리에 매우 빠르고 동시 접속 처리에 강함<br>&#8211; Nginx는 Apache보다 훨씬 적은 메모리 사용<br>&#8211; Nginx는 이벤트 기반 구조로 수천 개의 동시 연결을 적은 리소스로 처리</li>



<li><strong>Apache</strong>: PHP 처리와 .htaccess 지원이 우수하고, WordPress 같은 PHP 애플리케이션과 호환성이 좋음</li>
</ul>



<h2 class="wp-block-heading">아키텍처 구조</h2>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">클라이언트 → Nginx (80/443포트) → Apache (5050포트) → WordPress
           ↓
      SSL/TLS 처리
      HTTPS 강제
</pre>



<hr class="wp-block-separator has-alpha-channel-opacity" style="margin-top:var(--wp--preset--spacing--40);margin-bottom:var(--wp--preset--spacing--40)"/>



<h2 class="wp-block-heading">1. WordPress 설정</h2>



<h3 class="wp-block-heading">파일 위치</h3>



<p><code>wp-config.php</code> (WordPress 루트 디렉토리)</p>



<h3 class="wp-block-heading">설정 목적</h3>



<p>Nginx 리버스 프록시 환경에서 WordPress가 HTTPS를 올바르게 인식하도록 설정</p>



<h3 class="wp-block-heading">코드 추가 위치</h3>



<p><code>/* That's all, stop editing! Happy blogging. */</code> 주석 <strong>위에</strong> 다음 코드를 추가</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">// Nginx 리버스 프록시 환경에서 HTTPS를 강제 인식시키는 코드
if (
    (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &amp;&amp; $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') ||
    (isset($_SERVER['HTTP_X_FORWARDED_SSL']) &amp;&amp; $_SERVER['HTTP_X_FORWARDED_SSL'] === 'on')
) {
    $_SERVER['HTTPS'] = 'on';
}
</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">설명</h3>



<ul class="wp-block-list">
<li>Nginx가 전달하는 <code>X-Forwarded-Proto</code> 헤더를 확인</li>



<li>HTTPS 요청임을 감지하면 <code>$_SERVER['HTTPS']</code>를 <code>'on'</code>으로 설정</li>



<li>WordPress의 리다이렉트 루프 및 Mixed Content 문제 해결</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity" style="margin-top:var(--wp--preset--spacing--40);margin-bottom:var(--wp--preset--spacing--40)"/>



<h2 class="wp-block-heading">2. Nginx 설정</h2>



<h3 class="wp-block-heading">파일 위치</h3>



<p><code>/etc/nginx/sites-available/test.conf</code></p>



<h3 class="wp-block-heading">주요 명령어</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># 문법 검사
sudo nginx -t

# 설정 활성화 (심볼릭 링크 생성)
sudo ln -s /etc/nginx/sites-available/test.conf /etc/nginx/sites-enabled/

# 설정 비활성화 (심볼릭 링크 제거)
sudo rm /etc/nginx/sites-enabled/test.conf

# Nginx 상태 확인
sudo systemctl status nginx

# Nginx 재시작
sudo systemctl restart nginx
</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">설정 구조</h3>



<h4 class="wp-block-heading">(1) HTTP → HTTPS 리다이렉트 (포트 80)</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">server {
    listen 80;
    listen [::]:80;
    server_name test.com www.test.com;

    # 모든 HTTP 요청을 HTTPS로 301 영구 이동
    return 301 https://$host$request_uri;
}
</pre>



<p><strong>기능:</strong></p>



<ul class="wp-block-list">
<li>모든 HTTP 요청을 HTTPS로 강제 리다이렉트</li>



<li>SEO 및 보안 향상</li>
</ul>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">(2) HTTPS 요청 처리 및 프록시 (포트 443)</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name test.com www.test.com;

    # SSL/TLS 인증서 설정 (Let's Encrypt)
    ssl_certificate /etc/letsencrypt/live/test.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/test.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;

    # 보안 헤더 설정
    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
    add_header X-Content-Type-Options nosniff always;
    add_header X-Frame-Options SAMEORIGIN always;

    # Apache로 프록시
    location / {
        proxy_pass http://127.0.0.1:5050;
        
        # 클라이언트 원본 정보 전달
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
        # HTTPS 정보 전달 (필수)
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Port 443;
        
        proxy_redirect off;
    }

    # .ht 파일 보안 차단
    location ~ /\.ht {
        deny all;
    }
}
</pre>



<p><strong>주요 기능:</strong></p>



<ul class="wp-block-list">
<li><strong>SSL/TLS 처리</strong>: Nginx가 HTTPS 암호화/복호화 담당</li>



<li><strong>보안 헤더</strong>: HSTS, XSS 보호, 클릭재킹 방지</li>



<li><strong>프록시 헤더</strong>: Apache가 실제 클라이언트 정보를 알 수 있도록 전달</li>



<li><strong>X-Forwarded-Proto</strong>: WordPress가 HTTPS를 인식하는 데 필수</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity" style="margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50)"/>



<h2 class="wp-block-heading">3. Apache 설정</h2>



<h3 class="wp-block-heading">포트 설정</h3>



<p><strong>파일:</strong> <code>/etc/apache2/ports.conf</code></p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Listen 5050
</pre>



<p><strong>설명:</strong></p>



<ul class="wp-block-list">
<li>Apache는 외부 접근 불가능한 내부 포트 5050에서만 대기</li>



<li>Nginx만 이 포트로 요청 전달 가능</li>
</ul>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">VirtualHost 설정</h3>



<p><strong>파일:</strong> <code>/etc/apache2/sites-available/test.conf</code></p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;VirtualHost *:5050>
    ServerName test.com
    ServerAlias www.test.com

    DocumentRoot /path/to/wordpress/

    ErrorLog ${APACHE_LOG_DIR}/test_error_444.log
    CustomLog ${APACHE_LOG_DIR}/test_access_444.log combined
&lt;/VirtualHost>
</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">주요 명령어</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># 사이트 활성화
sudo a2ensite test.conf

# 사이트 비활성화
sudo a2dissite test.conf

# Apache 설정 다시 로드
sudo systemctl reload apache2
</pre>



<hr class="wp-block-separator has-alpha-channel-opacity" style="margin-top:var(--wp--preset--spacing--40);margin-bottom:var(--wp--preset--spacing--40)"/>



<h2 class="wp-block-heading">4. 전체 설정 흐름</h2>



<h3 class="wp-block-heading">초기 설정 순서</h3>



<ol class="wp-block-list">
<li><strong>Apache 포트 변경</strong> <code>sudo vim /etc/apache2/ports.conf # Listen 5050 추가</code></li>



<li><strong>Apache VirtualHost 생성</strong> <code>sudo vim /etc/apache2/sites-available/test.conf sudo a2ensite test.conf sudo systemctl reload apache2</code></li>



<li><strong>WordPress 설정 수정</strong> <code>sudo vim /path/to/wordpress/wp-config.php # 프록시 인식 코드 추가</code></li>



<li><strong>Nginx 설정 생성</strong> <code>sudo vim /etc/nginx/sites-available/test.conf sudo nginx -t sudo ln -s /etc/nginx/sites-available/test.conf /etc/nginx/sites-enabled/ sudo systemctl restart nginx</code></li>



<li><strong>SSL 인증서 발급 (Let&#8217;s Encrypt)</strong> <code>sudo certbot --nginx -d test.com -d www.test.com</code></li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity" style="margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50)"/>



<h2 class="wp-block-heading">5. 트러블슈팅</h2>



<h3 class="wp-block-heading">일반적인 문제</h3>



<h4 class="wp-block-heading">문제 1: WordPress 리다이렉트 루프</h4>



<p><strong>원인:</strong> WordPress가 HTTPS를 인식하지 못함<br><strong>해결:</strong> <code>wp-config.php</code>에 프록시 인식 코드 확인</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">문제 2: Mixed Content 경고</h4>



<p><strong>원인:</strong> HTTP 리소스가 HTTPS 페이지에 로드됨<br><strong>해결:</strong> WordPress 설정 &gt; 사이트 주소를 <code>https://</code>로 변경</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">문제 3: 502 Bad Gateway</h4>



<p><strong>원인:</strong> Apache가 5050 포트에서 실행되지 않음<br><strong>해결:</strong></p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">sudo systemctl status apache2
sudo netstat -tlnp | grep 5050
</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">문제 4: SSL 인증서 오류</h4>



<p><strong>원인:</strong> 인증서 경로가 올바르지 않음<br><strong>해결:</strong> Nginx 설정에서 인증서 경로 확인</p>



<hr class="wp-block-separator has-alpha-channel-opacity" style="margin-top:var(--wp--preset--spacing--40);margin-bottom:var(--wp--preset--spacing--40)"/>



<h2 class="wp-block-heading">6. 보안 체크리스트</h2>



<ul class="wp-block-list">
<li>[ ] HTTP → HTTPS 강제 리다이렉트 작동</li>



<li>[ ] Apache는 localhost(127.0.0.1)에서만 접근 가능</li>



<li>[ ] SSL 인증서 자동 갱신 설정</li>



<li>[ ] 보안 헤더(HSTS, X-Frame-Options 등) 적용</li>



<li>[ ] <code>.ht</code> 파일 접근 차단</li>



<li>[ ] 방화벽에서 5050 포트 외부 차단</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity" style="margin-top:var(--wp--preset--spacing--40);margin-bottom:var(--wp--preset--spacing--40)"/>



<h2 class="wp-block-heading">7. 성능 최적화 팁</h2>



<ol class="wp-block-list">
<li><strong>Nginx 캐싱 활성화</strong>: 정적 파일을 Nginx에서 직접 서빙</li>



<li><strong>Gzip 압축</strong>: 텍스트 기반 콘텐츠 압축</li>



<li><strong>HTTP/2 활성화</strong>: 이미 설정됨 (<code>http2</code> 옵션)</li>



<li><strong>Keep-Alive 설정</strong>: 연결 재사용</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity" style="margin-top:var(--wp--preset--spacing--40);margin-bottom:var(--wp--preset--spacing--40)"/>



<h2 class="wp-block-heading">참고 사항</h2>



<ul class="wp-block-list">
<li><strong>도메인</strong>: 실제 도메인으로 <code>test.com</code> 변경 필요</li>



<li><strong>경로</strong>: WordPress 설치 경로에 맞게 수정</li>



<li><strong>포트</strong>: 5050 포트는 예시이며, 다른 포트 사용 가능 (보안을 위해 비표준 포트 권장)</li>



<li><strong>로그</strong>: 각 설정 파일에 명시된 로그 경로에서 문제 진단 가능</li>
</ul>



<p></p>
<p>The post <a href="https://lycos7560.com/ubuntu/nginx-apache-reverse-proxy/40373/">Nginx + Apache / Reverse Proxy</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/ubuntu/nginx-apache-reverse-proxy/40373/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Ubuntu에 Gemini CLI 설치</title>
		<link>https://lycos7560.com/ubuntu/ubuntu%ec%97%90-gemini-cli-%ec%84%a4%ec%b9%98/40364/</link>
					<comments>https://lycos7560.com/ubuntu/ubuntu%ec%97%90-gemini-cli-%ec%84%a4%ec%b9%98/40364/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Tue, 25 Nov 2025 16:02:48 +0000</pubDate>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[기타]]></category>
		<category><![CDATA[$\text{apt}$]]></category>
		<category><![CDATA[$\text{GEMINI\_API\_KEY}$]]></category>
		<category><![CDATA[$\text{npm install -g}$]]></category>
		<category><![CDATA[$\text{npm uninstall}$]]></category>
		<category><![CDATA[$\text{string-width}$]]></category>
		<category><![CDATA[$v$ flag]]></category>
		<category><![CDATA[$v$ 플래그]]></category>
		<category><![CDATA[AI Assistant]]></category>
		<category><![CDATA[AI Chatbot]]></category>
		<category><![CDATA[AI Tool]]></category>
		<category><![CDATA[AI Workflows]]></category>
		<category><![CDATA[AI 워크플로우]]></category>
		<category><![CDATA[AI 툴]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[API Key]]></category>
		<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[Authentication]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Backend]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[Clean Up]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[CLI Tips]]></category>
		<category><![CDATA[CLI Tool]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Command Line Interface]]></category>
		<category><![CDATA[Commands]]></category>
		<category><![CDATA[compatibility]]></category>
		<category><![CDATA[Console Application]]></category>
		<category><![CDATA[Dependencies]]></category>
		<category><![CDATA[Desktop Linux]]></category>
		<category><![CDATA[Dev Tips]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[Development Environment]]></category>
		<category><![CDATA[environment-variable]]></category>
		<category><![CDATA[Error Fix]]></category>
		<category><![CDATA[Frontend]]></category>
		<category><![CDATA[Full Stack]]></category>
		<category><![CDATA[GCP]]></category>
		<category><![CDATA[Gemini 2.5 Pro]]></category>
		<category><![CDATA[Gemini AI]]></category>
		<category><![CDATA[Gemini CLI]]></category>
		<category><![CDATA[Gemini Pro]]></category>
		<category><![CDATA[Gemini Quick Start]]></category>
		<category><![CDATA[Generative AI]]></category>
		<category><![CDATA[Global Install]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Cloud]]></category>
		<category><![CDATA[Google Gemini]]></category>
		<category><![CDATA[How to Install]]></category>
		<category><![CDATA[Installation Guide]]></category>
		<category><![CDATA[Invalid regular expression flags]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Large Language Model]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Linux Development]]></category>
		<category><![CDATA[Linux OS]]></category>
		<category><![CDATA[Linux Setup]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[Node Version]]></category>
		<category><![CDATA[Node.js]]></category>
		<category><![CDATA[Node.js Upgrade]]></category>
		<category><![CDATA[Node.js 호환성]]></category>
		<category><![CDATA[Nodejs v18]]></category>
		<category><![CDATA[Nodejs v20]]></category>
		<category><![CDATA[npm]]></category>
		<category><![CDATA[nvm]]></category>
		<category><![CDATA[NVM Install]]></category>
		<category><![CDATA[NVM 설치]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OS Setup]]></category>
		<category><![CDATA[Package Manager]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Regular Expression]]></category>
		<category><![CDATA[root]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[Step-by-Step]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[sudo]]></category>
		<category><![CDATA[SyntaxError]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Tech Trends]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[TUTORIAL]]></category>
		<category><![CDATA[Ubuntu Development]]></category>
		<category><![CDATA[Ubuntu Guide]]></category>
		<category><![CDATA[Ubuntu Server]]></category>
		<category><![CDATA[Uninstall Node]]></category>
		<category><![CDATA[Version Management]]></category>
		<category><![CDATA[Zsh]]></category>
		<category><![CDATA[개발 트렌드]]></category>
		<category><![CDATA[개발 팁]]></category>
		<category><![CDATA[개발 환경]]></category>
		<category><![CDATA[개발 효율]]></category>
		<category><![CDATA[개발자]]></category>
		<category><![CDATA[거대 언어 모델]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[구글 제미나이]]></category>
		<category><![CDATA[기술]]></category>
		<category><![CDATA[기초]]></category>
		<category><![CDATA[단계별 가이드]]></category>
		<category><![CDATA[루트 권한]]></category>
		<category><![CDATA[리눅스]]></category>
		<category><![CDATA[리눅스 개발]]></category>
		<category><![CDATA[명령어]]></category>
		<category><![CDATA[버전 관리]]></category>
		<category><![CDATA[버전 문제]]></category>
		<category><![CDATA[보안]]></category>
		<category><![CDATA[빠른 시작]]></category>
		<category><![CDATA[생성형 AI]]></category>
		<category><![CDATA[설치 가이드]]></category>
		<category><![CDATA[스크립트]]></category>
		<category><![CDATA[시스템 정리]]></category>
		<category><![CDATA[오류 해결]]></category>
		<category><![CDATA[오픈소스]]></category>
		<category><![CDATA[우분투]]></category>
		<category><![CDATA[의존성]]></category>
		<category><![CDATA[인공지능]]></category>
		<category><![CDATA[인공지능 비서]]></category>
		<category><![CDATA[인증]]></category>
		<category><![CDATA[자동화]]></category>
		<category><![CDATA[전역 설치]]></category>
		<category><![CDATA[정규 표현식]]></category>
		<category><![CDATA[제미나이]]></category>
		<category><![CDATA[챗봇]]></category>
		<category><![CDATA[콘솔 앱]]></category>
		<category><![CDATA[클라우드 컴퓨팅]]></category>
		<category><![CDATA[터미널]]></category>
		<category><![CDATA[튜토리얼]]></category>
		<category><![CDATA[패키지 매니저]]></category>
		<category><![CDATA[패키지 제거]]></category>
		<category><![CDATA[프로그래밍]]></category>
		<category><![CDATA[환경 변수]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=40364</guid>

					<description><![CDATA[<p>1단계: Node.js 및 npm 설치 (1) NVM (Node Version Manager)을 이용한 설치 (추천) (2) apt를 통한 기본 설치 2단계: Gemini CLI 설치 3단계: Gemini CLI 실행 및 인증 설치가 완료되면, 터미널에 gemini 명령어를 입력하여 실행 최초 실행 시 다음과 같은 설정 및 인증 과정이 진행됩니다. 인증이 성공적으로 완료되면, Gemini CLI 프롬프트(gemini &#62;)가 나타나며 바로 Gemini를 [&#8230;]</p>
<p>The post <a href="https://lycos7560.com/ubuntu/ubuntu%ec%97%90-gemini-cli-%ec%84%a4%ec%b9%98/40364/">Ubuntu에 Gemini CLI 설치</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-c8e0bf3e      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#1단계-nodejs-및-npm-설치" class="uagb-toc-link__trigger">1단계: Node.js 및 npm 설치</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#1-nvm-node-version-manager을-이용한-설치-추천" class="uagb-toc-link__trigger">(1) NVM (Node Version Manager)을 이용한 설치 (추천)</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#2-apt를-통한-기본-설치" class="uagb-toc-link__trigger">(2) apt를 통한 기본 설치</a></li></ul></li><li class="uagb-toc__list"><a href="#2단계-gemini-cli-설치" class="uagb-toc-link__trigger">2단계: Gemini CLI 설치</a><li class="uagb-toc__list"><a href="#3단계-gemini-cli-실행-및-인증" class="uagb-toc-link__trigger">3단계: Gemini CLI 실행 및 인증</a></ul></ol>					</div>
									</div>
				</div>
			


<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">1단계: Node.js 및 npm 설치</h2>



<ul class="wp-block-list">
<li>Gemini CLI는 <strong>Node.js 버전 20 이상</strong>을 권장</li>
</ul>



<h3 class="wp-block-heading">(1) NVM (Node Version Manager)을 이용한 설치 (추천)</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">// Node.js 20 이상인지 확인
node -v
npm -v

// NVM 설치 (버전 번호는 최신 버전으로 바뀔 수 있음):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

// 터미널 재시작 또는 적용:
source ~/.bashrc 
# 또는 새 터미널 창을 엽니다.

// 최신 LTS Node.js 설치:
nvm install --lts
nvm use --lts</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">(2) <code>apt</code>를 통한 기본 설치</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">// Node.js 20 이상인지 확인
node -v
npm -v

sudo apt update
sudo apt install -y nodejs npm</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">2단계: Gemini CLI 설치</h2>



<ul class="wp-block-list">
<li>Node.js와 npm이 준비되었다면, npm을 사용하여 Gemini CLI를 <strong>전역으로</strong> 설치</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">sudo npm install -g @google/gemini-cli</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">3단계: Gemini CLI 실행 및 인증</h2>



<p>설치가 완료되면, 터미널에 <code>gemini</code> 명령어를 입력하여 실행</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">gemini</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<p>최초 실행 시 다음과 같은 설정 및 인증 과정이 진행됩니다.</p>



<ol start="1" class="wp-block-list">
<li><strong>테마 선택:</strong> 터미널에서 원하는 CLI <strong>테마</strong>를 선택합니다.</li>



<li><strong>인증 방법 선택:</strong>
<ul class="wp-block-list">
<li><strong>Google 로그인 (권장):</strong> <br>개인 Google 계정으로 로그인하여 사용합니다. <br>브라우저 창이 열리면 로그인 및 인증을 완료하세요. <br>무료 등급에서는 Gemini 2.5 Pro 모델에 대한 충분한 요청 횟수(예: 분당 60회, 일일 1,000회)가 제공됩니다.</li>



<li><strong>API 키 사용:</strong> <br>Google AI Studio 등에서 발급받은 <strong>API 키</strong>를 사용하려면 환경 변수로 설정하거나 이 옵션을 선택합니다. <br>(예: <code>export GEMINI_API_KEY="YOUR_API_KEY"</code>)</li>
</ul>
</li>
</ol>



<p>인증이 성공적으로 완료되면, Gemini CLI 프롬프트(<code>gemini &gt;</code>)가 나타나며 바로 Gemini를 사용할 수 있습니다.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1500" height="611" src="https://lycos7560.com/wp-content/uploads/2025/11/image.png" alt="" class="wp-image-40365" srcset="https://lycos7560.com/wp-content/uploads/2025/11/image.png 1500w, https://lycos7560.com/wp-content/uploads/2025/11/image-300x122.png 300w, https://lycos7560.com/wp-content/uploads/2025/11/image-768x313.png 768w" sizes="(max-width: 1500px) 100vw, 1500px" /><figcaption class="wp-element-caption">성공</figcaption></figure>



<p></p>
<p>The post <a href="https://lycos7560.com/ubuntu/ubuntu%ec%97%90-gemini-cli-%ec%84%a4%ec%b9%98/40364/">Ubuntu에 Gemini CLI 설치</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/ubuntu/ubuntu%ec%97%90-gemini-cli-%ec%84%a4%ec%b9%98/40364/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Apache Virtual Host Guide (Apache 가상 호스트 설정)</title>
		<link>https://lycos7560.com/ubuntu/apache-%ea%b0%80%ec%83%81%ed%98%b8%ec%8a%a4%ed%8a%b8-%ec%84%a4%ec%a0%95-%ea%b0%80%ec%9d%b4%eb%93%9c/40358/</link>
					<comments>https://lycos7560.com/ubuntu/apache-%ea%b0%80%ec%83%81%ed%98%b8%ec%8a%a4%ed%8a%b8-%ec%84%a4%ec%a0%95-%ea%b0%80%ec%9d%b4%eb%93%9c/40358/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Tue, 25 Nov 2025 14:56:56 +0000</pubDate>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[기타]]></category>
		<category><![CDATA[301Redirect]]></category>
		<category><![CDATA[301리다이렉트]]></category>
		<category><![CDATA[403Forbidden]]></category>
		<category><![CDATA[404NotFound]]></category>
		<category><![CDATA[500Error]]></category>
		<category><![CDATA[502Error]]></category>
		<category><![CDATA[503Error]]></category>
		<category><![CDATA[504GatewayTimeout]]></category>
		<category><![CDATA[AccessControl]]></category>
		<category><![CDATA[AccessLog]]></category>
		<category><![CDATA[AllowOverride]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Apache2]]></category>
		<category><![CDATA[ApacheModules]]></category>
		<category><![CDATA[ARecord]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Backend]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[BasicAuth]]></category>
		<category><![CDATA[BestPractices]]></category>
		<category><![CDATA[Brotli]]></category>
		<category><![CDATA[BrowserCache]]></category>
		<category><![CDATA[Caching]]></category>
		<category><![CDATA[Certbot]]></category>
		<category><![CDATA[Cheatsheet]]></category>
		<category><![CDATA[chmod]]></category>
		<category><![CDATA[Chown]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Clustering]]></category>
		<category><![CDATA[CNAME]]></category>
		<category><![CDATA[command]]></category>
		<category><![CDATA[Compression]]></category>
		<category><![CDATA[ConfigTest]]></category>
		<category><![CDATA[CrtFile]]></category>
		<category><![CDATA[CSR]]></category>
		<category><![CDATA[CSRF]]></category>
		<category><![CDATA[Curl]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DirectoryIndex]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[DocumentRoot]]></category>
		<category><![CDATA[Domain]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[ErrorLog]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[Flask]]></category>
		<category><![CDATA[FreeSSL]]></category>
		<category><![CDATA[Guide]]></category>
		<category><![CDATA[Gzip]]></category>
		<category><![CDATA[HighAvailability]]></category>
		<category><![CDATA[Hosting]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[HSTS]]></category>
		<category><![CDATA[htpasswd]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[HTTP2]]></category>
		<category><![CDATA[HTTP3]]></category>
		<category><![CDATA[HTTPS]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[IP]]></category>
		<category><![CDATA[Iptables]]></category>
		<category><![CDATA[Journalctl]]></category>
		<category><![CDATA[KeepAlive]]></category>
		<category><![CDATA[KeyFile]]></category>
		<category><![CDATA[LetsEncrypt]]></category>
		<category><![CDATA[LinuxCommands]]></category>
		<category><![CDATA[LinuxServer]]></category>
		<category><![CDATA[LoadBalancing]]></category>
		<category><![CDATA[LoadTest]]></category>
		<category><![CDATA[LogAnalysis]]></category>
		<category><![CDATA[Manual]]></category>
		<category><![CDATA[mod_deflate]]></category>
		<category><![CDATA[mod_expires]]></category>
		<category><![CDATA[mod_headers]]></category>
		<category><![CDATA[mod_proxy]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[mod_ssl]]></category>
		<category><![CDATA[MPM]]></category>
		<category><![CDATA[MPM_Event]]></category>
		<category><![CDATA[MPM_Worker]]></category>
		<category><![CDATA[NameServer]]></category>
		<category><![CDATA[netstat]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[Nodejs]]></category>
		<category><![CDATA[OpenSSL]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[options]]></category>
		<category><![CDATA[PemFile]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Permission]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[port]]></category>
		<category><![CDATA[PortForwarding]]></category>
		<category><![CDATA[PrivateKey]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[ProxyPass]]></category>
		<category><![CDATA[ProxyPassReverse]]></category>
		<category><![CDATA[PublicKey]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Redirect]]></category>
		<category><![CDATA[Reference]]></category>
		<category><![CDATA[RequireAllGranted]]></category>
		<category><![CDATA[Restore]]></category>
		<category><![CDATA[ReverseProxy]]></category>
		<category><![CDATA[Rewrite]]></category>
		<category><![CDATA[RewriteRule]]></category>
		<category><![CDATA[Scalability]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SelfSigned]]></category>
		<category><![CDATA[ServerConfig]]></category>
		<category><![CDATA[ServerMaintenance]]></category>
		<category><![CDATA[ServerMigration]]></category>
		<category><![CDATA[ServerMonitoring]]></category>
		<category><![CDATA[ServerName]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[SpeedUp]]></category>
		<category><![CDATA[ss]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[subdomain]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[systemctl]]></category>
		<category><![CDATA[systemd]]></category>
		<category><![CDATA[TCP]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[TLS]]></category>
		<category><![CDATA[Tomcat]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[TUTORIAL]]></category>
		<category><![CDATA[UbuntuServer]]></category>
		<category><![CDATA[ufw]]></category>
		<category><![CDATA[URLRewrite]]></category>
		<category><![CDATA[Vhost]]></category>
		<category><![CDATA[VirtualHost]]></category>
		<category><![CDATA[VPS]]></category>
		<category><![CDATA[WAS]]></category>
		<category><![CDATA[WebAdmin]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[WebPerformance]]></category>
		<category><![CDATA[WebSecurity]]></category>
		<category><![CDATA[WebServer]]></category>
		<category><![CDATA[WebSocket]]></category>
		<category><![CDATA[Wget]]></category>
		<category><![CDATA[WSS]]></category>
		<category><![CDATA[XSS]]></category>
		<category><![CDATA[가상호스트]]></category>
		<category><![CDATA[가이드]]></category>
		<category><![CDATA[고가용성]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[권한설정]]></category>
		<category><![CDATA[기본인증]]></category>
		<category><![CDATA[기초]]></category>
		<category><![CDATA[네임서버]]></category>
		<category><![CDATA[네트워크]]></category>
		<category><![CDATA[데비안]]></category>
		<category><![CDATA[뎁스옵스]]></category>
		<category><![CDATA[도메인]]></category>
		<category><![CDATA[디버깅]]></category>
		<category><![CDATA[레퍼런스]]></category>
		<category><![CDATA[렛츠인크립트]]></category>
		<category><![CDATA[로그분석]]></category>
		<category><![CDATA[로드밸런싱]]></category>
		<category><![CDATA[리눅스명령어]]></category>
		<category><![CDATA[리눅스서버]]></category>
		<category><![CDATA[리다이렉트]]></category>
		<category><![CDATA[리버스프록시]]></category>
		<category><![CDATA[매뉴얼]]></category>
		<category><![CDATA[명령어]]></category>
		<category><![CDATA[모범사례]]></category>
		<category><![CDATA[무료인증서]]></category>
		<category><![CDATA[문제해결]]></category>
		<category><![CDATA[방화벽]]></category>
		<category><![CDATA[백업]]></category>
		<category><![CDATA[백엔드]]></category>
		<category><![CDATA[보안]]></category>
		<category><![CDATA[복구]]></category>
		<category><![CDATA[부하테스트]]></category>
		<category><![CDATA[브라우저캐시]]></category>
		<category><![CDATA[사설인증서]]></category>
		<category><![CDATA[사용법]]></category>
		<category><![CDATA[서버모니터링]]></category>
		<category><![CDATA[서버설정]]></category>
		<category><![CDATA[서버유지보수]]></category>
		<category><![CDATA[서버이전]]></category>
		<category><![CDATA[서브도메인]]></category>
		<category><![CDATA[설정확인]]></category>
		<category><![CDATA[성능최적화]]></category>
		<category><![CDATA[속도향상]]></category>
		<category><![CDATA[시스템관리]]></category>
		<category><![CDATA[아파치]]></category>
		<category><![CDATA[아파치2]]></category>
		<category><![CDATA[아파치모듈]]></category>
		<category><![CDATA[압축]]></category>
		<category><![CDATA[액세스로그]]></category>
		<category><![CDATA[에러로그]]></category>
		<category><![CDATA[우분투]]></category>
		<category><![CDATA[웹개발]]></category>
		<category><![CDATA[웹보안]]></category>
		<category><![CDATA[웹서버]]></category>
		<category><![CDATA[웹성능]]></category>
		<category><![CDATA[웹소켓]]></category>
		<category><![CDATA[웹어드민]]></category>
		<category><![CDATA[웹호스팅]]></category>
		<category><![CDATA[인증서]]></category>
		<category><![CDATA[인프라]]></category>
		<category><![CDATA[접근제어]]></category>
		<category><![CDATA[최적화]]></category>
		<category><![CDATA[치트시트]]></category>
		<category><![CDATA[캐싱]]></category>
		<category><![CDATA[클라우드]]></category>
		<category><![CDATA[클러스터링]]></category>
		<category><![CDATA[터미널]]></category>
		<category><![CDATA[튜토리얼]]></category>
		<category><![CDATA[포트]]></category>
		<category><![CDATA[포트포워딩]]></category>
		<category><![CDATA[프록시]]></category>
		<category><![CDATA[확장성]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=40358</guid>

					<description><![CDATA[<p>기본 설정 확인 Apache 상태 및 설정 검증 필수 모듈 활성화 가상호스트 생성 1. 설정 파일 생성 2. 기본 HTTP 가상호스트 3. HTTP → HTTPS 리다이렉트 4. HTTPS 가상호스트 (정적 파일) 다양한 설정 예제 리버스 프록시 WebSocket 프록시 여러 백엔드로 로드 밸런싱 경로별 다른 백엔드 라우팅 특정 IP만 접근 허용 SSL/HTTPS 설정 Certbot으로 SSL 인증서 [&#8230;]</p>
<p>The post <a href="https://lycos7560.com/ubuntu/apache-%ea%b0%80%ec%83%81%ed%98%b8%ec%8a%a4%ed%8a%b8-%ec%84%a4%ec%a0%95-%ea%b0%80%ec%9d%b4%eb%93%9c/40358/">Apache Virtual Host Guide (Apache 가상 호스트 설정)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-692d8850      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#기본-설정-확인" class="uagb-toc-link__trigger">기본 설정 확인</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#apache-상태-및-설정-검증" class="uagb-toc-link__trigger">Apache 상태 및 설정 검증</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#필수-모듈-활성화" class="uagb-toc-link__trigger">필수 모듈 활성화</a></li></ul></li><li class="uagb-toc__list"><a href="#가상호스트-생성" class="uagb-toc-link__trigger">가상호스트 생성</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#1-설정-파일-생성" class="uagb-toc-link__trigger">1. 설정 파일 생성</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#2-기본-http-가상호스트" class="uagb-toc-link__trigger">2. 기본 HTTP 가상호스트</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#3-http-https-리다이렉트" class="uagb-toc-link__trigger">3. HTTP → HTTPS 리다이렉트</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#4-https-가상호스트-정적-파일" class="uagb-toc-link__trigger">4. HTTPS 가상호스트 (정적 파일)</a></li></ul></li></ul></li><li class="uagb-toc__list"><a href="#다양한-설정-예제" class="uagb-toc-link__trigger">다양한 설정 예제</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#리버스-프록시" class="uagb-toc-link__trigger">리버스 프록시</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#websocket-프록시" class="uagb-toc-link__trigger">WebSocket 프록시</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#여러-백엔드로-로드-밸런싱" class="uagb-toc-link__trigger">여러 백엔드로 로드 밸런싱</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#경로별-다른-백엔드-라우팅" class="uagb-toc-link__trigger">경로별 다른 백엔드 라우팅</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#특정-ip만-접근-허용" class="uagb-toc-link__trigger">특정 IP만 접근 허용</a></li></ul></li></ul></li></ul></li><li class="uagb-toc__list"><a href="#sslhttps-설정" class="uagb-toc-link__trigger">SSL/HTTPS 설정</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#certbot으로-ssl-인증서-발급" class="uagb-toc-link__trigger">Certbot으로 SSL 인증서 발급</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#ssl-설정-최적화" class="uagb-toc-link__trigger">SSL 설정 최적화</a></li></ul></li></ul></li></ul></li></ul></li><li class="uagb-toc__list"><a href="#가상호스트-관리" class="uagb-toc-link__trigger">가상호스트 관리</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#활성화비활성화" class="uagb-toc-link__trigger">활성화/비활성화</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#모듈-관리" class="uagb-toc-link__trigger">모듈 관리</a></li></ul></li></ul></li></ul></li></ul></li></ul></li><li class="uagb-toc__list"><a href="#문제-해결" class="uagb-toc-link__trigger">문제 해결</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#로그-확인" class="uagb-toc-link__trigger">로그 확인</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#연결-테스트" class="uagb-toc-link__trigger">연결 테스트</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#포트-및-프로세스-확인" class="uagb-toc-link__trigger">포트 및 프로세스 확인</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#일반적인-문제-해결" class="uagb-toc-link__trigger">일반적인 문제 해결</a></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li><li class="uagb-toc__list"><a href="#보안-강화" class="uagb-toc-link__trigger">보안 강화</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#보안-헤더-설정" class="uagb-toc-link__trigger">보안 헤더 설정</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#접근-제어" class="uagb-toc-link__trigger">접근 제어</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#htpasswd-파일-생성" class="uagb-toc-link__trigger">.htpasswd 파일 생성</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#rate-limiting-mod-ratelimit" class="uagb-toc-link__trigger">Rate Limiting (mod_ratelimit)</a></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li><li class="uagb-toc__list"><a href="#성능-최적화" class="uagb-toc-link__trigger">성능 최적화</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#캐싱-설정" class="uagb-toc-link__trigger">캐싱 설정</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#gzip-brotli-압축" class="uagb-toc-link__trigger">Gzip &amp; Brotli 압축</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#keepalive-설정" class="uagb-toc-link__trigger">KeepAlive 설정</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#mpm-설정-최적화" class="uagb-toc-link__trigger">MPM 설정 최적화</a></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li><li class="uagb-toc__list"><a href="#디렉토리-구조" class="uagb-toc-link__trigger">디렉토리 구조</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#apache-설정-파일-구조" class="uagb-toc-link__trigger">Apache 설정 파일 구조</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#웹-컨텐츠-디렉토리" class="uagb-toc-link__trigger">웹 컨텐츠 디렉토리</a></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li><li class="uagb-toc__list"><a href="#유용한-명령어-모음" class="uagb-toc-link__trigger">유용한 명령어 모음</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#빠른-참조" class="uagb-toc-link__trigger">빠른 참조</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#자주-사용하는-작업" class="uagb-toc-link__trigger">자주 사용하는 작업</a></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li><li class="uagb-toc__list"><a href="#문제-상황별-체크리스트" class="uagb-toc-link__trigger">문제 상황별 체크리스트</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#사이트가-접속되지-않을-때" class="uagb-toc-link__trigger">사이트가 접속되지 않을 때</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#502-bad-gateway-발생-시" class="uagb-toc-link__trigger">502 Bad Gateway 발생 시</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#ssl-인증서-오류-시" class="uagb-toc-link__trigger">SSL 인증서 오류 시</a></ul></ul></ul></ul></ul></ul></ul></ul></ul></ul></ul></ol>					</div>
									</div>
				</div>
			


<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">기본 설정 확인</h2>



<h3 class="wp-block-heading">Apache 상태 및 설정 검증</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># Apache 서비스 상태 확인
sudo systemctl status apache2

# 설정 파일 문법 검사
sudo apache2ctl configtest

# 활성화된 가상호스트 목록 확인
sudo apache2ctl -S

# Apache 버전 확인
apache2 -v

# 로드된 모듈 확인
apache2ctl -M
</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">필수 모듈 활성화</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># 프록시 및 SSL 관련 모듈 활성화
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod ssl
sudo a2enmod rewrite
sudo a2enmod headers

# 변경사항 적용
sudo systemctl restart apache2
</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">가상호스트 생성</h2>



<h3 class="wp-block-heading">1. 설정 파일 생성</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># 새 가상호스트 설정 파일 생성
sudo vim /etc/apache2/sites-available/testdomain.conf
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">2. 기본 HTTP 가상호스트</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;VirtualHost *:80>
    ServerName testdomain.com
    ServerAlias www.testdomain.com
    ServerAdmin admin@testdomain.com
    
    DocumentRoot /var/www/testdomain
    
    &lt;Directory /var/www/testdomain>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    &lt;/Directory>
    
    ErrorLog ${APACHE_LOG_DIR}/testdomain_error.log
    CustomLog ${APACHE_LOG_DIR}/testdomain_access.log combined
&lt;/VirtualHost>
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">3. HTTP → HTTPS 리다이렉트</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;VirtualHost *:80>
    ServerName testdomain.com
    ServerAlias www.testdomain.com
    
    # 모든 HTTP 요청을 HTTPS로 리다이렉트
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
    
    ErrorLog ${APACHE_LOG_DIR}/testdomain_http_error.log
    CustomLog ${APACHE_LOG_DIR}/testdomain_http_access.log combined
&lt;/VirtualHost>
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">4. HTTPS 가상호스트 (정적 파일)</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;VirtualHost *:443>
    ServerName testdomain.com
    ServerAlias www.testdomain.com
    ServerAdmin admin@testdomain.com
    
    DocumentRoot /var/www/testdomain
    
    &lt;Directory /var/www/testdomain>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    &lt;/Directory>
    
    # SSL 설정
    SSLEngine on
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/testdomain.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/testdomain.com/privkey.pem
    
    # 보안 헤더
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
    Header always set X-Content-Type-Options nosniff
    Header always set X-Frame-Options SAMEORIGIN
    Header always set X-XSS-Protection "1; mode=block"
    
    ErrorLog ${APACHE_LOG_DIR}/testdomain_https_error.log
    CustomLog ${APACHE_LOG_DIR}/testdomain_https_access.log combined
&lt;/VirtualHost>
</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">다양한 설정 예제</h2>



<h3 class="wp-block-heading">리버스 프록시 </h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;VirtualHost *:443>
    ServerName api.testdomain.com
    
    # SSL 설정
    SSLEngine on
    SSLProxyEngine on
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/api.testdomain.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/api.testdomain.com/privkey.pem
    
    # 프록시 설정
    ProxyPreserveHost On
    ProxyPass / http://localhost:3000/
    ProxyPassReverse / http://localhost:3000/
    
    # 프록시 헤더 설정
    RequestHeader set X-Forwarded-Proto "https"
    RequestHeader set X-Forwarded-Port "443"
    ProxyAddHeaders On
    
    # 타임아웃 설정
    ProxyTimeout 300
    
    # 요청 크기 제한 해제
    LimitRequestBody 0
    LimitRequestLine 65536
    LimitRequestFieldSize 65536
    
    ErrorLog ${APACHE_LOG_DIR}/api_error.log
    CustomLog ${APACHE_LOG_DIR}/api_access.log combined
&lt;/VirtualHost>
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">WebSocket 프록시</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;VirtualHost *:443>
    ServerName ws.testdomain.com
    
    SSLEngine on
    SSLProxyEngine on
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/ws.testdomain.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/ws.testdomain.com/privkey.pem
    
    # WebSocket 지원을 위한 프록시 설정
    ProxyPreserveHost On
    RewriteEngine On
    RewriteCond %{HTTP:Upgrade} =websocket [NC]
    RewriteRule /(.*)           ws://localhost:8080/$1 [P,L]
    RewriteCond %{HTTP:Upgrade} !=websocket [NC]
    RewriteRule /(.*)           http://localhost:8080/$1 [P,L]
    
    ProxyPassReverse / http://localhost:8080/
    
    ErrorLog ${APACHE_LOG_DIR}/ws_error.log
    CustomLog ${APACHE_LOG_DIR}/ws_access.log combined
&lt;/VirtualHost>
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">여러 백엔드로 로드 밸런싱</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;Proxy balancer://mycluster>
    BalancerMember http://localhost:3001
    BalancerMember http://localhost:3002
    BalancerMember http://localhost:3003
    ProxySet lbmethod=byrequests
&lt;/Proxy>

&lt;VirtualHost *:443>
    ServerName testdomain.com
    
    SSLEngine on
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/testdomain.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/testdomain.com/privkey.pem
    
    ProxyPreserveHost On
    ProxyPass / balancer://mycluster/
    ProxyPassReverse / balancer://mycluster/
    
    ErrorLog ${APACHE_LOG_DIR}/testdomain_error.log
    CustomLog ${APACHE_LOG_DIR}/testdomain_access.log combined
&lt;/VirtualHost>
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">경로별 다른 백엔드 라우팅</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;VirtualHost *:443>
    ServerName testdomain.com
    
    SSLEngine on
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/testdomain.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/testdomain.com/privkey.pem
    
    # API 요청은 백엔드 서버로
    ProxyPass /api http://localhost:8000/api
    ProxyPassReverse /api http://localhost:8000/api
    
    # 정적 파일은 직접 제공
    DocumentRoot /var/www/testdomain
    &lt;Directory /var/www/testdomain>
        Require all granted
    &lt;/Directory>
    
    ErrorLog ${APACHE_LOG_DIR}/testdomain_error.log
    CustomLog ${APACHE_LOG_DIR}/testdomain_access.log combined
&lt;/VirtualHost>
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">특정 IP만 접근 허용</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;VirtualHost *:443>
    ServerName admin.testdomain.com
    
    SSLEngine on
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/admin.testdomain.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/admin.testdomain.com/privkey.pem
    
    DocumentRoot /var/www/admin
    
    &lt;Directory /var/www/admin>
        # 특정 IP만 허용
        Require ip 192.168.1.0/24
        Require ip 10.0.0.5
    &lt;/Directory>
    
    ErrorLog ${APACHE_LOG_DIR}/admin_error.log
    CustomLog ${APACHE_LOG_DIR}/admin_access.log combined
&lt;/VirtualHost>
</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">SSL/HTTPS 설정</h2>



<h3 class="wp-block-heading">Certbot으로 SSL 인증서 발급</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># 자동 설정 (권장)
sudo certbot --apache -d testdomain.com -d www.testdomain.com

# 인증서만 발급 (수동 설정)
sudo certbot certonly --standalone -d testdomain.com -d www.testdomain.com

# 와일드카드 인증서 발급
sudo certbot certonly --manual --preferred-challenges dns -d testdomain.com -d *.testdomain.com

# 인증서 갱신 테스트
sudo certbot renew --dry-run

# 인증서 강제 갱신
sudo certbot renew --force-renewal

# 인증서 자동 갱신 크론잡 설정
sudo crontab -e
# 매일 새벽 2시에 갱신 확인
0 2 * * * certbot renew --quiet
</pre>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">SSL 설정 최적화</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># /etc/letsencrypt/options-ssl-apache.conf 참고
# 또는 직접 설정

SSLEngine on
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off

# OCSP Stapling 활성화
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">가상호스트 관리</h2>



<h3 class="wp-block-heading">활성화/비활성화</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># 가상호스트 활성화
sudo a2ensite testdomain.conf

# 가상호스트 비활성화
sudo a2dissite testdomain.conf

# 기본 사이트 비활성화
sudo a2dissite 000-default.conf

# 설정 적용 (다운타임 없음)
sudo systemctl reload apache2

# 설정 재시작 (다운타임 발생)
sudo systemctl restart apache2
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">모듈 관리</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># 모듈 활성화
sudo a2enmod 모듈명

# 모듈 비활성화
sudo a2dismod 모듈명

# 자주 사용하는 모듈들
sudo a2enmod rewrite      # URL 재작성
sudo a2enmod headers      # HTTP 헤더 조작
sudo a2enmod proxy        # 프록시 기능
sudo a2enmod proxy_http   # HTTP 프록시
sudo a2enmod proxy_wstunnel  # WebSocket 프록시
sudo a2enmod ssl          # SSL/TLS
sudo a2enmod deflate      # 압축
sudo a2enmod expires      # 캐시 제어
</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">문제 해결</h2>



<h3 class="wp-block-heading">로그 확인</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># 실시간 에러 로그 모니터링
sudo tail -f /var/log/apache2/error.log

# 실시간 액세스 로그 모니터링
sudo tail -f /var/log/apache2/access.log

# 특정 가상호스트 로그
sudo tail -f /var/log/apache2/testdomain_error.log

# 마지막 100줄 확인
sudo tail -100 /var/log/apache2/error.log

# 특정 키워드로 검색
sudo grep "testdomain" /var/log/apache2/*.log

# 에러만 필터링
sudo grep "error" /var/log/apache2/error.log

# 최근 에러 (systemd)
sudo journalctl -u apache2 -n 50
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">연결 테스트</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># HTTP 응답 헤더 확인
curl -I http://testdomain.com/

# HTTPS 응답 헤더 확인
curl -I https://testdomain.com/

# 상세 디버깅 정보
curl -v https://testdomain.com/

# POST 요청 테스트
curl -X POST https://testdomain.com/api/endpoint \
  -H "Content-Type: application/json" \
  -d '{"key":"value"}'

# SSL 인증서 정보 확인
openssl s_client -connect testdomain.com:443 -servername testdomain.com &lt; /dev/null

# 백엔드 서비스 테스트
curl -v http://localhost:3000/
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">포트 및 프로세스 확인</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># 특정 포트 사용 확인
sudo netstat -tlnp | grep :80
sudo netstat -tlnp | grep :443
sudo netstat -tlnp | grep :3000

# 또는 ss 명령어 사용 (더 빠름)
sudo ss -tlnp | grep :80

# Apache 프로세스 확인
ps aux | grep apache2

# 열린 파일 확인
sudo lsof -i :80
sudo lsof -i :443
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">일반적인 문제 해결</h3>



<h4 class="wp-block-heading">포트 충돌 문제 체크</h4>



<p>Apache + Nginx 동시 사용 시 자주 발생<br>특히 Certbot &#8211;apache 사용 시 충돌할 수 있음.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">sudo ss -tlnp | grep :80
sudo ss -tlnp | grep :443

// 만약 Nginx가 잡고 있다면
sudo systemctl stop nginx
sudo systemctl disable nginx
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">403 Forbidden 오류</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># Directory 권한 확인
&lt;Directory /var/www/testdomain>
    Require all granted
    # 또는
    Options +Indexes
&lt;/Directory>

# 파일 시스템 권한 확인
sudo chmod -R 755 /var/www/testdomain
sudo chown -R www-data:www-data /var/www/testdomain
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">500 Internal Server Error</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># 설정 문법 오류 확인
sudo apache2ctl configtest

# .htaccess 문제 확인
sudo tail -50 /var/log/apache2/error.log

# SELinux 확인 (CentOS/RHEL)
sudo setenforce 0  # 임시 비활성화
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">SSL 인증서 오류</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># 인증서 파일 존재 확인
ls -la /etc/letsencrypt/live/testdomain.com/

# 인증서 유효기간 확인
sudo certbot certificates

# 인증서 갱신
sudo certbot renew

# SSL 인증서 권한 변경 주의
# SSLCertificateFile: file '/etc/letsencrypt/live/.../fullchain.pem' does not exist or is empty // 원인은 보통 인증서 폴더 권한 문제

sudo chmod 755 /etc/letsencrypt/live
sudo chmod 644 /etc/letsencrypt/live/DOMAIN/fullchain.pem
sudo chmod 600 /etc/letsencrypt/live/DOMAIN/privkey.pem

</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">프록시 오류 (502 Bad Gateway)</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># 백엔드 서비스 작동 확인
curl http://localhost:3000/

# SELinux 설정 (CentOS/RHEL)
sudo setsebool -P httpd_can_network_connect 1

# 프록시 타임아웃 늘리기
ProxyTimeout 600
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h4 class="wp-block-heading">Proxy 헤더 관련 ForwardedHeaders 추가</h4>



<p>ASP.NET Core, Node.js, Django 모두 HTTPS 프록시 환경에서 필수</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">RequestHeader set X-Forwarded-For %{REMOTE_ADDR}s
RequestHeader set X-Forwarded-Proto https
RequestHeader set X-Forwarded-Host %{HTTP_HOST}s

# (예시) ASP.NET Core
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">보안 강화</h2>



<h3 class="wp-block-heading">보안 헤더 설정</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;VirtualHost *:443>
    ServerName testdomain.com
    
    # ... SSL 설정 ...
    
    # HSTS (HTTP Strict Transport Security)
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
    
    # XSS 방지
    Header always set X-XSS-Protection "1; mode=block"
    
    # MIME 타입 스니핑 방지
    Header always set X-Content-Type-Options "nosniff"
    
    # 클릭재킹 방지
    Header always set X-Frame-Options "SAMEORIGIN"
    
    # Referrer 정책
    Header always set Referrer-Policy "strict-origin-when-cross-origin"
    
    # CSP (Content Security Policy)
    Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline';"
    
    # 서버 정보 숨기기
    ServerTokens Prod
    ServerSignature Off
&lt;/VirtualHost>
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">접근 제어</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># IP 기반 접근 제어
&lt;Directory /var/www/admin>
    # 특정 IP만 허용
    Require ip 192.168.1.0/24
    Require ip 10.0.0.5
    
    # 또는 특정 IP 차단
    Require all granted
    Require not ip 192.168.1.100
&lt;/Directory>

# HTTP Basic 인증
&lt;Directory /var/www/protected>
    AuthType Basic
    AuthName "Restricted Area"
    AuthUserFile /etc/apache2/.htpasswd
    Require valid-user
&lt;/Directory>
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">.htpasswd 파일 생성</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># htpasswd 파일 생성 (첫 사용자)
sudo htpasswd -c /etc/apache2/.htpasswd username

# 추가 사용자 등록 (-c 옵션 제거)
sudo htpasswd /etc/apache2/.htpasswd username2
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">Rate Limiting (mod_ratelimit)</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;Location /api>
    SetOutputFilter RATE_LIMIT
    SetEnv rate-limit 400
    SetEnv rate-initial-burst 100
&lt;/Location>
</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">성능 최적화</h2>



<h3 class="wp-block-heading">캐싱 설정</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;VirtualHost *:443>
    ServerName testdomain.com
    
    # ... 기본 설정 ...
    
    # 정적 파일 캐싱
    &lt;IfModule mod_expires.c>
        ExpiresActive On
        
        # 이미지
        ExpiresByType image/jpg "access plus 1 year"
        ExpiresByType image/jpeg "access plus 1 year"
        ExpiresByType image/gif "access plus 1 year"
        ExpiresByType image/png "access plus 1 year"
        ExpiresByType image/webp "access plus 1 year"
        ExpiresByType image/svg+xml "access plus 1 year"
        
        # CSS/JS
        ExpiresByType text/css "access plus 1 month"
        ExpiresByType application/javascript "access plus 1 month"
        
        # 폰트
        ExpiresByType font/woff2 "access plus 1 year"
        ExpiresByType font/woff "access plus 1 year"
        
        # HTML
        ExpiresByType text/html "access plus 1 hour"
    &lt;/IfModule>
    
    # Cache-Control 헤더
    &lt;FilesMatch "\.(jpg|jpeg|png|gif|webp|svg|css|js|woff|woff2)$">
        Header set Cache-Control "max-age=31536000, public"
    &lt;/FilesMatch>
&lt;/VirtualHost>
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">Gzip &amp; Brotli 압축</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;IfModule mod_deflate.c>
    # 압축 활성화
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
    AddOutputFilterByType DEFLATE application/javascript application/json
    AddOutputFilterByType DEFLATE application/xml application/xhtml+xml
    AddOutputFilterByType DEFLATE image/svg+xml
    
    # 이미지는 압축 제외 (이미 압축됨)
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|webp)$ no-gzip
&lt;/IfModule>


sudo apt install libapache2-mod-brotli
sudo a2enmod brotli

&lt;IfModule mod_brotli.c>
    BrotliCompressionQuality 5
    AddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/css application/javascript application/json image/svg+xml
&lt;/IfModule></pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">KeepAlive 설정</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># /etc/apache2/apache2.conf

# KeepAlive 활성화
KeepAlive On

# 최대 요청 수
MaxKeepAliveRequests 100

# 타임아웃 (초)
KeepAliveTimeout 5
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">MPM 설정 최적화</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># /etc/apache2/mods-available/mpm_event.conf

&lt;IfModule mpm_event_module>
    StartServers             2
    MinSpareThreads          25
    MaxSpareThreads          75
    ThreadLimit              64
    ThreadsPerChild          25
    MaxRequestWorkers        150
    MaxConnectionsPerChild   0
&lt;/IfModule>
</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">디렉토리 구조</h2>



<h3 class="wp-block-heading">Apache 설정 파일 구조</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">/etc/apache2/
├── apache2.conf              # 메인 설정 파일
├── ports.conf                # 포트 설정
├── conf-available/           # 사용 가능한 설정
├── conf-enabled/             # 활성화된 설정
├── mods-available/           # 사용 가능한 모듈
├── mods-enabled/             # 활성화된 모듈 (심볼릭 링크)
├── sites-available/          # 사용 가능한 가상호스트
│   ├── 000-default.conf
│   ├── testdomain.conf
│   └── api.testdomain.conf
├── sites-enabled/            # 활성화된 가상호스트 (심볼릭 링크)
│   ├── 000-default.conf -> ../sites-available/000-default.conf
│   └── testdomain.conf -> ../sites-available/testdomain.conf
└── envvars                   # 환경 변수
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">웹 컨텐츠 디렉토리</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">/var/www/
├── html/                     # 기본 DocumentRoot
├── testdomain/               # 가상호스트 디렉토리
│   ├── public/
│   ├── index.html
│   └── .htaccess
└── logs/                     # 로그 (선택사항)
</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">유용한 명령어 모음</h2>



<h3 class="wp-block-heading">빠른 참조</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># 설정 테스트
sudo apache2ctl configtest

# 가상호스트 목록
sudo apache2ctl -S

# 설정 리로드 (무중단)
sudo systemctl reload apache2

# 재시작
sudo systemctl restart apache2

# 상태 확인
sudo systemctl status apache2

# 로그 실시간 모니터링
sudo tail -f /var/log/apache2/error.log

# 특정 도메인 설정 확인
sudo apache2ctl -D DUMP_VHOSTS | grep testdomain

# 활성화된 모듈 목록
apache2ctl -M

# 설정 파일 문법 체크
sudo apachectl -t
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">자주 사용하는 작업</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># 새 가상호스트 생성부터 활성화까지
sudo vim /etc/apache2/sites-available/newsite.conf
sudo a2ensite newsite.conf
sudo apache2ctl configtest
sudo systemctl reload apache2

# SSL 인증서 발급 및 자동 설정
sudo certbot --apache -d newsite.com

# 로그 분석
sudo tail -1000 /var/log/apache2/access.log | grep "POST" | wc -l

# 디스크 사용량 확인
sudo du -sh /var/log/apache2/*

# 오래된 로그 정리
sudo find /var/log/apache2/ -name "*.log.*" -mtime +30 -delete
</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">문제 상황별 체크리스트</h2>



<h3 class="wp-block-heading">사이트가 접속되지 않을 때</h3>



<ul class="wp-block-list">
<li>[ ] Apache 서비스 작동 확인: <code>sudo systemctl status apache2</code></li>



<li>[ ] 포트 리스닝 확인: <code>sudo netstat -tlnp | grep :80</code></li>



<li>[ ] 방화벽 확인: <code>sudo ufw status</code></li>



<li>[ ] DNS 설정 확인: <code>nslookup testdomain.com</code></li>



<li>[ ] 가상호스트 활성화 확인: <code>sudo apache2ctl -S</code></li>



<li>[ ] 설정 문법 확인: <code>sudo apache2ctl configtest</code></li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">502 Bad Gateway 발생 시</h3>



<ul class="wp-block-list">
<li>[ ] 백엔드 서비스 작동 확인: <code>curl http://localhost:3000/</code></li>



<li>[ ] 프록시 설정 확인: ProxyPass, ProxyPassReverse</li>



<li>[ ] SELinux 설정 확인 (CentOS/RHEL)</li>



<li>[ ] 타임아웃 설정 확인: ProxyTimeout</li>



<li>[ ] 에러 로그 확인: <code>sudo tail -50 /var/log/apache2/error.log</code></li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">SSL 인증서 오류 시</h3>



<ul class="wp-block-list">
<li>[ ] 인증서 파일 존재 확인</li>



<li>[ ] 인증서 유효기간 확인: <code>sudo certbot certificates</code></li>



<li>[ ] 인증서 경로 확인</li>



<li>[ ] 포트 443 리스닝 확인</li>



<li>[ ] SSL 모듈 활성화 확인: <code>apache2ctl -M | grep ssl</code></li>
</ul>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<p></p>
<p>The post <a href="https://lycos7560.com/ubuntu/apache-%ea%b0%80%ec%83%81%ed%98%b8%ec%8a%a4%ed%8a%b8-%ec%84%a4%ec%a0%95-%ea%b0%80%ec%9d%b4%eb%93%9c/40358/">Apache Virtual Host Guide (Apache 가상 호스트 설정)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/ubuntu/apache-%ea%b0%80%ec%83%81%ed%98%b8%ec%8a%a4%ed%8a%b8-%ec%84%a4%ec%a0%95-%ea%b0%80%ec%9d%b4%eb%93%9c/40358/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>C# Switch 식(Expression)</title>
		<link>https://lycos7560.com/c/c-switch-%ec%8b%9dexpression/40362/</link>
					<comments>https://lycos7560.com/c/c-switch-%ec%8b%9dexpression/40362/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Tue, 11 Nov 2025 15:02:40 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[!=]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[.NET 5]]></category>
		<category><![CDATA[.NET 6]]></category>
		<category><![CDATA[.Net Core]]></category>
		<category><![CDATA[>=]]></category>
		<category><![CDATA[<=]]></category>
		<category><![CDATA[==]]></category>
		<category><![CDATA[2019]]></category>
		<category><![CDATA[2020]]></category>
		<category><![CDATA[access]]></category>
		<category><![CDATA[action]]></category>
		<category><![CDATA[Admin]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Arrow Operator]]></category>
		<category><![CDATA[Authentication]]></category>
		<category><![CDATA[Authorization]]></category>
		<category><![CDATA[Boolean]]></category>
		<category><![CDATA[Branch]]></category>
		<category><![CDATA[Branching]]></category>
		<category><![CDATA[C#7]]></category>
		<category><![CDATA[C#8]]></category>
		<category><![CDATA[C#9]]></category>
		<category><![CDATA[Case]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[Clean Code]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Comparison]]></category>
		<category><![CDATA[Compile]]></category>
		<category><![CDATA[Concise]]></category>
		<category><![CDATA[Condition]]></category>
		<category><![CDATA[Conditional]]></category>
		<category><![CDATA[Control]]></category>
		<category><![CDATA[Control Flow]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Declarative]]></category>
		<category><![CDATA[Declarative Style]]></category>
		<category><![CDATA[Default]]></category>
		<category><![CDATA[delegate]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[Developer Guide]]></category>
		<category><![CDATA[Docs]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[dotnet]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[Error Handling]]></category>
		<category><![CDATA[Example]]></category>
		<category><![CDATA[Exception]]></category>
		<category><![CDATA[Execution]]></category>
		<category><![CDATA[Expression]]></category>
		<category><![CDATA[Expression Body]]></category>
		<category><![CDATA[Expression Tree]]></category>
		<category><![CDATA[False]]></category>
		<category><![CDATA[Feature]]></category>
		<category><![CDATA[Flow]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Function Pointer]]></category>
		<category><![CDATA[Functional]]></category>
		<category><![CDATA[Functional Programming]]></category>
		<category><![CDATA[Grammar]]></category>
		<category><![CDATA[Guide]]></category>
		<category><![CDATA[History]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Imperative]]></category>
		<category><![CDATA[Intuitive]]></category>
		<category><![CDATA[Lambda]]></category>
		<category><![CDATA[Language Evolution]]></category>
		<category><![CDATA[Language Feature]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Library]]></category>
		<category><![CDATA[Logical Pattern]]></category>
		<category><![CDATA[Maintainable]]></category>
		<category><![CDATA[Mapping]]></category>
		<category><![CDATA[method]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[Modern C#]]></category>
		<category><![CDATA[Modern Programming]]></category>
		<category><![CDATA[New Feature]]></category>
		<category><![CDATA[November]]></category>
		<category><![CDATA[Null]]></category>
		<category><![CDATA[Null Check]]></category>
		<category><![CDATA[Nullable]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[Object-Oriented]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[Operator]]></category>
		<category><![CDATA[Pattern Matching]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Property]]></category>
		<category><![CDATA[Property Pattern]]></category>
		<category><![CDATA[Range]]></category>
		<category><![CDATA[Readable]]></category>
		<category><![CDATA[Refactor]]></category>
		<category><![CDATA[Refactoring]]></category>
		<category><![CDATA[Relational Pattern]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[Return Value]]></category>
		<category><![CDATA[Role]]></category>
		<category><![CDATA[Running]]></category>
		<category><![CDATA[Runtime]]></category>
		<category><![CDATA[Sample Code]]></category>
		<category><![CDATA[SDK]]></category>
		<category><![CDATA[September]]></category>
		<category><![CDATA[Simplify]]></category>
		<category><![CDATA[Snippet]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[State]]></category>
		<category><![CDATA[Statement]]></category>
		<category><![CDATA[Stopped]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[Switch Action]]></category>
		<category><![CDATA[Switch Branch]]></category>
		<category><![CDATA[Switch Case]]></category>
		<category><![CDATA[Switch Clean]]></category>
		<category><![CDATA[Switch Default]]></category>
		<category><![CDATA[Switch Delegate]]></category>
		<category><![CDATA[Switch Docs]]></category>
		<category><![CDATA[Switch Evolution]]></category>
		<category><![CDATA[Switch Example]]></category>
		<category><![CDATA[Switch Expression]]></category>
		<category><![CDATA[Switch Expression Action]]></category>
		<category><![CDATA[Switch Expression C#]]></category>
		<category><![CDATA[Switch Expression Clean]]></category>
		<category><![CDATA[Switch Expression Default]]></category>
		<category><![CDATA[Switch Expression Delegate]]></category>
		<category><![CDATA[Switch Expression Docs]]></category>
		<category><![CDATA[Switch Expression Education]]></category>
		<category><![CDATA[Switch Expression Evolution]]></category>
		<category><![CDATA[Switch Expression Example]]></category>
		<category><![CDATA[Switch Expression Guide]]></category>
		<category><![CDATA[Switch Expression History]]></category>
		<category><![CDATA[Switch Expression Lambda]]></category>
		<category><![CDATA[Switch Expression Learning]]></category>
		<category><![CDATA[Switch Expression Logical]]></category>
		<category><![CDATA[Switch Expression Migration]]></category>
		<category><![CDATA[Switch Expression Modern]]></category>
		<category><![CDATA[Switch Expression Null]]></category>
		<category><![CDATA[Switch Expression Pattern]]></category>
		<category><![CDATA[Switch Expression Property]]></category>
		<category><![CDATA[Switch Expression Relational]]></category>
		<category><![CDATA[Switch Expression Sample]]></category>
		<category><![CDATA[Switch Expression Simplify]]></category>
		<category><![CDATA[Switch Expression Snippet]]></category>
		<category><![CDATA[Switch Expression Study]]></category>
		<category><![CDATA[Switch Expression Tuple]]></category>
		<category><![CDATA[Switch Expression Tutorial]]></category>
		<category><![CDATA[Switch Expression Upgrade]]></category>
		<category><![CDATA[Switch Expression Version]]></category>
		<category><![CDATA[Switch Expression Wildcard]]></category>
		<category><![CDATA[Switch Feature]]></category>
		<category><![CDATA[Switch Flow]]></category>
		<category><![CDATA[Switch Function]]></category>
		<category><![CDATA[Switch Guide]]></category>
		<category><![CDATA[Switch Keyword]]></category>
		<category><![CDATA[Switch Lambda]]></category>
		<category><![CDATA[Switch Logical]]></category>
		<category><![CDATA[Switch Mapping]]></category>
		<category><![CDATA[Switch Modern]]></category>
		<category><![CDATA[Switch Null]]></category>
		<category><![CDATA[Switch Operator]]></category>
		<category><![CDATA[Switch Pattern]]></category>
		<category><![CDATA[Switch Property]]></category>
		<category><![CDATA[Switch Relational]]></category>
		<category><![CDATA[Switch Simplify]]></category>
		<category><![CDATA[Switch Statement]]></category>
		<category><![CDATA[Switch Syntax]]></category>
		<category><![CDATA[Switch Tuple]]></category>
		<category><![CDATA[Switch Tutorial]]></category>
		<category><![CDATA[Switch Wildcard]]></category>
		<category><![CDATA[Syntax]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[True]]></category>
		<category><![CDATA[tuple]]></category>
		<category><![CDATA[Tuple Pattern]]></category>
		<category><![CDATA[TUTORIAL]]></category>
		<category><![CDATA[Upgrade]]></category>
		<category><![CDATA[User]]></category>
		<category><![CDATA[Value]]></category>
		<category><![CDATA[Variable]]></category>
		<category><![CDATA[version]]></category>
		<category><![CDATA[Visual studio]]></category>
		<category><![CDATA[VS Code]]></category>
		<category><![CDATA[Wildcard]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[기초]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=40362</guid>

					<description><![CDATA[<p>C# Switch 식(Expression) C# 8.0(2019년 9월)부터 도입된 Switch 식(Switch Expression)은 기존의 switch-case 문을 획기적으로 줄여주는 강력한 기능 람다 표현식(=>)을 쓰는 것처럼 간결하고 직관적인 분기 처리가 가능 기존 방식 (Statement) 새로운 방식 (Expression) 강력한 활용 패턴 C# 9.0(2020년 11월)부터 Switch 식이 단순 매핑이 아니라 패턴 매칭(Pattern Matching)과 결합됨 범위 비교 (Relational Pattern) C# 9.0부터는 when 키워드 [&#8230;]</p>
<p>The post <a href="https://lycos7560.com/c/c-switch-%ec%8b%9dexpression/40362/">C# Switch 식(Expression)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-1bf84b0a      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#c-switch-식expression" class="uagb-toc-link__trigger">C# Switch 식(Expression)</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#기존-방식-statement" class="uagb-toc-link__trigger">기존 방식 (Statement)</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#새로운-방식-expression" class="uagb-toc-link__trigger">새로운 방식 (Expression)</a></li></ul></li><li class="uagb-toc__list"><a href="#강력한-활용-패턴" class="uagb-toc-link__trigger">강력한 활용 패턴</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#범위-비교-relational-pattern" class="uagb-toc-link__trigger">범위 비교 (Relational Pattern)</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#여러-변수-동시에-비교-tuple-pattern" class="uagb-toc-link__trigger">여러 변수 동시에 비교 (Tuple Pattern)</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#객체-속성-비교-property-pattern" class="uagb-toc-link__trigger">객체 속성 비교 (Property Pattern)</a></li></ul></li></ul></li><li class="uagb-toc__list"><a href="#리턴값이-없는-메서드action-실행" class="uagb-toc-link__trigger">리턴값이 없는 메서드(Action) 실행</a></ul></ul></ol>					</div>
									</div>
				</div>
			


<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">C# Switch 식(Expression)</h2>



<p>C# 8.0(2019년 9월)부터 도입된 <strong>Switch 식(Switch Expression)</strong>은 기존의 <code><strong>switch-case</strong></code> 문을 획기적으로 줄여주는 강력한 기능</p>



<p>람다 표현식(<code>=></code>)을 쓰는 것처럼 간결하고 직관적인 분기 처리가 가능</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">기존 방식 (Statement)</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">public string GetGrade(int score)
{
    string grade;
    switch (score)
    {
        case 90:
            grade = "A";
            break;
        case 80:
            grade = "B";
            break;
        default:
            grade = "C";
            break;
    }
    return grade;
}</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">새로운 방식 (Expression)</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">public string GetGrade(int score) => score switch
{
    90 => "A",
    80 => "B",
    _  => "C"
};


또는 다른 범위 방식으로 (결과는 다름) 
score switch
{
    >= 90 => "A",
    >= 80 => "B",
    >= 70 => "C",
    _     => "D"
};
</pre>



<ul class="wp-block-list">
<li><strong>위치 이동:</strong> <code>switch</code> 키워드가 변수 <strong>뒤</strong>로 이동 (<code>score switch</code>)</li>



<li><strong>화살표 사용:</strong> <code>case ... :</code> 대신 람다 화살표 <code>=></code>를 사용</li>



<li><strong>Default 처리:</strong> <code>default:</code> 대신 와일드카드 <code>_</code>를 사용</li>



<li><strong>식(Expression):</strong> 그 자체가 &#8216;값&#8217;을 반환하므로 메서드의 리턴값으로 바로 사용할 수 있음</li>
</ul>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">강력한 활용 패턴</h2>



<p>C# 9.0(2020년 11월)부터 Switch 식이 단순 매핑이 아니라 <strong>패턴 매칭(Pattern Matching)</strong>과 결합됨</p>



<ul class="wp-block-list">
<li><strong>Switch Expression 자체는 C# 8에서 처음 도입</strong></li>



<li><strong>Pattern Matching 자체는 C# 7부터 지원</strong></li>



<li><strong>Relational Pattern, Logical Pattern 등이 C# 9에서 추가</strong></li>
</ul>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">범위 비교 (Relational Pattern)</h3>



<p>C# 9.0부터는 <code>when</code> 키워드 없이도 관계 연산자를 직접 사용</p>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">int temperature = 28;

string weather = temperature switch
{
    >= 30 => "폭염",
    >= 20 => "쾌적함",
    >= 10 => "쌀쌀함",
    _     => "추움"
};</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">여러 변수 동시에 비교 (Tuple Pattern)</h3>



<p>두 개 이상의 상태를 조합해서 분기해야 할 때, <code>if-else</code> 중첩 없이 튜플 패턴으로 깔끔하게 해결</p>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">string state = "Running";
bool hasError = true;

// (상태, 에러여부)를 한 번에 검사
string message = (state, hasError) switch
{
    ("Running", false) => "정상 작동 중",
    ("Running", true)  => "작동 중이나 오류 발생",
    ("Stopped", _)     => "시스템 중지됨", // _는 true/false 상관없음
    _                  => "알 수 없는 상태"
};</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">객체 속성 비교 (Property Pattern)</h3>



<p>객체 내부의 특정 프로퍼티 값에 따라 분기할 수도 있음 </p>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">var user = new User { Role = "Admin", IsDeleted = false };

string accessLevel = user switch
{
    { Role: "Admin", IsDeleted: false } => "관리자 권한",
    { Role: "User", IsDeleted: false }  => "일반 사용자",
    { IsDeleted: true }                 => "삭제된 계정",
    _                                   => "접근 불가" // null 포함
};

// 객체가 null인 경우도 자동으로 _</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">리턴값이 없는 메서드(Action) 실행</h2>



<p><code>Action</code> 델리게이트를 반환받아 즉시 실행</p>



<p>switch expression은 &#8220;값&#8221;을 반환하므로 델리게이트(함수 포인터)를 반환하는 것도 가능</p>



<pre class="EnlighterJSRAW" data-enlighter-language="csharp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">int command = 1;

// 1. 각 조건에 맞는 Action(행동)을 선택하고
// 2. 마지막의 ()로 즉시 실행합니다.
(command switch
{
    1 => (Action)(() => SaveData()),
    2 => () => LoadData(),
    _ => () => Console.WriteLine("대기")
})(); 
// 마지막 ()는 "반환된 델리게이트 실행"</pre>



<p></p>
<p>The post <a href="https://lycos7560.com/c/c-switch-%ec%8b%9dexpression/40362/">C# Switch 식(Expression)</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/c/c-switch-%ec%8b%9dexpression/40362/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
