GNU Artanis 是 Scheme 编程语言的第一个产品级现代网络框架。它的设计和维护都以稳健、快速和易于使用为目标,适用于专业的网络开发。
GNU Artanis 以 GPLv3+ & LGPLv3+ 发布。它非常轻量级——新手也能轻松破解和学习。它具有一个完整的网络服务器实现,包括一个错误页面处理程序。它支持的数据库(通过 guile-dbi)有 MySQL、SQLite、PostgreSQL。
安装
Guix
如果您已经安装 Guix 包管理器,可以直接使用以下命令安装:
guix install artanis
手动安装
安装 guile包、base-devel包、nss包 等基础软件包。
安装 guile-curlAUR、guile-jsonAUR、guile-redisAUR。
切换至一个新目录,下载 最新版本源代码压缩文件并解压,切换至解压得到的目录,运行:
$ ./autogen.sh –no-configure $ ./configure $ make # make install
AUR
安装 artanisAUR 或 artanis-gitAUR。
配置
首次运行 Artanis 时需要配置文件。
- 如果使用最小模式,例如,所有代码都在脚本文件中,而不在应用程序目录下。配置文件必须命名为
/etc/artanis/artanis.conf
。
- 如果使用应用程序目录,配置文件
conf/artanis.conf
会自动生成。
使用
在控制台中键入 guile
,进入 Guile REPL。屏幕上将显示以下文本:
GNU Guile 3.0.9 Copyright (C) 1995-2023 Free Software Foundation, Inc. Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'. This program is free software, and you are welcome to redistribute it under certain conditions; type `,show c' for details. Enter `,help' for help. scheme@(guile-user)>
本文许多对 Artanis 的操作都会在这里完成。
运行
简单 HTTP 服务器
在控制台中运行这段代码:
guile -c "(use-modules (artanis artanis))(init-server)(run)"
您会看到这个屏幕:
Anytime you want to quit just try Ctrl+C, thanks! http://127.0.0.1:3000
运行一个使用 GNU Artanis 的站点
这是最简单的网站运行方式:
#!/bin/env guile !# (use-modules (artanis artanis)) (init-server) (get "/hello" (lambda () "hello world")) (run)
运行服务器
scheme@(guile-user)> (run #:host #f #:port #f #:debug #f #:use-db? #f #:dbd #f #:db-username #f #:db-passwd #f #:db-name #f)
关键字的值为 #f,默认情况下将从配置文件中获取值。
但你也可以定义它们:
- #:host:主机名。
- #:port:服务器的套接字端口。
- #:debug:设置 #t 如果您想要启用调试模式,日志将更加详细。
- #:use-db?:设置 #t 如果您想使用数据库,GNU Artanis 将初始化数据库连接。
- #:dbd:选择一个 dbd。这些是支持的三个:postgresql、mysql 和 sqlite3。
- #:db-username:你的数据库服务器的用户名。
- #:db-passwd:上述用户的数据库密码。
- #:db-name:要使用的数据库名称。
与 Nginx 一起工作
您可以使用反向代理尝试 GNU Artanis+Nginx。
虽然 GNU Artanis 有很好的服务器核心,但官方还是建议使用 Nginx 作为前端服务器。除了性能增强外,它还不易受到攻击。
以下是 /etc/nginx/nginx.conf
的一些示例行:
location / { proxy_pass http://127.0.0.1:''1234''; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
要使其正常工作,请在编辑文件后重启 Nginx,并运行 GNU Artanis:
scheme@(guile-user)> (run #:port 1234)
参见
- GNU Artanis web-framework Manual
$ info artanis
- 官方网站
- Savannah 页面
- Gitlab 仓库