这个周末不算忙,总算可以把一直没有上线的 Rust Axum 写的在线小工具发布了。
基本上跟 Golang Gin 的发布流程类似,本地编译好,scp 到服务器上。 然后配置好 systemd, nginx reload 就可以了。
比较省事的地方是 axum 默认会把模板文件打包到二进制文件中,不需要像 golang gin 一样增加额外配置代码。
第一个 Rust 小工具
Rust Axum 小工具: 中文标点替换成对应的英文标点符号
网页地址:
https://www.sunzhongwei.com/tools3/replace-chinese-punctuation
编译优化
如果不使用 release 方式编译,直接用 cargo run,生成的可执行文件非常大。 例如,我一个简单的页面,就达到了 65M。
> ls -lah target/debug/
total 65M
4.0K Dec 2 13:35 ./
4.0K Nov 4 14:09 ../
0 Nov 4 14:09 .cargo-lock*
4.0K Dec 2 13:22 .fingerprint/
4.0K Nov 27 17:15 build/
4.0K Dec 2 13:42 deps/
4.0K Nov 4 14:09 examples/
4.0K Dec 2 13:22 incremental/
65M Dec 2 13:35 rust_tool*
187 Dec 2 09:52 rust_tool.d*
使用 release 方式编译,能大大减少生成文件的体积。
cargo build --release
> ls -lah target/release/
total 8.5M
4.0K Dec 2 13:44 ./
4.0K Dec 2 13:44 ../
0 Dec 2 13:44 .cargo-lock*
4.0K Dec 2 13:44 .fingerprint/
4.0K Dec 2 13:44 build/
4.0K Dec 2 13:44 deps/
4.0K Dec 2 13:44 examples/
4.0K Dec 2 13:44 incremental/
8.5M Dec 2 13:44 rust_tool*
189 Dec 2 13:44 rust_tool.d
- 第一次编译花费了 22 秒。
- 但是第二次编译只花费了 2 秒。应该是省去了三方依赖的编译时间。
发布到服务器上
将 release 编译好的可执行文件,scp 到服务器上,直接运行,或者使用 systemd 启动。
然后就可以使用浏览器访问了。
如果想跟其他服务共用一个域名及端口,就得用到 nginx 配置了。
nginx 配置
实际上复制了一份 Golang Gin 的 Nginx 配置, 用在 Rust Axum 上,完全通用。
例如,我 Axum 服务监听的端口号为 9023,然后想将 tools3 子路径转发到 Axum 服务上。
location /tools3/ {
proxy_set_header X-Forward-For $remote_addr;
proxy_set_header X-real-ip $remote_addr;
proxy_pass http://127.0.0.1:9023/tools3/;
}
reload nginx 即可。
sudo nginx -t
sudo nginx -s reload
在线体验效果:Rust Axum 小工具: 中文标点替换成对应的英文标点符号
查看合集
📖 Rust web 框架 axum 教程:从入门到遥遥领先
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式