본문 바로가기
General CS/Azure

[군대식 클라우드 코딩] 1. Azure에 원격으로 Ruby On Rails 넣어보기

by 리나그(ReenAG) 2022. 10. 29.
728x90
반응형

받아라 구데기 썸네일

다음 글

 

[군대식 클라우드 코딩] 2. Rails 7.0.4로 업그레이드 시도

이전 글 [군대식 클라우드 코딩] 1. Azure에 원격으로 Ruby On Rails 넣어보기 군대에 있으면 개인 PC는 개뿔 그냥 인터넷만 가능한 뚱딴지 같은 상황이 나온다. 여기서 코딩을 하기위해서는 클라우드

passingprogram.tistory.com

 

 군대에 있으면 개인 PC는 개뿔 그냥 인터넷만 가능한 뚱딴지 같은 상황이 나온다. 여기서 코딩을 하기위해서는 클라우드를 바라볼 수 밖에 없게 되어있는데, 오히려 이런 압박이 경험이 되는것 같아서 요즘은 나쁘지 않게 생각하고도 있다. 아마 나처럼 국가의 부름을 받아버린 군대의 컴공생들에게 그냥 적절한 튜토리얼이 되었으면 한다. 

 마이크로소프트사에서 인정하는 대학교 재학생이라면 Azure를 어느정도 무료로 지원해 주기 때문에, 한번 써보려고 한다. 다른 대안으로는 groomIDE도 좋고, AWS도 좋은 것 같긴 한데 일단 클라우드를 쓰는 느낌을 돈 안쓰고 받아보고 싶어서 이렇게 만들어 보려고 한다.

1. 일단 MS사에서 만든 RoR 샘플 앱을 포크해서 자신의 repo로 만든다.

Azure에서도 git 주소를 자체적으로 주는 것은 사실이지만, 내가 이용하고 있는 IDE인 replit에서 git url을 기반으로 세팅을 하는 방법을 도저히 알아낼 수가 없어서 이렇게 진행하기로 했다. 만약 PC가 있어서 local에서 진행할 수 있다면 이건 스킵하고 바로 아래의 참고사이트를 진행하면 될 것이다.

2. 주요 참고 사이트를 참고해서 튜토리얼을 진행한다.

당연히 여기에 나오는 git주소를 ms사꺼 말고 방금 본인이 포킹한 repo의 git주소를 쓰면 된다. 

https://learn.microsoft.com/en-us/azure/app-service/quickstart-ruby?tabs=cli 

 

Quickstart: Create a Ruby app - Azure App Service

Get started with Azure App Service by deploying your first Ruby app to a Linux container in App Service.

learn.microsoft.com

더도 덜도 말고 Azure에 구독권만 있어도 바로 따라할 수 있을 것이다. 아무것도 없는 상태에서 시작하면 약간 다른 점이 있는데 클라우드 셸을 킬때 스토리지를 만들라고 지적하는 부분이다. 그냥 만들기 버튼이 학생용 Azure 스타터에 있을 것이기 때문에 구독권을 바꿔주고 스토리지를 생성하면 된다.

 

앞으로는 Cloud Shell에서 master branch를 실제 앱으로 push하는 법인 이걸 잘 기억해두면 된다.

git pull origin master
git push azure main

3. .replit, replit.nix 세팅

제일 중요한 건 바로 앱을 테스트할 수 있게하는 환경과 런세팅이다. 이거 없어도 개발은 되지만 상당히 답답할 것이므로...

[.replit]

run = "bundle exec rails server --binding=0.0.0.0"
entrypoint = "app/controllers/application_controller.rb"

hidden = [".bundle"]

[packager]
language = "ruby"

[packager.features]
packageSearch = true
guessImports = true

[languages]

[languages.ruby]
pattern = "**/*.rb"

[languages.ruby.languageServer]
start = "solargraph stdio"

[gitHubImport]
requiredFiles = [".replit", "replit.nix", "README.md"]

[nix]
channel = "stable-22_05"

[replit.nix]

replit에서 기본적으로 넣어놓은 루비는 2.7.6이라 Azure와 맞지 않아 그냥 사용할 수는 없다. 자세한 내용은 이 포스트를 참고하면 된다.

{ pkgs }: 
let
  pkgs = import (builtins.fetchTarball {
    url = "https://github.com/NixOS/nixpkgs/archive/860b56be91fb874d48e23a950815969a7b832fbc.tar.gz";
  }) {};
in {
  deps = [
    pkgs.nodejs-16_x
    pkgs.sqlite
    pkgs.ruby
    pkgs.libffi
    pkgs.rubyPackages.ffi
    pkgs.rubyPackages.ffi-compiler
    pkgs.glibc
  ];
}

https://docs.replit.com/programming-ide/rails-on-replit

 

Running Rails on Replit | Replit Docs

Running a Ruby on Rails application on Replit is usually quite easy and this guide hopes to hold your hand through the process.

docs.replit.com

4. bundle install를 run을 해봐서 정상적으로 전부 진행되는지 확인하기.

bundle install #되는지 확인하고 안되면 아래 gem들 설치
bundle exec rails server --binding=0.0.0.0 #실제 서버실행 코드

나같은 경우 bundle install에서는 ffi설치가 되지 않았고, 서버 실행에서는 tzinfo-data가 설치되어 있지 않아서 막힌 적이 있다. ffi 설치의 경우에는 위의 replit.nix파일을 보면 pkgs.libffi라고 되어있는 부분이 있는데 그걸 반드시 포함해야한다. 그걸 넣으니까 정상적으로 설치가 진행이 되었다. 이후 tzinfo-datad의 경우에는 gemfile을 건드렸는데,

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', '~> 1.2022', '>= 1.2022.6'

마지막 줄을 이렇게 바꿔서 그냥 최신버전을 무조건 설치하게 만들어 놓았다.

 

https://learn.microsoft.com/ko-kr/azure/app-service/configure-language-ruby

 

Ruby 앱 구성 - Azure App Service

앱에 대해 미리 빌드된 Ruby 컨테이너를 구성하는 방법에 대해 알아봅니다. 이 문서에서는 가장 일반적인 구성 작업을 보여줍니다.

learn.microsoft.com

 

728x90
반응형