108个版本 (稳定)

1.1.23 2024年6月18日
1.1.20 2024年3月20日
1.0.12 2023年12月31日
1.0.2 2023年11月30日
0.24.0 2022年9月30日

#26 in HTTP服务器

Download history 44/week @ 2024-04-26 8/week @ 2024-05-03 3/week @ 2024-05-17 3/week @ 2024-05-24 1/week @ 2024-05-31 158/week @ 2024-06-14 26/week @ 2024-06-21 11/week @ 2024-07-05 146/week @ 2024-07-26 13/week @ 2024-08-02

每月159次下载

MIT/Apache

175KB
5K SLoC

基于rustdb数据库的Web服务器,具有数据库浏览、密码散列、数据库复制、电子邮件传输和定时任务。

安装和启动服务器

如果尚未安装,请首先安装 Rust。然后使用以下命令从命令提示符安装rustweb2:

cargo install rustweb2

从命令提示符,切换到要存储数据库的目录(文件将命名为rustweb.rustdb)。使用以下命令启动rustweb2:

rustweb2 3000

这应该会启动rustweb2服务器,监听端口3000(您可以使用任何可用的端口)。然后您应该能够浏览到 https://127.0.0.1:3000/admin。从这里有链接到手册、执行SQL、模式列表和其他链接。

安全性

初始登录安全性是禁用的。要启用它

(1) 编辑函数login.hash并更改盐字符串。

(2) 使用登录菜单链接添加登录用户并设置密码。

(3) 编辑函数login.user(请参阅其中包含的说明)。

初始化

新数据库从当前目录中的文件admin-ScriptAll.txt初始化。

如果ScriptAll.txt不存在,则使用默认初始化。

数据库复制

在您想要存储复制的数据库的目录(文件夹)中启动Rustweb2,指定-rep选项

例如

rustweb2 2000 --rep https://mydomain.com

如果已启用登录安全性,则需要指定登录详细信息(从login.user表中获得),例如

--login "uid=1; hpw=0xaaa023850abbdff839894888dd8e8abbceaaa023855abbdff839894888dd8e8c"

如果数据库非常大,可能更实用地使用FTP获取数据库的初始副本,否则将自动获取副本。

通过在日志事务表中插入记录来启用复制。

这些记录可以定期删除,前提是所有副本服务器都是最新的。

注意:从版本1.1.1(2024年3月)开始,事务记录只有在执行log.Roll()之后才会应用。这意味着在发生意外(例如错误的删除、更新或删除语句)的情况下,可以通过在log.Roll()中省略错误的事务来恢复数据库。

电子邮件

可以使用电子邮件模式发送电子邮件。

(1) 在email.SmtpServer中创建一条记录

(2) 在email.msg中创建一封电子邮件

(3) 将其插入到email.Queue中

(4) 调用内置函数EMAILTX()

如果无法发送电子邮件,并且错误是暂时的,它将被插入到email.Delayed表中,稍后重试。

永久性错误记录在email.SendError中

定时作业

可以通过在timed.Job中创建记录,在指定时间调用无参数的命名SQL函数。

这用于电子邮件系统重试暂时的电子邮件发送错误。

只读请求

GET请求使用数据库的只读副本进行处理,所做的任何更改都不会保存。这对于处理耗时较长的请求很有用,因为可以并行处理其他请求。可以通过添加查询参数"save"来覆盖此行为。

POST请求假定是读写操作,可以通过添加查询参数"readonly"来覆盖。

可选功能

mt-tokio启用多线程的tokio运行时(默认启用)。

unsafe-optim启用不安全优化(不应引起任何问题,但程序员可能会犯错误)。

例如,这将使用不安全优化安装rustweb2

cargo install rustweb2 -F unsafe-optim

链接

crates.io : https://crates.io/crates/rustweb2

仓库: https://github.com/georgebarwood/Rustweb2

博客: https://rustdb.wordpress.com/

依赖

~14–47MB
~834K SLoC