跳转到内容
来自 Arch Linux 中文维基

GNU ArtanisScheme 编程语言的第一个产品级现代网络框架。它的设计和维护都以稳健、快速和易于使用为目标,适用于专业的网络开发。

GNU Artanis 以 GPLv3+ & LGPLv3+ 发布。它非常轻量级——新手也能轻松破解和学习。它具有一个完整的网络服务器实现,包括一个错误页面处理程序。它支持的数据库(通过 guile-dbi)有 MySQLSQLitePostgreSQL

安装

Guix

如果您已经安装 Guix 包管理器,可以直接使用以下命令安装:

guix install artanis

手动安装

安装 guilebase-develnss 等基础软件包。

安装 guile-curlAURguile-jsonAURguile-redisAUR

切换至一个新目录,下载 最新版本源代码压缩文件解压,切换至解压得到的目录,运行:

$ ./autogen.sh –no-configure 
$ ./configure 
$ make 
# make install 

AUR

安装 artanisAURartanis-gitAUR

提示:上述两个软件包的维护者均为 LS-Shandong,若打包有问题可以直接用中文交流。

配置

首次运行 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。这些是支持的三个:postgresqlmysqlsqlite3
  • #: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)

参见