Heroku에 Rust 웹 사이트 배포
오늘 우리는 녹슨 그물에 중점을 두기 때문에 로켓이라고 불린다.
공식 사이트 rocket.rs에 따르면 "로켓은 Rust의 웹 프레임워크로 유연성, 가용성 또는 유형의 안전성을 희생하지 않고 신속하고 안전한 웹 응용 프로그램을 쉽게 작성할 수 있다."이것은 내가 보충할 수 있는 더 많은 것이 없는 자명한 소개이다.
수속을 마친 후에 우리는 로켓을 좀 발사할 것이다.
로켓을 장착하다
로케트를 현지에서 운행하기 위해서 우리는 호환 버전의 Rust(install Rust)를 설치해야 한다. 로케트는 Rust의 고급스럽고 불안정한 기능을 사용하기 때문에 우리는
nightly
버전의 Rust를 사용해야 한다.Rust의 야간 버전을 기본 도구 체인으로 구성하려면 터미널에서 다음 명령을 실행합니다.
rustup default nightly
또는 로켓 프로젝트를 창설한 후 로켓 프로젝트의 목록에서 다음 명령을 운행해야만 로켓 프로젝트의 기본 도구체인으로 설정할 수 있다.rustup override set nightly
이제 새로운 화물 운송 프로젝트를 계속 창설합니다Cargo new rocket-demo-app --bin
# switch into the project's directory
cd rocket-demo-app
프로젝트 루트 디렉토리의 Cargo.toml
파일에 로켓을 추가합니다....
[dependencies]
rocket = "0.4.7"
로켓 코드를 추가하여 src/main.rs
파일을 업데이트합니다#![feature(proc_macro_hygiene, decl_macro)]
#[macro_use] extern crate rocket;
#[get("/")]
fn index() -> &'static str {
"This is my Rocket Demo app"
}
fn main() {
rocket::ignite().mount("/", routes![index]).launch();
}
다음 명령을 실행합니다.Cargo run
Rust는 로켓에서 사용하는 모든 의존 항목을 가져와 프로젝트를 개발하고 구축하며 바이너리 코드를 실행하여 프로젝트를 시작합니다.Finished dev [unoptimized + debuginfo] target(s) in 3m 00s
Running `target\debug\rocket-demo-app.exe`
🔧 Configured for development.
=> address: localhost
=> port: 8000
=> log: normal
=> workers: 8
=> secret key: generated
=> limits: forms = 32KiB
=> keep-alive: 5s
=> read timeout: 5s
=> write timeout: 5s
=> tls: disabled
🛰 Mounting /:
=> GET / (index)
🚀 Rocket has launched from http://localhost:8000
위 출력에서 Rocket은 8000
포트에서 프로젝트를 시작했으니 http://localhost:8000
으로 이동하십시오.우리는
main/src.rs
파일에 대해 색인 경로를 설명하고 '/' 경로에 마운트한 다음 로켓 프로그램을 시작합니다.로켓 노선
로켓 응용 프로그램은 루트와 처리 프로그램을 중심으로 하는데 그 중에서
Rocket route
은 전송 요청의 매개 변수와 처리 요청을 일치시키고 응답하는 처리 프로그램의 조합일 뿐이다.색인 라우팅은 이전 예와 같이 주석 함수를 통해 선언됩니다.
#[get("/")]
fn index() -> &'static str {
"This is my Rocket Demo app"
}
그 중에서 맨 위의 주석-#[get("/")]
은 루트의 속성이고 아래의 함수 fn index()
은 루트의 처리 프로그램이다.회선 설치
로켓 프로젝트에 새로운 노선을 추가합시다.
색인 루트 다음에 다음 코드를 추가합니다.
#[get("/about")]
fn about() -> &'static str {
"This is the about page of my Rocket Demo app"
}
화물 운송 프로젝트를 다시 운행하다./about
페이지로 이동하려고 하면 404: Not Found
오류가 표시됩니다.어떻게 된 거야?
응, 로켓은 그들에게 요청을 보내기 전에 루트를 적재해야 해. 이것이 바로 우리가 첫 번째 루트의
rocket::ignite().mount("/", routes![index]).launch();
함수에 main()
이 있는 이유야.우리도 우리의 페이지 노선을 시작합시다.다음 코드를 사용하여
main()
함수를 업데이트합니다.fn main(){
rocket::ignite().mount("/", routes![index, about]).launch();
}
카고를 다시 실행하고 "/about"노선에 접근해 보십시오.루트를 설명하고 설치한 후에, 우리는
lauch()
방법을 호출했다. 이 방법은 서버를 시작하여, 우리의 로켓 프로그램을 시작하고 실행하며, 전송된 요청이 그에 상응하여 발송되기를 기다린다.로켓에 대한 더 많은 요청은 official documentation을 방문하세요
다음 단계를 계속하기 전에git를 사용하여 모든 변경 사항을 프로그램에 제출합니다.
git add . && git commit -m "initialize Rocket project"
Heroku 설정
없으면 creating an account on Heroku부터 시작하고 계속하십시오.
Heroku 대시보드에 새 응용 프로그램을 추가하고 세부 정보를 입력합니다.
다음은 Heroku CLI을 다운로드하고 설치한 다음 프로젝트 디렉터리에서 다음 명령을 계속 실행합니다.
heroku login
브라우저로 리디렉션하고 Heroku 계정에 로그인할 수 있도록 하는 지침을 따릅니다.프로젝트로 돌아가서 다음 명령을 사용하여 원격 Heroku 프로그램을 로켓 프로젝트에 연결합니다.
heroku git:remote -a rocket-demo-app
프로젝트의 루트 디렉터리에 새 파일을 만들고 Procfile
으로 명명합니다. 확장자 없이 다음 코드를 추가합니다.web: ROCKET_PORT=$PORT ROCKET_KEEP_ALIVE=0 ./target/release/rocket-demo-app
프로젝트의 루트 디렉토리에 다른 파일을 생성하여 파일 확장자 없이 rust-toolchain
이라는 이름을 지정하여 Rust의 야간 버전을 지정합니다.다음 야간 버전은 좋은 시작이다.
nightly-2020-10-24
새 변경 사항을 커밋합니다.Heroku's Rust buildpack을 사용합니다.
heroku buildpacks:set emk/rust
그리고 변경 사항을 Heroku에게 미룹니다.git push heroku master
실행해야 할 모든 작업을 완료하면 명령행 도구는 응용 프로그램이 배치된 링크를 제공합니다. 이 링크를 열고 배치된 응용 프로그램을 볼 수 있습니다.remote: -----> Building application using Cargo
remote: Compiling rocket-demo v0.1.0 (/tmp/build_898d5ac6)
remote: Finished release [optimized] target(s) in 3.39s
remote: -----> Discovering process types
remote: Procfile declares types -> web
remote:
remote: -----> Compressing...
remote: Done: 1.5M
remote: -----> Launching...
remote: Released v6
remote: https://rocket-demo-app.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/rocket-demo-app.git
13450ef..0febf7c main -> main
이상은heroku cli 도구의 출력 예시입니다.이것은 아주 좋은 시작이다. 우리가 Rust 응용 프로그램의 배치를 깊이 연구할 때, 우리는 Heroku에 로켓 프레임워크 응용 프로그램을 배치했다.
이'빠르고 간단하며 유연한'구조에서 아직도 많은 것을 배우고 실험해야 한다. 이것은 단지 그것을 배치하는 간단한 소개일 뿐이고 더 많은 내용은 here을 배울 수 있다.
나가서 Rockets 발사해.
Reference
이 문제에 관하여(Heroku에 Rust 웹 사이트 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/xinnks/deploy-a-rust-website-on-heroku-1l45텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)