Windows 에서 Ubuntu on WSL2 개발 환경 세팅(InteliJ 설치)

Windows 상에서 현존하는 서비스 개발하기에는 약간 힘든 환경적 제약이 존재한다. 대부분 개발 회사들에서는 MAC를 기본으로 개발 환경을 셋팅 한다. 필자의 경우도 MAC를 1년 넘게 사용해 보았지만 Windows의 장점을 버리지 못하고 Windows에서 개발 환경 셋팅에 대해 삽질하고 그것을 정리하려고 한다.

WSL 2

이전 버전에서 2버전으로 오면서 커널 자체의 기능상의 경량화와 호환성 면에서 대대적으로 향상되었다. 공식문서
WSL의 자세한 내용은 지단로보트님의 블로그의 글을 참고하시면 될것 같다.

개발환경 구성

InteliJ을 WSL에 설치하고 Host(Windows)에서 구동 할 수 있게 설정.
WSL GUI를 Windows에서 구동 할 수 있는 방법은 x11 포워딩 소프트웨어를 사용하여 실현 하는 것이다. 이것을 구현할 수 있는 앱들은 VcXsrv, X410, xrdp, Xpra, X2Go 등이 있는데 자료조사를 통해 각 프로그램에 관한 문제점들을 알 수 있었다.

X2Go

위의 방법들 중 설치가 간편하고 무료로 사용가능하기 때문에 X2Go 기반으로 설명 드릴 예정이다.

설치

아래 명령어를 이용하여 설치한다.(apt-get update& apt-get upgrade를 이용해 최신 상태로 유지)

sudo apt install x2goserver

링크를 통해 Host(Windows)에 X2Go Client 설치

  • 기본적으로 ssh가 설치되여 있고 서비스가 되여 있다고 가정

WLS 접근

설치된 X2Go client에서 New session를 만든 후 접속정보 입력

host : 172.19.111.1(WSL의 ifconfig를 통해 알 수 있음)
Login: techfox
SSH port: 22

설정 창에서 하단의 Session Type에서 Published applications을 선택

InteliJ 설치

아래 명령어를 이용하여 설치(WSL consol 이용)

//다운로드
wget https://download.jetbrains.com/idea/ideaIU-2021.3.tar.gz
//압축 풀기
sudo tar -xzvf ideaIU-2021.3.tar.gz -C /opt/inteli/
//심볼 링크 만듬, 하지 않아도 상관 없음
sudo ln -s /opt/inteli/idea-IU-213.5744.223/ /opt/idea

X2Go에서 구동 바로가기 만들기

아래 path에 Intellij을 구동할 수 있는 script를 만든다.
/usr/share/applications/intellij-ideal.desktop

[Desktop Entry]
Name=Intellij IDEA
Comment=JetBrains Intellij IDEA Java IDE
Categories=Development
Keywords=java;ide
Exec=/opt/idea/bin/idea.sh
Type=Application
Icon=/opt/idea/bin/idea.png

IntelliJ 구동

위에서 Session에 대한 설정이 끝났으면 Connect를 한다. 상태가 running으로 바뀌면 밑의 application 아이콘을 통해 Intellij을 구동한다.

이슈 해결

  • Clipboard 공유 문제 (stackoverflow)
  • X2Go client에서 옵션→ Setting→X. Org Server Settings → do not use primary clipboard 체크
  • Client 재부팅
  • WLS 고정 아이피 문제 (github 연결)
  • 여러개의 솔루션 존재, 현재 최적의 방법에 대한 시도는 계속 진행 중
  • https://github.com/ocroz/wsl2-boot

https://dev.to/derkoe/development-environment-in-wsl2-137l
https://blog.naver.com/sunchan683/221463558428
https://jsonobject.tistory.com/9
https://jennana.tistory.com/124
https://github.com/MicrosoftDocs/WSL/issues/418