Notice
Recent Posts
Recent Comments
NeuroWhAI의 잡블로그
[Rust] Rocket으로 웹 서버 만들어서 Heroku에 올리기 본문
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!를 확인하시면 됩니다!
끝!
'개발 및 공부 > 라이브러리&프레임워크' 카테고리의 다른 글
[Python] Keras로 DCGAN 구현하고 MNIST 이미지 생성하기 (0) | 2018.10.30 |
---|---|
[Rust] Rocket 사용해서 20줄로 정적 파일 서버 만들기 (0) | 2018.10.04 |
[Python] Keras로 MNIST 학습하고 직접 그린 이미지 추측시켜보기 (0) | 2018.07.30 |
VRChat API를 사용해봤습니다. (0) | 2018.06.27 |
[C#] Selenium을 이용해 YouTube 추천 동영상 파싱하기 (0) | 2018.05.07 |
Comments