Рубрики
Uncategorized

Развернуть сайт ржавчины на Heroku

Короткое руководство по развертыванию веб -приложений Rust, в данном случае приложение Rocket Framework на Heroku. Tagged с Rust, WebDev, DevOps.

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»