Windows 환경에서 Rails 8 설치하기
최근에 Rails 8.0이 출시가 되었다는 소식을 전해듣고, 이참에 Ruby on Rails를 맛보기로 합니다. Java 공화국 대한민국에서는 사용자 기반이 넓은 편이 아니라고는 하지만, 최근의 개발환경 춘추전국시대 안에서 그냥 딱 한 놈만 패면 되는 Rail를 일단 맛보고 가야겠다는 생각을 가져보게 되었습니다.
아무튼 Ruby on Rails의 장점은 웹서비스 구축에 있어서는 뛰어난 생산성에 있다고 하니, 조금씩 공부해둬서 나쁠 것 없을 것 같습니다. 언젠가 은퇴를 하고 나면, 리액트고 나발이고 프론트엔드고 백엔드고 간에, 대형 프로젝트를 뛸 일도 없을테니 혼자서 생산성 있게 취미로라도 웹서비스 개발을 하려면 아무래도 Rails를 학습해두는 것이 좋겠다는 결론이었습니다.
그럼 어디 일단 설치해보면서 기록을 남겨두기로 합니다.
Ruby 설치하고 Rails 설치하기 - (Windows 환경)
0. Ruby는 프로그래밍 언어이고, Rails는 프레임워크 입니다. 파이썬 - 장고, Php - 라라벨, Java - Spring Boot 같은 관계입니다.
1. 윈도우 Powershell을 관리자 권한으로 실행
설치 과정에서 재부팅이 필요할 수 있다고는 하는데, 저는 재부팅 과정은 없었습니다.
2. Ubuntu 설치
아래 명령어를 입력하여 윈도우에 Ubuntu를 설치합니다. Ubuntu는 리눅스 배포판 중 하나입니다. Ruby on Rail는 Linux 환경에서 주로 사용됩니다.
윈도우나 리눅스나 둘 다 OS입니다. 현재 사용중인 윈도우 시스템에 리눅스를 설치하기 위해 WSL(Windows Subsystem for Linux)을 이용해서 설치를 하는 것입니다.
wsl --install --distribution Ubuntu-24.04
아래 이미지처럼 설치가 진행됩니다. 저는 우분투 24.04 버전으로 설치를 해보았습니다.
3. username 설정
윈도우에도 계정이 있듯이 리눅스에도 계정을 설정해줍니다.
4. password 설정
당연히 리눅스용 패스워드도 설정해줘야겠죠? 파워쉘 안에서 패스워드가 입력되는 것이 화면상에서는 보이지 않았습니다. ***표 형식으로도 보이지 않아서, 이게 제대로 입력이 되고 있나? 하는 생각이 다소 들었습니다.
5. 아래 명령어들을 실행해 줍니다.
sudo는 리눅스를 다루게 되면 수도 없이 만나게 되는 명령어.
Substitute User Do 또는 Superuser Do의 약자라고 하는데, 대략 최고 권한인 root 권한(슈퍼유저 권한)으로 명령어를 실행할 때 사용됩니다. 슈퍼유저의 권한으로 apt를 업데이트해라~ 뭐 이런 의미가 되는 것입니다.
# apt를 이용해 의존성 패키지를 설치
sudo apt update
sudo apt install build-essential rustc libssl-dev libyaml-dev zlib1g-dev libgmp-dev
# Mise 버전 관리자 설치
curl https://mise.run | sh
echo 'eval "$(~/.local/bin/mise activate bash)"' >> ~/.bashrc
source ~/.bashrc
# Mise로 Ruby를 전역으로 설치
mise use -g ruby@3
한편 Mise는 리눅스에서 다양한 개발도구(Node.js, Python, Ruby 등)의 버전 관리 및 환경설정을 도와주는 툴입니다. 마치 무엇의 약어 아닐까? 하는 생각이 들기도 하지만, 프랑스어에서 왔다고 합니다. mise en place. 제자리에 두다~ 뭐 그런 뜻이랍니다.
리눅스는 잘 사용하지 않아서 잘 모르니, 나중에 또 써먹으려면 메모를 해두는 수밖에요.
5-1. sudo apt update
apt는 아파트~ 아파트~는 아니고, Advanced Package Tool을 의미하는데, 리눅스에서 패키지 관리를 수행하는 녀석이라고 보면 됩니다. 음... npm 같은 역할을 하는 것이라 보면 되겠네요.
sudo apt update
위 구문을 실행하면, 패스워드를 물어옵니다. 슈퍼관리자 패스워드 입력하고 엔터 빡!
뭔가 쭈르륵 설치가 됩니다. 상당히 개발자스러운 화면.
5-2. sudo apt install build-essential rustc libssl-dev libyaml-dev zlib1g-dev libgmp-dev
뭔가 상당히 복잡한 명령인데, build-essential을 설치하는 명령어입니다. 빌드 이센셜은 단일 프로그램은 아니고, 단어 그대로 컴파일에 필요한 필수 기본 도구들의 묶음(패키지)라고 합니다.
sudo apt install build-essential rustc libssl-dev libyaml-dev zlib1g-dev
그리고 그 밖의 단어에는 아래와 같은 의미를 가지고 있습니다.
- rustc: Rust 프로그래밍 언어 컴파일러
- libssl-dev: 암호화 통신(SSL/TLS) 관련 개발 라이브러리
- libyaml-dev: YAML 데이터 형식 처리 관련 개발 라이브러리
- zlib1g-dev: 데이터 압축 관련 개발 라이브러리
- libgmp-dev: 고정밀도 산술 연산 관련 개발 라이브러리
뭐, 사실 Ruby On Rails를 공부하기 위한 목적이니, 일단 상세한 이해는 스킵해도 무방합니다.
계속 진행하겠냐는 물음에는 Y를 지그시 눌러주고,
이후 계속 설치가 진행됩니다.
5-3. curl https://mise.run | sh
crul은 c+url로 나눠 읽으면 편합니다. Client URL.
url(웹주소)을 통해서 서버와 통신하고 데이터를 주고 받게 해주는 명령어입니다.
대충 curl을 이용해서 mise.run에서 다운로드 받아서, sh 쉘명령어로 전달한다 정도 대충 봐두고 넘어갑니다.
curl https://mise.run | sh
5-4. echo 'eval "$(~/.local/bin/mise activate bash)"' >> ~/.bashrc
이것도 꽤나 복잡해 보이는데요, 이 명령어는 "현재 사용자의 홈 디렉터리(~)에 있는 .bashrc 파일의 맨 끝에
eval "$(~/.local/bin/mise activate bash)" 라는 한 줄을 추가하라"는 의미입니다. 윈도우로 치면 환경변수를 세팅하는 과정과 유사한 것 같습니다.
echo 'eval "$(~/.local/bin/mise activate bash)"' >> ~/.bashrc
5-5. source ~/.bashrc
이 명령어는 "~/.bashrc 파일에 있는 모든 명령어를 지금 당장 현재 터미널(셸)에서 다시 실행하라" 는 의미입니다. 이 명령어를 실행하지 않으면, 새로운 터미널을 열거나 셀을 재시작해야 변경사항이 저장됩니다.
source ~/.bashrc
5-6. mise use -g ruby@3
이 명령어는 "향후 별도로 버전을 지정하지 않는 한, 모든 프로젝트와 터미널 세션에서 Ruby 3의 최신 버전을 기본으로 사용하도록 mise에 설정하라"는 의미입니다. 마이스 사용해라 글로벌하게 루비 3.x 버전을..
mise use -g ruby@3
6. Ruby 설치 확인하기.
윈도우 시작메뉴에서 Ubuntu아이콘을 클릭하고 우분투를 실행했습니다. 윈도우 터미널 창과 비슷합니다. 리눅스 터미널 창이라고 이해해주면 되는 거죠 뭐. 아래 명령어로 Ruby 버전을 확인할 수 있습니다.
$ ruby --version
루비가 잘 설치되었습니다.
7. Rails 설치하기
Ruby에서 "gem"은 코드 조각이나 기능들을 담고 있는 작은 패키지입니다. 젬 패키지를 이용하면 Ruby 프로그래밍에 필요한 다양한 기능들을 손쉽게 추가할 수 있습니다. gem 명령어를 사용해서 RubyGems.org에서 최신 버전의 Rails와 필요한 파일들을 자동으로 다운로드하고 설치할 수 있습니다. 왠지 Node.js에서의 npm이 생각나는 순간입니다.
터미널에 아래 명령어를 입력합니다.
$ gem install rails
Rails가 올바르게 설치되었는지 확인을 해봅시다.
$ rails --version
Rails 8.0.2가 설치되었습니다.
이제 필요한 Ruby on Rails 개발환경 요소를 설치를 해두었으니, 다음에는 Ruby의 기초문법 학습 하고, Rails 프로젝트 생성한 후 Rails 구조와 동작방식 익혀나가는 방식으로 살펴보고 공부하면 되겠다 싶습니다. 파이팅!
마치며
루비에 대해서 아무것도 모르는 현재 시점에서 루비에 대해서 기대하는 바는, 웹서비스 기획, 디자인, 프론트, 백 개발에 대해서 혼자서 생산성 좋게(빠르게 개발!) 하면서 북치고 장구치는 그런 미래입니다. 아직은 많이 생소하지만 하다보면 뭐 그냥 재미있을 것 같습니다.
Ruby는 Python 기초를 공부할 때 비교 병행해서 살짝 살펴봤던 기억이 가물가물합니다. 언어에 대한 문법 기초는 대개들 일맥상통하는 부분이 있으니, 조만간 Ruby 기초문법을 살펴보도록 해야겠습니다.
오늘도 즐거운 코딩생활, 즐코딩
KINcoding.
댓글