-
Tips
-
部署过程中的一些重点
- releas配置信息
[profile.release] opt-level = 3 # 最高优化级别 lto = true # 链接时优化 codegen-units = 1 # 减少并行单元以提高优化 panic = "abort" # 遇到panic直接终止而不是展开堆栈 strip = true # 自动剥离符号信息
- 交叉编译到x86架构(也可以通过Github的action来进行目标编译)
- 注意以下的配置信息要放在 .cargo/config.toml 文件中
toml [target.x86_64-unknown-linux-musl] linker = "x86_64-linux-musl-gcc"
rustup target add x86_64-unknown-linux-musl
rustup target list --installed
- 查看已经安装的编译目标,注意还有一个gnu版本的不要搞混,另外还有专用的更简单的cross工具用来处理交叉编译
- cross会使用Docker容器来进行编译,避免链接器的各种问题
cargo install cargo-xbuild
brew install FiloSottile/musl-cross/musl-cross
cargo build --release --target=x86_64-unknown-linux-musl
du -sh ./target/x86_64-unknown-linux-musl/release/*
- 用来查看最终生成的编译产物
- 注意以下的配置信息要放在 .cargo/config.toml 文件中
- 使用Makefile来归整所需文件和部署
- 选择整个项目部署到以下路径
/opt/your-app-name/
- 使用rsync和Ai辅助,很容易就可以完成收集部署文件并同步到指定ip服务器的功能
- --delete 删除命令,同步时会删除本地不存在但是服务器上存在的数据,所以如有必要,手动执行即可
- rsync需要提前在服务器建立好指定的路径
- 选择整个项目部署到以下路径
- 使用systemd来管理服务
- systemd可以映射工作路径,在文件分散的情况下,也可以通过映射来符合程序设计的需求,通常是归整为正常工作的结构
- 还可以记录标准输出到journald通用日志管理
journalctl -u your-service-name
- 查看服务器的输出日志
- 在systemd里配置环境变量RUST_LOG的级别为合适的状态
- 通常为INFO级
- Actix-web在默认的情况下是ERROR级
- 配置方式:
/etc/systemd/system/my_rust_web.service
- 文件存放位置
systemctl daemon-reload
- 修改或添加服务文件后需要重启
systemctl start my_rust_web.service
systemctl enable my_rust_web.service
- 开机启动
journalctl -u my_rust_web.servie
- 查看日志
-
Route
- 简单直观,使用声明式注解或方法链
- 适合简单的HTTP端点,如CRUD操作
- 代码量少,易于维护
- 关注点在于请求参数的转换和响应生成
-
Service
- 更灵活,可以控制请求处理的各个环节
- 适合复杂业务逻辑或需要共享状态的情况
- 可以实现请求预处理、拦截和自定义响应生成
- 通常包含更多业务逻辑和状态管理
- 可以作为一个可重用的组件封装
-
Arc
- 关于Arc可以看成是对包裹对象的一个计数指针,而Oncelock是跟随内存周期,从实际的web应用上来看,Httpserver的Arc持有几乎就是和内存周期相同,当然,如果有跨HttpServer的共享数据的,则需要OnceLock,不过从另一个方面来看,全部HttpServer通过Arc持有也是一样的效果.
-
md文件转换html
- 相对路径的问题(文件用相对,请求用绝对)
- 代码中针对本地文件系统时
- /static/file.md是绝对路径
- static/file.md是相对路径
- 而在html文件中使用 /static/ 时,路径是相对于网站根目录的,浏览器会向服务器请求 http://127.0.0.1:8080/static/xxx
- 代码中针对本地文件系统时
- Tera模版转义提取后内容的问题
- 使用下面的safe来防止转义
{{ content | safe }}
- 相对路径的问题(文件用相对,请求用绝对)
-
CSS基础
- 选择器
- 元素选择器
- <p>
- 类选择器/常用
- .class
- ID选择器/具有唯一性
- #id
- 元素选择器
- 盒子
- margin: 遵循上右下左
- border
- padding
- 布局
- block:块级,独立一块
- inline: 内联元素
- inline-block:内联块,可以设置宽高
- none:不可见
- 弹性布局flex
- 需要父容器
- item:flex:占位比例
- gap:间隔
- justify-content:主轴对齐
- flex-direction:改变主轴
- align-items:交叉轴
- 网格布局grid
- fr可用空间的分数,fraction of the available space
- 定位position
- static:默认
- relative:微调
- absolute:相对于最近的已定位的父级元素
- fixed 固定,常用导航器
- 文本在html中默认是16px
- Emmet快速输入,lorem提供随机文字
(li>article>(h3>lorem2)(p>lorem)+svg+a+img[src="https://picsum.photos/720/720?random=$"])*5
- 选择器
-