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 --updatewsl --shutdown 후 재시작 해보기. Microsoft Learn

  • wsl -l -v로 각 배포판이 WSL1/2 어느 버전인지 확인, 필요 시 --set-version으로 전환. Microsoft Learn

  • systemd 필요하면 Microsoft의 systemd 가이드(및 /etc/wsl.conf 설정)를 참고해 활성화. Microsoft Learn


8) 참고 자료(공식)





[AWS] Apache James + EC2 메일 서버 구축 !!




https://james.apache.org/

 

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)

 

레코드 셋이 잘 세팅 되었는지 확인은 아래에서 하면 된다.

 

https://mxtoolbox.com/

 

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 보안 설정에서 허용해줘야 정상적으로 메일을 송/수신 할 수 있다.




출처 : https://devsquare.tistory.com/41

CI/CD 입문·실전 - 2.5. Spring Boot 프로젝트에 CI/CD 구축 (일반 프로젝트용)







https://www.youtube.com/watch?v=66nzJHZQ59U











 









./gradlew clean build





## Jar 파일 위치
/build/libs





## Jar 파일 실행
nohup java -jar XXX.jar &

## 프로세스 확인
sudo lsof -i:8080











## 프로세스 Kill 후 재빌드
sudo fuser -k -n tcp 8080

./gradlew clean build






## Jar 파일 실행
nohup java -jar XXX.jar &

## 프로세스 확인
sudo lsof -i:8080












## 깃 토큰값 EC2 저장
git config --global credential.helper store






## deploy.yml 파일 수정





















[📌 유튜브 애드센스 수익창출] 싱가포르 세금 정보 등록 가이드 !!

📌 1) 왜 “세금 정보(싱가포르)”를 등록해야 할까? 유튜브 광고 수익은 구글 아시아태평양 법인(Google Asia Pacific Pte. Ltd.) – 싱가포르 법인 을 통해 지급됩니다. 따라서 애드센스 수익을 받으려면 세금 관련 정보를 ...