NeuroWhAI의 잡블로그

[Rust] Rocket으로 웹 서버 만들어서 Heroku에 올리기 본문

개발 및 공부/라이브러리&프레임워크

[Rust] Rocket으로 웹 서버 만들어서 Heroku에 올리기

NeuroWhAI 2018. 10. 3. 20:32


Rocket은 Rust의 웹 프레임워크입니다.
이 글에서는 Rocket을 이용해 접속시 Hello, world!를 응답하는 웹 서버를 만들고
Heroku에 올려 모든 사람이 볼 수 있도록 해보겠습니다.

(설명은 소스코드 링크에도 있으니 참고 바랍니다)


먼저 아래 명령어로 새로운 Rust 프로젝트를 만들겠습니다.
cargo new hello-rocket --bin
앞으로의 모든 작업은 hello-rocket 폴더에서 이뤄집니다.
만약 프로젝트 이름을 바꾸셨다면 주의해서 명령어를 입력해주세요.

Cargo.toml 파일을 열어 Rocket을 종속성에 추가합니다.
[dependencies]
rocket = "0.3.17"
rocket_codegen = "0.3.17"
src/main.rs 파일을 열어 소스코드를 입력합니다.
#![feature(plugin)]
#![plugin(rocket_codegen)]

extern crate rocket;

#[get("/")]
fn index() -> &'static str {
    "Hello, world!"
}

fn main() {
    rocket::ignite()
        .mount("/", routes![index])
        .launch();
}
hello-rocket 아래에 Rocket.toml이라는 파일을 하나 만들고 아래 내용으로 저장합니다.
[development]
address = "0.0.0.0"
port = 8000
log = "normal"

[staging]
address = "0.0.0.0"
log = "normal"

[production]
address = "0.0.0.0"
log = "critical"
Rocket은 nightly 버전의 컴파일러에서만 컴파일이 되므로 아래 명령어로 우리 프로젝트에 nightly 버전이 쓰이도록 해줍니다.
rustup override set nightly
만약 nightly가 설치되지 않았다면 먼저 설치하신 후 진행해주세요.
(설치 방법은 구글링하시면 바로 나옵니다)

이러고 터미널을 열어 cargo run으로 빌드와 실행을 해주면 localhost의 8000포트로 서버가 열릴겁니다.
http://localhost:8000 주소를 웹 브라우저에서 열어서 Hello, world!가 보이면 성공!


이제 모두가 볼 수 있도록 Heroku에 올릴 차례입니다.
일단 Heroku에서 새로운 app을 만드시고 이름을 기억해두세요.

다시 터미널로 돌아와서 heroku login 명령어로 로그인 하신 뒤
heroku git:remote -a 이름
명령어로 app과 git을 연결해줍니다.

그리고 아래 명령어로 빌드팩을 지정해줘야 합니다.
heroku buildpacks:set https://github.com/emk/heroku-buildpack-rust.git
이러고 파일을 두개 더 만들어야 합니다.
Procfile이란 이름으로 파일을 하나 만드시고 아래 내용으로 저장해주세요.
web: ROCKET_PORT=$PORT ROCKET_ENV=production ./target/release/hello-rocket
앱을 실행하는 명령어인데 포트를 Heroku에서 제공하는 포트로 하고 실행 환경을 production으로 설정하는 작업이 포함되어 있습니다.

다음으로 rust-toolchain이라는 파일을 만드시고 nightly라고 쓰신 뒤 저장해주세요.
Heroku에서 빌드시 nightly 컴파일러를 사용하도록 해줍니다.

준비는 끝났습니다.
git add .
git commit -m "First"
명령어로 작업 내용을 커밋하시고
git push heroku master
명령어로 푸시하시면 알아서 빌드 후 배포가 진행됩니다.

만약 원격 빌드가 실패했다면 heroku logs 명령어로 어떤 문제가 있었는지 대충 알 수 있습니다.

배포가 완료되면 https://이름.herokuapp.com 링크를 열어 Hello, world!를 확인하시면 됩니다!


끝!




Comments