惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
A
About on SuperTechFans
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 叶小钗
博客园 - 聂微东
博客园 - Franky
Apple Machine Learning Research
Apple Machine Learning Research
罗磊的独立博客
量子位
博客园 - 三生石上(FineUI控件)
Recent Announcements
Recent Announcements
The GitHub Blog
The GitHub Blog
B
Blog RSS Feed
T
The Blog of Author Tim Ferriss
GbyAI
GbyAI
云风的 BLOG
云风的 BLOG
Last Week in AI
Last Week in AI
宝玉的分享
宝玉的分享
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Stack Overflow Blog
Stack Overflow Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC

又耳笔记

用AI挣钱之AI建站:二维码生成器工具 用AI挣钱之AI建站:https://markdowntopdf.top Cloudflare Workers实战番外一:用Static Assets托管网站,告别传统方案 Cloudflare Workers实战(五):不止JavaScript,拥抱Python与Rust Cloudflare Workers实战(四):托管和分发静态文件 Cloudflare Workers实战(三):实现认证、重定向与缓存 Cloudflare Workers实战(二):动态修改后端响应 Cloudflare Workers实战(一):随心所欲操作客户端请求 Cloudflare workers不完全指南 使用n8n创作短篇小说 水果风波:信任的代价 用Python将PDF文件转换成图片 rust网络框架Pingora源码阅读3 rust网络框架Pingora源码阅读2 rust网络框架Pingora源码阅读1 Pingora快速入门教程1之总览 Rust模板引擎askama快速入门引擎 使用Loco快速搭建自己的后台系统 用Rust发一封图文并茂的邮件 Rust小项目: 写一个简单的恶意流量阻断器 Rust小项目: 写一个简单的网页爬虫 Rust命令行库Clap快速入门教程 Rust小项目:用Rust写一个端口扫描器 Rust真全栈开发快速入门 rust声明宏快速入门教程 Rust文本处理快速入门教程 RUST web框架axum快速入门教程6之测试 RUST web框架axum快速入门教程5之中间件 用Rust来做以太坊开发5之事件日志及签名 《英语语法分解大全》读后感
白嫖免费的Rust在线运行时shuttle
About 又耳宁 关于技术与股票的一些零碎想法 · 2023-12-24 · via 又耳笔记

一个总是在线的服务还是很有吸引力的, 通过shuttle可以托管自己的rust应用, 对于资源要求不多的应用或者仅仅简单的测试还是很有用的。

当前shuttle免费项目有以下限制:

具体是最新的官方说明为准, 参考页面:https://www.shuttle.rs/pricing

  • 最多三个项目
  • 足够多的CPU和内存(0.05 vCPU和0.2GB RAM)
  • 免费的共享数据库(1GB PostgreSQL)
  • 每天最多二十次部署, 最多20分钟的构建时间
  • 一天的日志记录
  • 1GB的出口带宽(所以某些需求就不太可能了)
  • 免费的1GB对象存储
  • 没有自定义域名(如果你有cloudflare账户, 可以通过worker映射自己的域名!)

还有一点值得注意的是, 应用应该不是一直在线的, 当长时间没有请求应该会将应用关闭, 当请求来了之后才会将应用拉起, 所以第一次请求的响应可能会相对于后面的响应时间比较长。

快速入门

首先需要一个shuttle账户, shuttle当前可以使用github账户登录,所以有一个github账户就能登录shuttle, 登录之后会有操作提示和API Key, 页面大致如下:

shuttle-preview

依次通过以下命令来安装shuttle命令行工具以及创建项目。

安装cargo-shuttle

cargo install cargo-shuttle

初始化一个项目

# 首先创建一个用于存放代码的目录并接入该目录
mkdir shuttle-demo  && cd shuttle-demo
# 开始初始化
cargo shuttle init

当初始化的时候会出现各种提示,比如输入项目名和API Key等, API Key需要去自己的shuttle账户页面获取, 其他选项根据自己的意愿选择和设置即可。

值得注意的是,免费的项目因为共用同一个二级域名, 比如youerprojectname.shuttleapp.rs, 所以必须保证自己的项目名唯一,如果别人占用了,那就需要改名了。

一个空格项目结构应该如下:

├── src
│   └── main.rs
├── Cargo.toml
├── index.html

编写代码

因为是一个快速入门的例子, 所以下面的代码很简单

use axum::{routing::get, Router};

async fn hello_world() -> &'static str {
    "this is project of youerning.top"
}

#[shuttle_runtime::main]
async fn main() -> shuttle_axum::ShuttleAxum {
    let router = Router::new().route("/", get(hello_world));

    Ok(router.into())
}

部署项目

当我们修改或者不修改自己的代码就可以开始部署项目了, 因为shuttle在初始化的时候也初始化了一个git仓库, 所以你首先需要提交代码。

# 添加当前目录的所有文件到git暂存区
git add .
# 提交代码
git commit -m "init"

# 部署项目到shuttle
cargo shuttle deploy

如果在本地可以成功执行cargo run或者cargo build命令, 那么在部署过程中出错一般是服务端的问题, 我们能做的只有等待一段时间再尝试部署…

本文部署的在线地址是https://youerning.shuttleapp.rs/, 有兴趣的可以访问试试。

自定义域名

虽然shuttle的免费计划不能自定义域名,但是我们可以通过其他的方式自定义域名,比如cloudflareworker, 具体的实现可以搜索cloudflare workers reverse proxy.

总结

虽然shuttle仅支持三个项目和有限的计算资源但是仅仅测试和试玩还是足够的, 如果真的需要需要足够的资源和在线访问,可能需要自己买云主机或者VPS了。

参考链接