2022년 12월부터 2023년 6월까지 대략 반년 조금 넘게 WSL2로 개발환경을 구축하고 개발을 했습니다.
원래 우분투 리눅스를 개발컴 주 운영체제로 10년 넘게 사용했습니다. 그래서 리눅스에서 개발할 때의 편리함을 WSL2에서 최대한 구현하려고 애썼습니다.
결과적으로는 컴퓨터 성능 때문에 포기하고 다시 데스크톱 리눅스로 돌아갔는데요. 만약 컴퓨터 성능이 더 좋았다면 그럭저럭 사용했을지도 모르겠습니다. (글 쓰는 시점에 제 컴 CPU는 AMD Ryzen 3 PRO 4350G이고, 램은 16GB입니다. SSD 속도는 6Gbps)
WSL은 가상 환경으로 리눅스를 돌리는 것이다 보니 메모리를 상당히 점유하게 됩니다. 따라서 제대로 활용하실 거라면 리눅스가 점유할 메모리까지 계산해서 메모리를 늘리는 것이 좋을 듯합니다.
저는 WSL2 환경이 쓸만했습니다. 윈도우의 여러 프로그램을 쓰면서도 나름 쾌적한 웹 개발이 가능했습니다. 리눅스의 입력기 스트레스도 없었고요.
아래는 제가 WSL 구축 경험을 트위터에 쓴 내용입니다. 나중에 정리할 기회가 있으면 정리할 텐데, 일단은 모아 두기 위해 인용 형식으로 늘어놓습니다.
윈도우+WSL2로 개발환경을 바꾸고 세팅해 보는 중인데 난관이 많네요.
1.
MySQL, Apache2가 자동으로 시작되지 않고, 해법을 찾아 봤더니 무슨 비주얼베이직 스크립트까지 만들어야 한다는데 정말 그 방법밖에 없나? 생각중입니다.
WSL2에서 systemd를 사용할 수 있다는 것을 발견했습니다. 혹시나 해서 sudo systemctl enable apache2 했더니 WSL 부팅과 함께 아파치가 돌아갑니다. 이런 것에 감격이라니.
Systemd support is now available in WSL!
WSL에서 systemd를 사용하려면 MS스토어 버전의 WSL을 설치해야 합니다.
in-Window 버전으로 설치한 경우 systemd 활성화 불능.
파워쉘 wsl --version 명령으로 확인.
명령어가 먹지 않으면 in-Window 버전이므로 스토어 버전으로 업그레이드 필요.
Ensuring you are on the right WSL version
in-Window 버전 WSL과 MS스토어 버전 WSL은 업그레이드를 하는 개념이 아니라 동시에 설치를 하는 개념인 것 같습니다.
Can I install WSL from the Microsoft Store if I already have WSL installed?
2.
윈도우 브라우저에서 WSL2의 네트워크에 접속하는데, 80번 포트만 열려 있고 나머지는 막아 둔 것으로 보여요. 제가 잘못 알고 있는 건 아니겠죠?
여하간 이걸 열려면 포트 포워딩을 해야 하는데 윈도우 파워쉘 스크립트를 이용하는 해법이 있긴 하네요.
그런데 이걸 매번 실행해 줘야?!
[WSL 80포트 외 접속 가능하게 만들면서 참고한 글들]
설명이 돼 있는데 영어인 글 WSL Port Forwarding
설명은 좀 생략돼 있고, 꼭 그렇게 안 해도 되는 것도 써 있어서 약간 헷갈리게 만드는 내용도 있지만 한글인 게 장점이고 출처도 밝혀서 여하간 도움이 된 글 WSL2 port forwarding
3.
저는 패스워드 매니저로 GNU Pass를 사용하는데 한번 실패했다가 나중에 성공했습니다. 아래 글을 참고하세요.
[WSL 적응기는 아니지만 캡스락 한영전환]
맥북 쓰며 캡스락 한영전환이 의외로 편했는데 리눅스에선 온전히 구현 못하고 사용했습니다.
이번에 윈도우로 옮기고 방법을 찾았는데 파워토이로 간단히 해결돼 좋네요. 캡스락 기능 자체는 그냥 꺼버렸습니다.
4.
npm run watch를 돌리면 브라우저가 열리지 않는 문제가 있습니다.
WSL GUI는 아직 고민중이고, 브라우저는 윈도우 것을 사용하는 게 나으므로 방법을 찾아 봤습니다.
와~ 그런데 WSL Utility라는 프로젝트가 있고, 여기에서 기능을 만들어 둔 게 있었네요.
sudo apt install wslu
WSL Utility에서 윈도우 브라우저를 여는 것은 wslview입니다. 이걸 WSL의 기본 브라우저로 설정해 주면, 윈도우 브라우저가 열립니다.
기본 브라우저로 설정하려면 .bashrc나 .zshrc에 아래 문구를 추가해 줍니다.
export BROWSER=wslview
추가로 커맨드로 아래 명령도 내려 줍니다.
xdg-settings set default-web-browser wslview.desktop
5.
윈도우에서 WSL 커스텀 포트 웹서버에 접근하기.
php -S localhost:1111 로 WSL에서 서버를 띄우니 윈도우 브라우저에서 접속을 못하는 일이 있었습니다.
php -S 0.0.0.0:1111 이렇게 띄워야 외부 접속이 가능합니다(WSL 입장에서 윈도우는 외부입니다).
6.
윈도우 MySQL 클라이언트로 WSL MySQL 접속에 성공했습니다.
my.cnf에서bind-address를0.0.0.0으로 했습니다.root@'%'사용자를 만들었습니다.- 앞서 말한 포트포워드로
3306을 WSL로 보내니localhost로 접속됩니다.
7.
저는 서브라임 텍스트로 문서 작성을 하곤 합니다. 리눅스와 맥에서는 subl my-filename 형식의 명령으로 서브라임에서 문서를 열곤 했습니다.
WSL에서는 윈도우 프로그램인 서브라임 텍스트를 열어야 했습니다.
우선 sudo vi /usr/local/bin/subl 하고 아래 내용을 채웠습니다.
#!/bin/env bash
/mnt/c/Program\ Files/Sublime\ Text\ 3/subl.exe "$@"
그리고 chmod +x /usr/local/bin/subl 로 실행 권한을 줬습니다.
subl my-filename
어디서나 잘 됩니다 😀👏
8.
WSL이 윈도우에 매끄럽게 통합된 놈이긴 하지만 결국 같은 커널은 아니기 때문에 가상머신으로 돌아가고, 메모리를 엄청나게 먹는다는 것을 알게 됐습니다.
이미지는 16기가 램중 대략 8기가를 먹고 있는 장면입니다.
흠… 결국 리눅스는 리눅스에서 써야 제성능이 나오는군요.

9.
[2026년 현재 9번 방법은 추천하지 않습니다. 10번 방법으로 하세요. 9번은 기록으로 남겨만 둡니다.]
결국 IDE를 WSL GUI로 사용하게 됐습니다. WSL 스토리지를 네트워크 폴더로 접근하니 IDE가 자꾸 뻗습니다.
GUI에서 한영전환을 할 수 있도록 한글 입력기를 설치했습니다. 저는 fcitx를 설치했어요.
sudo apt install fcitx fcitx-hangul
echo 'export DISPLAY=:0.0' >> ~/.bashrc
sudo apt install fcitx-config-gtk
fcitx-configtool # Input Method 탭 > Add에서 Hangul 선택 후 추가
fcitx -r # 설정 적용을 위해 재시작
echo 'export GTK_IM_MODULE=fcitx' >> ~/.bashrc
echo 'export QT_IM_MODULE=fcitx' >> ~/.bashrc
echo 'export XMODIFIERS=@im
=fcitx' >> ~/.bashrc
10.
2026년 현재 IDE와 WSL의 통합은 좋은 편입니다.
VSCode를 사용한다면 MS가 만든 WSL 확장을 설치하면 됩니다.
PhpStorm이나 InteliiJ IDEA도 WSL 지원을 잘 합니다. Remote Development를 사용하지 마시고 그냥 일반 프로젝트 열듯이 Open해서 탐색기의 WSL에 있는 프로젝트 폴더를 선택해 주면 알아서 처리합니다.
11.
윈도우 프로그램으로 WSL2 안에 있는 파일에 접근해 작업하는 것은 느립니다. 얼마나 느린지는 몰랐는데요.
테스트해 보니 읽기는 5배, 다시 읽기(캐시 사용)는 10배 느리네요.
테스트 장비는 Ryzen3 4350G CPU, 16GB 램, 6Gbps SATA로 연결한 256GB SSD. 벤치마크 프로그램은 iozone.
12.
WSL2에서 localhost 웹 접속이 너무 느렸는데요. 연속으로 접속하면 빠르고 5초쯤 지나고 접속하면 접속에 4초나 걸리고(로컬인데!) 그랬습니다.
윈도우에서 WSL로 접속을 새로 할 때마다 시간이 걸리는 문제로 보였습니다.
그래서 Apache Keep-Alive 설정으로 해결했습니다.
13.
WSL의 스토리지가 계속 늘어나서 용량이 모자란 일이 있었습니다. 해결책을 정리했습니다.










댓글 남기기