WSL(Windows Subsystem for Linux) 이란?
1) 개요 — WSL이란?
WSL은 Windows에서 별도의 전체 VM 없이 리눅스 환경(파일시스템, 셸, 대부분의 명령줄 도구 및 앱)을 직접 실행할 수 있게 해주는 기능이야. 개발자가 Windows 데스크톱 한 대에서 리눅스 도구(예: bash, apt, ssh, 각종 빌드툴)를 자연스럽게 사용하게 해준다. Microsoft Learn+1
2) WSL 1 vs WSL 2 — 주요 차이(핵심)
-
WSL 1: Windows 커널 쪽에서 리눅스 시스템콜을 번역(translation)해 실행하는 방식. Windows 파일 시스템 접근 성능에서 이점이 있는 경우가 있음.
-
WSL 2: 가벼운 관리형 VM(Windows Hypervisor 기반) 안에 실제 리눅스 커널을 넣어 동작. 완전한 시스템콜 호환성과 리눅스 네이티브 파일시스템에서의 성능 향상이 특징. (대신 Windows↔WSL 간 파일 접근 패턴에 따라 속도 차이 있음.) Microsoft Learn+1
요약: **리눅스 호환성·컨테이너·ML·파일 I/O(리눅스쪽)**이 중요하면 WSL2 권장.
3) 주요 기능 / 추가 요소
-
GUI 앱 실행(WSLg): WSL2 위에서 리눅스 GUI(X11/Wayland) 앱을 Windows 데스크톱에서 바로 띄울 수 있게 해주는 WSLg 프로젝트가 있으며, 공식적으로 지원되어
wsl --update등으로 최신 기능을 받을 수 있다. (GUI는 WSL2에서만 동작). GitHub+1 -
GPU 가속(딥러닝/ML): WSL2는 GPU(예: NVIDIA CUDA, DirectML 등)를 활용한 머신러닝 워크로드 실행을 지원한다 — 즉 WSL에서 GPU 가속 학습/추론 환경 구성 가능. Microsoft Learn+1
-
systemd 지원: 최근 WSL은 systemd를 지원하며, 이를 통해 systemd 기반 서비스(데몬) 관리가 가능해졌다. Microsoft Learn
-
독립적 업데이트 / 오픈소스화: WSL은 OS에 내장되어 있지만 점차 독립 패키지로 분리·업데이트 가능해졌고(또한 오픈소스화에 대한 발표도 있었다). The Verge+1
4) 설치 & 자주 쓰는 명령(빠른 시작)
권장(간단 설치 — 관리자 권한 PowerShell에서):
# 전체 설치(Windows 11/지원되는 Windows 10에서 가능) wsl --install # 설치된 배포판 및 WSL 버전 확인 wsl -l -v # 특정 배포판을 WSL 2로 변환 wsl --set-version <DistroName> 2 # WSL 자체 업데이트(특히 WSLg/GUI 관련) wsl --update # WSL 중지(모든 인스턴스 종료) wsl --shutdown
새로 wsl --install로 설치하면 기본적으로 WSL 2로 설치되는 것이 현재 권장 흐름이다. 자세한 설치 옵션과 수동 설치 절차는 Microsoft 공식 가이드를 참고하면 안전하다. Microsoft Learn+1
5) 실무 활용 사례
-
개발 환경: 로컬에서 Linux 기반 빌드/테스트(예: Node, Python, Ruby, Go 등) → Windows IDE(예: VS Code Remote - WSL)와 결합해 사용. Ubuntu+1
-
컨테이너 개발: Docker Desktop은 WSL2 백엔드를 사용해 Windows에서 네이티브 수준으로 리눅스 컨테이너를 돌림 — Docker와 통합된 개발 워크플로우에 좋음. Docker Documentation+1
-
데이터/ML: CUDA/DirectML 지원으로 모델 학습 및 GPU 가속 워크로드를 WSL2에서 실행 가능. Microsoft Learn+1
-
GUI 리눅스 툴: 리눅스 전용 GUI 툴(예: 일부 IDE, 그래픽 툴)을 WSLg로 실행 가능. Microsoft Learn
6) 장점 & 단점(주의해야 할 점)
장점
-
Windows와 리눅스 도구를 자연스럽게 병행 가능 → 개발 생산성↑. Microsoft Learn
-
WSL2는 높은 리눅스 호환성(시스템콜)과 네이티브 Linux FS 성능 개선. Microsoft Learn
단점 / 주의
-
파일 I/O 패턴: WSL2의 경우 Windows 파일(예:
C:\)을 WSL내에서 자주 읽고 쓰면 성능 저하가 발생할 수 있어, 프로젝트 파일은 가능하면 WSL 파일시스템(예:/home)에 두는 것이 좋다. Microsoft Learn -
가상화 의존성: WSL2는 가상화 플랫폼을 사용하므로 일부 오래된 하이퍼바이저/도구와 충돌이 있을 수 있음(예: 구버전 VirtualBox). 최신 버전은 호환 개선됨. Microsoft Learn
-
완전한 서버 대체 아님: WSL은 데스크톱 개발/테스트에 탁월하지만, 프로덕션 리눅스 서버 운영을 1:1로 대체하는 용도는 아님(특히 커널 수정·특수 하드웨어 패스스루 등).
-
보안/권한: Windows↔WSL 통합 때문에 파일 접근이나 도구(예: Docker 데스크톱) 설정 시 보안 이슈가 발생할 수 있으니 권한·네트워크 설정 주의가 필요. (Docker+WSL 연동 관련 공식 문서 참조 권장). Docker Documentation
7) 실전 팁(짧고 유용한 것들)
-
프로젝트 코드는 WSL 내부(
~/project)에 두고 Windows에서 편집하려면 VS Code의 Remote - WSL 확장 사용. Docker Documentation -
WSL 업데이트: GUI·커널·도구 문제 생기면
wsl --update→wsl --shutdown후 재시작 해보기. Microsoft Learn -
wsl -l -v로 각 배포판이 WSL1/2 어느 버전인지 확인, 필요 시--set-version으로 전환. Microsoft Learn -
systemd 필요하면 Microsoft의 systemd 가이드(및
/etc/wsl.conf설정)를 참고해 활성화. Microsoft Learn
8) 참고 자료(공식)
-
Microsoft — Windows Subsystem for Linux (문서 전체): Microsoft Learn
-
Microsoft — WSL 설치 가이드 (
wsl --install등): Microsoft Learn -
Microsoft — WSL 버전 비교(WSL1 vs WSL2): Microsoft Learn
-
WSLg(리눅스 GUI) GitHub & 튜토리얼: GitHub+1
-
GPU/ML 가속 관련 WSL 문서 및 NVIDIA 가이드: Microsoft Learn+1
-
Docker Desktop + WSL2 통합: Docker Documentation+1
-
(참고) WSL 오픈소스화 관련 기사: The Verge
[AWS] Apache James + EC2 메일 서버 구축 !!
Apache James
About James stands for Java Apache Mail Enterprise Server! It has a modular architecture based on a rich set of modern and efficient components which provides at the end complete, stable, secure and extendable Mail Servers running on the JVM. Create your o
james.apache.org
메일 서버 구축을 테스트할 일이 생겨서 이런저런 자료를 찾던 중, Apache James를 찾게 되었다. 글 작성 당시의 최신 버전은 apache-james-3.6.0-app.zip 이다.
https://james.apache.org/server/quick-start.html
Apache James Project – Apache James Server 3 - Quick Start
Quick Start The goal of the document is to allow anyone to start with James binary Spring distribution as an operational mail server. For more complete ways of deploying James server please refer to the James installation guide Step 0: Requirements #######
james.apache.org
다운로드 받아서 압축을 푼다
(경로는 /usr/local/server/james)
$ wget https://mirror.navercorp.com/apache/james/server/3.6.0/james-server-app-3.6.0-app.zip
$ unzip james-server-app-3.6.0-app.zip
그리고 각각의 설정 파일을 수정해준다.
1) domainlist.xml
- defualtDomain을 사용할 도메인으로 바꿔준다.
<domainlist class="org.apache.james.domainlist.jpa.JPADomainList">
<autodetect>false</autodetect>
<autodetectIP>false</autodetectIP>
<defaultDomain>사용할 도메인</defaultDomain>
</domainlist>
2) smtpserver.xml
- authRequired: 메일을 보내기 위해서는 인증을 해야 한다. (오픈 릴레이를 막기 위해서 필요하다.)
- verifyIdentity: 발신인을 임의 수정 못하게 하기 위한 설정
<authRequired>true</authRequired>
<verifyIdentity>true</verifyIdentity>
3) mailetcontainer.xml (중요)
- 외부로 메일을 발송하기 위해서는 아래 구문을 찾아서 주석처리해줘야 한다.
- 이것이 활성화된 상태에서는 메일을 보내더라도 relaying denied 가 발생하게 된다.
<!--
<mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor">
<processor>relay-denied</processor>
<notice>550 - Requested action not taken: relaying denied</notice>
</mailet>
-->
이어서 james 서버를 기동하고, 도메인과 사용자계정을 생성해준다.
도메인, 계정 등록은 1번씩만 해두면 된다.
$ sh james start
$ sh james-cli.sh adddomain 사용할도메인
$ sh james.cli.sh adduser 사용자@사용할도메인 패스워드
이제 Route53 에서 호스트 세팅을 하자

여기서 중요한 것은 MX 유형의 레코드를 잡아야 한다.
가령 mydomain.com 이란 호스트를 이용할거면 아래와 같이 MX 레코드와 A 레코드를 설정해주어야 한다.
mydomain.com MX 10 mail.mydomain.com
mail.mydomain.com A (서버의 고정 IP, AWS의 경우 Elastic IP)
레코드 셋이 잘 세팅 되었는지 확인은 아래에서 하면 된다.
MX Lookup Tool - Check your DNS MX Records online - MxToolbox
mxtoolbox.com

이메일서버를 테스트 하면 아래와 같다

AWS EC2에서 25번 포트로 SMTP를 이용하여 메일을 발송하려면 RDNS 제한을 풀어달라고 요청을 보내야 한다.
https://console.aws.amazon.com/support/contacts?#/rdns-limits
https://console.aws.amazon.com/support/contacts?#/rdns-limits
console.aws.amazon.com

아래와 같이 telnet에서 커맨드로 테스트 할 수 있다.
220 ip-172-*** JAMES SMTP Server Server (JAMES SMTP Server ) ready
HELO mydomain.com
250 ip-172-*** Hello mydomain.com [61.***.***.***])
AUTH LOGIN
334 VXNl****
YWRt****
334 UGFz****
dGVz****
235 Authentication Successful
MAIL FROM: <admin@mydomain.com>
250 2.1.0 Sender <admin@mydomain.com> OK
RCPT TO: <****@naver.com>
250 2.1.5 Recipient <****@naver.com> OK
DATA
354 Ok Send data ending with <CRLF>.<CRLF>
SUBJECT: TEST MAIL
FROM: <admin@mydomain.com>
TO: <****@naver.com>
mail test
.
250 2.6.0 Message received
발송하면 실제로 외부 메일 (네이버)로 발송이 되게 된다.

썬더버드를 이용한 메일 테스트도 가능하다.
https://www.thunderbird.net/ko/
Thunderbird — 이메일을 더 쉽게 사용하세요.
Thunderbird는 메일을 더 쉽게 사용할 수 있는 무료 프로그램입니다. 더 많은 기능을 만나보세요!
www.thunderbird.net

당연한 이야기지만, SMTP와 IMAP, POP3 등의 포트는 AWS 보안 설정에서 허용해줘야 정상적으로 메일을 송/수신 할 수 있다.
CI/CD 입문·실전 - 2.6. [실습] Spring Boot 프로젝트에 CI/CD 구축 (일반 프로젝트용)
CI/CD 입문·실전 - 2.5. Spring Boot 프로젝트에 CI/CD 구축 (일반 프로젝트용)
nohup java -jar XXX.jar &
[📌 유튜브 애드센스 수익창출] 싱가포르 세금 정보 등록 가이드 !!
📌 1) 왜 “세금 정보(싱가포르)”를 등록해야 할까? 유튜브 광고 수익은 구글 아시아태평양 법인(Google Asia Pacific Pte. Ltd.) – 싱가포르 법인 을 통해 지급됩니다. 따라서 애드센스 수익을 받으려면 세금 관련 정보를 ...
-
이번주 로또 추천번호 최근 100회차 이력 분석 후, 통계기반 번호 생성으로 LLM 모델 분석!! 1. 추천 번호 : [5, 7, 16, 23, 24, 43] 2. 추천 번호 : [6, 14, 19, 23, 24, 41] 3. 추천 번호 : [2...
-
이번주 로또 추천번호 최근 600회차 이력 분석 후, 통계기반 번호 생성으로 파이썬 개발!! 1. 추천 번호 : [1, 6, 18, 31, 37, 42] 2. 추천 번호 : [8, 13, 15, 19, 31, 33] 3. 추천 번호 : [7, 1...
-
🌾 보리미숫가루 효능과 장점 총정리 속 편안한 전통 건강식의 재발견 요즘 간편하면서도 건강한 식사를 찾는 분들 사이에서 보리미숫가루가 다시 주목받고 있습니다. 어릴 적 여름 간식으로만 기억하던 미숫가루가, 사실은 장 건강·혈당 ...
-
👉 “프리랜서 월 ○○만 원 = 직장인 연봉 얼마?” 프리랜서 월급을 정규직 연봉으로 단순 환산하면 체감 소득이 크게 왜곡 됩니다. 왜냐하면 정규직 연봉에는 ✔ 회사 부담 4대보험 ✔ 퇴직금 ✔ 유급휴가 ✔ 고용 안정성 이 모두 포함되...
-
AWS Organization 을 활용하여 다수의 aws 계정 을 효율적으로 관리 하는 방법을 설명합니다. 특히 scp , ou , Policy 의 개념과 역할을 소개하며, 이를 통해 중앙 집중식 관리, 접근 제어 단순화, 통합 결제 ,...
-
💡 1. 요금 체계 요약 구글은 모델별로 Free Tier(무료) 및 Pay‑as‑you‑go(종량 요금제)를 제공합니다. Free Tier는 제한된 토큰 수와 요청 수를 제공하며, 유료 요금을 활성화하려면 Google Cloud Billing 계...
-
https://aws.amazon.com/startups/credits 현재 고환율 시대에 서버 개발자에게 금전적 지원은 매우 중요하며, aws activate는 좋은 기회가 될 수 있습니다. 신청 자격 요건이 크게 까다롭지 않고, 링크드인 계정을 통...