Rust — это пылающий быстрый язык, а язык программирования с памятью, который используется такими технологическими компаниями, как Firefox, Dropbox и Cloudflare, чтобы назвать несколько.
Сегодня мы собираемся сосредоточиться на веб -стороне ржавчины, отсюда и название «Ракета».
Ну, согласно официальному веб -сайту Rocket.rs — «Ракета — это веб -структура для ржавчины, которая позволяет проще писать быстрое, безопасные веб -приложения, не жертвуя гибкостью, удобством использования или безопасности типа» Анкет Это самоуверенное введение, я больше ничего не могу добавить.
Заполнив формальности, давайте запустим несколько ракет.
Настройка ракета
Чтобы запустить ракету локально, нам нужно установить совместимую версию Rust ( Установите Rust ), и, поскольку Rocket использует расширенные и нестабильные функции ржавчины, нам нужно использовать Ночной
Версия ржавчины. Чтобы настроить ночную версию 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 получит все зависимости, используемые Rocket, создать разработку нашего проекта и запустить двоичный код, запустив наш проект.
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.
Ракетные маршруты
Ракетные приложения центра вокруг маршрутов и обработчиков, где Ракетный маршрут
это просто комбинация параметры Сопоставление входящего запроса и обработчик Это обрабатывает запрос и возвращает ответ.
Маршрут объявляется, аннотируя функцию, как в примере выше, маршрут индекса:
#[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" }
И повторно запустить проект груза.
Когда вы пытаетесь перейти к /о
Страница, вы увидите 404: не найдено
ошибка.
Что случилось?
Что ж, ракета должна установить маршруты, прежде чем отправлять им запросы, это причина, по которой мы имеем Rocket:: Ignite (). Mount ("/", маршруты!
Внутри main ()
функция для первого маршрута. Давайте установим наше __about Page _ маршрут тоже. Обновите main ()
Функция со следующим кодом.
fn main(){ rocket::ignite().mount("/", routes![index, about]).launch(); }
Повторно запустить груз и попробуйте снова посетить маршрут «/о».
После объявления и установки наших маршрутов, мы называем lauch ()
Метод, который запускает сервер и имеет наше приложение Rocket и работает в ожидании входящих запросов, чтобы посвятить их соответствующим образом.
Для получения дополнительной информации о ракетных запросах направляется к официальная документация
Прежде чем приступить к следующему шагу, используйте GIT для стадии и совершите все изменения, сделанные в приложении.
git add . && git commit -m "initialize Rocket project"
Настройка Heroku
Начните с Создание учетной записи на Heroku Если у вас нет ни одного, прежде чем продолжить.
Внутри приборной панели Heroku добавьте новое приложение и заполните его детали
Далее скачать и установить Heroku Cli , затем приступите к выполнению следующей команды в каталоге проекта.
heroku login
Следуйте инструкциям, которые перенаправят вас в ваш браузер и позволите войти в свою учетную запись Heroku.
Вернувшись в проект, свяжите приложение удаленного Heroku с вашим Rocket Project со следующей командой.
heroku git:remote -a rocket-demo-app
Создайте новый файл в корне проекта и назвала его Procfile
Без каких -либо расширений добавьте в него следующий код.
web: ROCKET_PORT=$PORT ROCKET_KEEP_ALIVE=0 ./target/release/rocket-demo-app
Укажите ночную версию Rust, чтобы работать, создав еще один файл в корне проекта, назвав его Rust-ToolChain
(без расширения файла). Следующая ночная версия — хорошее начало:
nightly-2020-10-24
Совершить новые изменения.
Используйте Хероку из ржавчина Анкет
heroku buildpacks:set emk/rust
Затем протолкните изменения в Героку.
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.
Это приятное начало при углублении приложений в развертывании ржавчины, и в данном конкретном случае мы развертывали приложение ракетного фреймворка на Heroku.
В этой «быстрой, легкой и гибкой» структуре есть гораздо больше, чтобы узнать и экспериментировать, это было просто короткое вступление в ее развертывание, можно узнать больше Здесь Анкет
Выйдите туда и запустите немного Ракеты Анкет
Оригинал: «https://dev.to/xinnks/deploy-a-rust-website-on-heroku-1l45»