윈도우 리눅스 서버 - windou linugseu seobeo

들어가며

첫 블로그 포스팅. 기왕 처음 쓸 거 완전 초기단계의 개발부터 적어보자 싶어, 윈도우(Window) WSL2를 통한 CentOS7 설치 및 CentOS7 Nginx 설치에 대해 적어보려 했다. 그러던 중 문득 웹서버를 굳이 리눅스에 설치하는 이유가 뭘까? 라는 생각이 들었다. 그래서 찾아봤는데, 유닉스(Unix)니 미닉스(Minix)니 커널(Kernel)이니 어려운 단어 투성이라서,  나와 같은 초보 개발자들이 최대한 이해하기 쉽도록, 정리한 내용을 블로그 첫 포스팅 대상으로 결정했다.


리눅스(Linux)를 사용하는 이유

리눅스를 사용하는 이유는 다음과 같이 크게 3가지로 정리된다.

  • 무료 오픈소스
  • 우수한 보안성
  • 구조 안정성

1. 무료 오픈소스

윈도우 리눅스 서버 - windou linugseu seobeo

리눅스(Linux)는 무료 오픈소스 운영체제로, 완전 무료 정책이기 때문에 그 어떠한 금액도 필요로 하지 않는다. 웹서버로 리눅스를 사용하는 가장 큰 이유가 아닐까 싶다. MS Office를 사용하려고 해도 라이센스 결제가 필요하고, Oracle을 사용하려고 해도 당연히 사용자 결제가 필요한데, 하물며 하루 24시간 365일 내내 쉬지않고 돌아가는 웹서버에 요금 결제가 필요하다면 정말 무지막지한 액수가 나올게 뻔하다. 

그런데 그 모든 비용 계산 없이 완전 무료 정책이라니 전 세계에서 너도 나도 할 것 없이 사용할 만 하다. 특히 기업의 입장에선 더할 나위 없이 반기지 않을까? 그러다보니 많은 개발자들이 기업을 위해(또는 취업을 위해) 웹서버로 리눅스를 사용하는 방식을 채택하게 되었고, 지금이 되어선 그게 너무나도 당연한 진리가 된 것 같다.

2. 우수한 보안성

PC에 가장 위협적인 건 바이러스 또는 맬웨어(Malware) 등의 존재들이다. 시간이 지날수록 기술이 발달하고 문명이 고도화되며 PC의 이용이 대중적이게 됐는데, 동시에 이 기술과 문명을 공격하는 방식 또한 집약적으로 발달하고 다양화 되었다. 즉 수많은 공격에 노출되어 있다고 해도 과언이 아니다.

그런데 하루 24시간 365일 내내 쉬지않고 돌아가는 웹서버의 기반이 무료 오픈소스 운영체제라니. 악질적인 해커들이 이를 이용해서 서버에 공격을 가할수도 있는데 너무 위험한거 아닌가? 라는 생각이 들 수 있다. 결론부터 말하면 오히려 더 안전하다.

윈도우 리눅스 서버 - windou linugseu seobeo

그 이유는 리눅스(Linux)가 오픈소스 라는 점에 있다. 오픈소스이기 때문에 더 많은 해커들이 더욱 다양하고 악질적인 공격을 하는 것 아닌가? 그래서 더 위험하지 않나? 라고 생각한다면 그게 맞다. 다만 전 세계 수많은 사람들이 리눅스 운영체제를 사용하는 만큼, 회사와 자산과 개인정보를 지키기 위해, 리눅스는 그 수많은 공격을 방어하며 보안성을 키워왔다. 태풍이 나그네의 옷을 벗기기 위해 더 많은 바람을 불어 일으킬수록 나그네는 옷을 더더욱 단단히 동여매었다는 동화의 내용과 같은 이치다.

다른 유료 운영체제를 사용해서 웹서버를 운영한다고 해도 결국 보안 문제는 존재한다. 결과적으로 해킹 공격은 꾸준히 존재할 것이고, 우리는 꾸준히 그 공격을 방어해내야만 한다. 그래야만 한다면 기왕 쓸거 무료 오픈소스 운영체제 쓰는게 좋지 않을까? 아마도 전 세계 사람들이 이런 생각으로 리눅스를 고집했을 수도 있을 것만 같다는 생각이 든다.

3. 구조 안정성

윈도우 리눅스 서버 - windou linugseu seobeo

리눅스(Linux)는 매우 안정적으로 충돌이 잘 발생하지 않는다고 한다. 그 이유 또한 위에서 언급한 내용과 일치하는데, 전 세계 수많은 기업 및 개발자들이 사용하는 무료 오픈소스 운영체제인 만큼, 굉장히 많은 위협사례와 버그(Bug)가 발생했을 것이고, 그러한 위협과 버그 또한 전부 사용자들에 의해 수정되고 픽스(Fix) 되었기 때문이다. 아마 지금 이 순간에도 버그는 발생하고 있을 것이고, 한 편으로 해당 버그가 수정되고 있을지도 모른다.

반대로 윈도우(Window) 및 기타 유료 운영체제들은 오픈소스가 아니기 때문에 OS 소스를 직접 마주할 인원이 한정적이고, 설령 버그나 위협이 발견된다 하더라도 이를 수정하고 픽스할 인원 또한 한정적이기 때문에 업데이트가 느리다는 단점이 있다. 업데이트가 느릴수록 해당 위협에 노출되는 시간이 길어진다는 의미다.

또한 리눅스(Linux)는 윈도우(Window)와 달리 업데이트 또는 패치 이후에 OS를 재부팅 할 필요가 없다고 한다. 기업에서 사용하는 웹서버는 주로 하루 24시간 365일 내내 가용중이어야 하는 경우가 많은데, OS가 재부팅된다면 웹서버를 다시 가동하고 서버 안정화를 시키는데 꽤 많은 시간을 들여야만 한다. 많이 겪어봤겠지만 윈도우(Window)는 지 멋대로 업데이트를 진행하고 멋대로 OS를 재부팅하는 경우가 다반사이기 때문에 웹서버에 딱히 적합하지 않다(물론 설정을 통해 막을 수 있다).

그 외

윈도우 리눅스 서버 - windou linugseu seobeo

이러한 이유로 리눅스(Linux)는 서버에 적합한 OS로 발전을 거듭해왔고, 그러다보니 서버 위에 그려지는 프로그램 또는 플랫폼 등을 이용하는 사용자에게는 보여지지 않는 부분이 되면서, 개발자 사용자 모두에게 친숙한 GUI(Grapical User Interface)가 아닌 CLI(Command-Line Interface) 방식으로 정착하게 되었다. 아무래도 서버에게 중요한 건 속도이다보니, GUI를 써봤자 무겁고 속도저하를 일으킬 요인일 뿐이라는 것이다.

따라서 개발자들이 리눅스를 사용하기 위해선 터미널 설치가 필수적이고, 별도의 명령어에 대한 이해와 학습이 필요하다. 특히 명령어가 굉장히 많고 다양하기 때문에 학습에 긴 시간이 소요되고, 이 때문에 별도의 자격증 또한 마련되어 있다(무려 공인민간자격증이다).


마치며

사실 나도 아직 1년차 초보 개발자라서 리눅스를 직접 사용해본 경험이 많진 않다. 기껏해야 ls · cd · vi 등의 명령어를 통해 파일을 확인하거나, 필요한 라이브러리를 yum으로 다운받기 또는 rpm파일을 직접 업로드해서 설치하는 등의 간단한 작업만 해봤을 뿐이다. 다만 그 과정을 통해 리눅스 시스템이 개발자에게 있어 필수적이라는 것을 깨달았고, 이제부터라도 공부하려는 것이다(실제로 22년 1회 리눅스마스터 1급을 준비하고 있다). 그 어려운 시작을 다음 포스팅인 Window WSL2 설치를 통한 Linux 배포판 및 CentOS7 설치 로 첫 발을 떼어보려고 한다.

Windows가 아닌 Linux에서 개발해야 하는 상황이 많은 개발자들에게 Linux 환경은 필수입니다.

특히나 서버에 접속에서 서버의 GPU를 사용한다거나, 작업을 해야하는 경우에는 더욱이 Linux를 사용할 수 있어야 합니다.

하지만 저같이 Window를 사용하는 분들은 Linux를 바로 사용할 수 없고 추가적인 과정이 필요합니다ㅠㅠ

이번 글에서는 그러한 분들을 위해 Windows에서 Linux 환경을 구축하는 방법을 알려드리려고 합니다.

먼저 Windows에서 Linux 환경을 만들 수 있는 방법으로는 크게 두 가지가 있습니다.

1. VirtualBox, VMware

컴퓨터 가상화 프로그램으로, 비어있는 가상 머신 SW(Box) 안에 원하는 OS를 설치하여 그 환경으로 접속하여 사용할 수 있습니다.

그 말인즉슨, Windows 사용자도 가상 머신을 설치한다면 MacOS, Linux, centOS와 같은 다양한 OS를 사용할 수 있다는 것입니다.

저도 제일 먼저 VirtulBox를 사용하여 가상 환경에서 Linux를 사용하였는데, 편한 사용을 위해 가상 머신을 도와주는 프로그램을 설치하여 사용하는 것이 좋습니다.

많이 사용하는 프로그램이 Vagrant이고 이는 밑의 링크에 접속해서 원하시는 OS에 맞는 VirtualMachine을 다운 받으시면 됩니다.

www.vagrantup.com/downloads

Downloads | Vagrant by HashiCorp

Vagrant enables users to create and configure lightweight, reproducible, and portable development environments.

www.vagrantup.com

윈도우 리눅스 서버 - windou linugseu seobeo

하지만 이 작업은 다운 받는 시간도 오래 걸릴 뿐더러 저장 공간 또한 충분해야 합니다 :(

그리고 그것보다도 제가 vagrant를 사용하면서 가장 불편했던 점은 매번 PC를 켜고 접속할 때마다 Windows cmd 창에서 vagrant up 으로 가상머신 인스턴스를 만들고, vagrant ssh 로 만들어진 VM에 접속하는 시간이 필요합니다.

이 과정에 생각보다 많이 귀찮고 자주 사용해야 하는 경우에는 매우 불편합니다...ㅠㅠ

그래서 이런 단점을 없애 우리의 막힌 스트레스를 한 번에 풀어줄 것이 'WSL' 입니다 :)

2. WSL : Windows Subsystem for Linux

최근에 WSL 2가 새롭게 나오게 되면서 실제 Linux kernel을 사용하여 마치 Linux OS를 사용하는 것처럼 편하고 빠르게 사용할 수 있게 되었습니다.

그럼 이제부터 우리의 Windows에 Linux를 설치해보겠습니다. (실제는 가상머신이지만..)

들어가기에 앞서 OS는 Windows 10이여야 하며, Windows 업데이트가 최신 상태인지 먼저 확인해주시고 최신이 아니라면 업데이트를 꼭 하고 시작해주시기 바랍니다!

1) Windows PowerShell을 관리자 권한으로 실행

2) 다음 코드를 복사하여 붙여 넣습니다

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

Ctrl+v도 붙여넣기가 되겠지만 Linux 환경에서는 문제가 될 일이 있습니다.

그렇기 때문에 마우스 우클릭도 붙여넣기가 된다는 것을 기억해두면 좋습니다.

만약 여기에서 다운로드가 실패했다거나 에러 코드가 떴다면 일반적으로 Windows가 최신 버전으로 업데이트가 안되어 있을 가능성이 높으므로 꼭!! Windows 업데이트를 해주시기 바랍니다.

(Ctrl+c도 Linux에서는 interupt command이기 때문에 익숙해지셔야 합니다ㅠㅠ)

3) 다음에는 Virtual Machine 기능을 사용하기 위해 다음 코드를 입력합니다

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

4) 이제 반 정도 왔고 Linux kernel update package를 다운로드 합니다

다음 링크를 누르면 자동으로 다운로드가 되고 실행하여 '예'를 눌러 주시면 됩니다

wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

5) WSL 2를 기본 버전으로 세팅하고 Linux 설치

wsl --set-default-version 2

윈도우 리눅스 서버 - windou linugseu seobeo
Windows PowerShell - 마지막 WSL 2 설정 부분에서 나오는 메세지는 다를 수 있습니다

기본 세팅을 하고 난 다음에는 Microsoft Store에서 Ubuntu를 설치해야 합니다.

이제 Ubuntu만 설치하면 정말 Linux를 사용할 수 있게 됩니다

Ubuntu를 검색하면 여러가지가 나오는데 Ubuntu 18.04 LTS를 설치해주시면 됩니다. 저는 20.04 LTS를 설치해봤었는데 Ubuntu 실행이 안되더라구요ㅠㅠ 왜 그런지는 저도 잘 모르겠습니다.. (아시면 댓글로 남겨주세요)

이에 더해서 더 빠르게 작업하고, 편하게 커스터마이징하기 위해서 Windows Terminal도 같이 설치해주시면 좋습니다 :)

6) Ubuntu 설치 이후, 실행하면 콘솔 창이 열리면서 install을 자동으로 하고 성공적으로 마무리 되면,

Installation successful!

이라는 문구가 나오면서 UNIX username을 입력하라고 나오는데 원하는 이름으로 설정해주시면 됩니다.

윈도우 리눅스 서버 - windou linugseu seobeo
Linux 설치 성공!

Windows Terminal을 설치하셨다면 터미널에서 자유롭게 선택하여 Ubuntu로 들어갈 수 있습니다.

다음에는 개발 할 맛 나게 하는 예쁜 Terminal을 꾸미는 customizing을 해보도록 하겠습니다 :)

(shell도 이야기 할 수 있으면 해볼게요)

- Reference 
Windows 10에 Linux용 Windows 하위 시스템 설치 가이드 : 
https://docs.microsoft.com/ko-kr/windows/wsl/install-win10