运行时控制#

要启动 Angie,请使用 systemd 运行以下命令:

$ sudo service angie start

建议事先检查配置语法。操作如下:

$ sudo angie -t && sudo service angie start

要重新加载配置:

$ sudo angie -t && sudo service angie reload

要停止 Angie:

$ sudo service angie stop

安装后,运行以下命令以确保 Angie 正在运行:

$ curl localhost:80

备注

开源版本的 Angie 的运行方法可能因安装方法而异。

Angie 有一个主进程和多个工作进程。主进程负责读取和评估配置,并维护工作进程。工作进程负责实际请求处理。Angie 使用基于事件的模型和操作系统相关的机制来高效地在工作进程之间分配请求。工作进程的数量在配置文件中定义,可以在给定配置中是固定的,也可以根据可用 CPU 核心的数量自动调整(参见 worker_processes)。

使用信号#

也可以使用信号来控制 Angie。默认情况下,主进程的进程 ID 写入到文件 /var/run/angie.pid。可以在配置时或在 angie.conf 中使用 pid 指令更改此文件名。主进程支持以下信号:

TERM, INT

快速关闭

QUIT

优雅的 关闭

HUP

重新加载配置,更新时区(仅适用于 FreeBSD 和 Linux),使用更新的配置启动新的工作进程,优雅地 关闭旧的工作进程

USR1

重新打开日志文件

USR2

升级可执行文件

WINCH

优雅地 关闭工作进程

单个工作进程也可以使用信号控制,尽管这是可选的。支持的信号有:

TERM, INT

快速关闭

QUIT

优雅的 关闭

USR1

重新打开日志文件

WINCH

用于调试的异常终止(需要启用 debug_points

更改配置#

为了让 Angie 重新读取配置文件,应向主进程发送 HUP 信号。主进程首先检查语法的有效性,然后尝试应用新配置,包括打开新的日志文件和监听套接字。如果应用新配置失败,主进程将回滚更改并继续使用旧配置运行。如果应用成功,主进程将启动新的工作进程,并向旧的工作进程发送消息,要求它们 优雅地 关闭。旧的工作进程关闭它们的监听套接字并继续为现有客户端提供服务。在所有客户端服务完成后,旧的工作进程将关闭。

Angie 跟踪每个进程的配置更改。生成号在服务器首次启动时从 1 开始。这些数字随着每次配置重新加载而递增,并在进程标题中可见:

$ sudo angie
$ ps aux | grep angie

    angie: master process v1.7.0 #1 [angie]
    angie: worker process #1

成功重新加载配置后(无论是否有实际更改),Angie 将为接收到新配置的进程增加生成号:

$ sudo angie -s reload
$ ps aux | grep angie

    angie: master process v1.7.0 #2 [angie]
    angie: worker process #2

如果任何来自先前生成的工作进程继续运行,它们将立即可见:

$ ps aux | grep angie

    angie: worker process #1
    angie: worker process #2

备注

不要将配置生成号与“进程编号”混淆;Angie 出于实际目的不使用连续的进程编号。

轮换日志文件#

要轮换日志文件,首先重命名文件。然后,向主进程发送 USR1 信号。主进程将重新打开当前所有打开的日志文件,并将它们分配给工作进程运行的非特权用户。成功重新打开文件后,主进程关闭所有打开的文件,并通知工作进程重新打开它们的日志文件。工作进程也将打开新文件并立即关闭旧文件。结果,旧文件几乎立即可用于后续处理,例如压缩。

即时可执行文件升级#

要升级服务器可执行文件,首先用新文件替换旧的可执行文件。然后,向主进程发送 USR2 信号。主进程将其当前文件重命名为带有进程 ID 的新文件,带有 .oldbin 后缀,例如 /usr/local/angie/logs/angie.pid.oldbin,然后启动新的可执行文件,新的可执行文件将启动新的工作进程。

请注意,旧主进程不会关闭其监听套接字,并且可以管理以重新启动其工作进程(如果需要)。如果新可执行文件未按预期执行,您可以采取以下操作之一:

  • 向旧主进程发送 HUP 信号。这将启动新的工作进程,而无需重新读取配置。然后,您可以通过向新主进程发送 QUIT 信号来 优雅地 关闭所有新进程。

  • 向新主进程发送 TERM 信号。它将向其工作进程发送消息,要求它们立即退出。如果有任何进程未退出,请发送 KILL 信号以强制退出。当新主进程退出时,旧主进程将自动启动新的工作进程。

如果新主进程退出,旧主进程将从文件名中移除带有进程 ID 的 .oldbin 后缀。

如果升级成功,向旧主进程发送 QUIT 信号,只有新的进程将保留。

命令行选项#

-h, -?

显示命令行参数帮助,然后退出。

--build-env

显示构建环境的辅助信息,然后退出。

-c file

使用 file 作为配置文件,而不是 默认文件

-e file

使用 file 作为错误日志文件,而不是 默认文件。特殊值 stderr 指定标准错误输出。

-g directives

应用额外的 全局配置指令,例如:angie -g "pid /var/run/angie.pid; worker_processes `sysctl -n hw.ncpu`;"

-m, -M

显示内置 (-m) 或内置和加载 (-M) 模块的列表,然后退出。

-p prefix

指定 angieprefix 路径(服务器文件所在的目录;默认是 /usr/local/angie/)。

-q

仅在设置 -t-T 时显示错误消息;否则不执行任何操作。

-s signal

向主进程发送 信号,例如 stopquitreopenreload 等。

-t

测试配置文件,然后退出。Angie 检查配置语法并递归地包含配置中提到的任何文件。

-T

-t 相同,但在递归包含配置中提到的所有文件后,还将摘要配置输出到标准输出。

-v

显示 Angie 版本,然后退出。

-V

显示 Angie 版本、编译器版本和使用的 构建参数,然后退出。