菜鸟科技网

Tengine常用命令有哪些?

Tengine 本身是一个 Nginx 的分支,它的命令行工具与 Nginx 高度兼容,甚至可以直接使用 nginx 命令,Tengine 在 Nginx 的基础上增加了许多自己的功能和模块,因此也提供了一些自己特有的命令。

Tengine常用命令有哪些?-图1
(图片来源网络,侵删)

我们将命令分为以下几类:

  1. 核心管理与控制命令 (与 Nginx 兼容)
  2. Tengine 特有命令
  3. 配置文件检查与测试命令 (与 Nginx 兼容)
  4. 查看状态与日志命令 (与 Nginx 兼容)
  5. 升级与回滚命令 (Tengine 特有优势)

核心管理与控制命令

这些是用于启动、停止、平滑重启 Tengine 服务器的核心命令,通常需要 root 权限执行。

tengine / nginx

  • 作用: 启动 Tengine。

  • 语法: tengine [-c config_file]

    Tengine常用命令有哪些?-图2
    (图片来源网络,侵删)
  • 示例:

    # 使用默认配置文件 (通常是 /usr/local/nginx/conf/nginx.conf 或 /etc/nginx/nginx.conf) 启动
    sudo tengine
    # 指定配置文件启动
    sudo tengine -c /path/to/your/custom/nginx.conf
  • 注意: Tengine 是通过 aptyum 安装的,通常会有一个 systemd 服务(如 tengine.service),你应该使用 systemctl 来管理服务,而不是直接调用 tengine 命令。

tengine -s stop

  • 作用: 快速停止 Tengine 进程,它会立即终止所有 worker 进程,可能导致正在处理的请求被中断。
  • 语法: tengine -s stop
  • 示例:
    sudo tengine -s stop

tengine -s quit

  • 作用: 优雅停止 Tengine 进程,master 进程会收到信号,然后通知所有 worker 进程在处理完当前所有请求后退出,这是生产环境中最常用的停止方式。
  • 语法: tengine -s quit
  • 示例:
    sudo tengine -s quit

tengine -s reload

  • 作用: 平滑重启 (或称为“重载配置”),这是最常用的维护命令,master 进程会检查新配置文件的语法是否正确,如果正确,它会启动一个新的 worker 进程来处理新请求,然后逐步关闭旧的 worker 进程,整个过程服务不中断。
  • 语法: tengine -s reload
  • 示例:
    # 修改完配置文件后,执行此命令使新配置生效
    sudo tengine -s reload

tengine -s reopen

  • 作用: 重新打开日志文件,当你需要轮转日志文件(用 mv 命令将 access.log 重命名为 access.log.1)时,这个命令会让 Tengine 关闭旧的日志文件句柄,并打开新的日志文件,而无需重启服务。
  • 语法: tengine -s reopen
  • 示例:
    # 1. 轮转日志文件
    sudo mv /usr/local/nginx/logs/access.log /usr/local/nginx/logs/access.log.1
    # 2. 让 Tengine 打开新的 access.log
    sudo tengine -s reopen

Tengine 特有命令

Tengine 增加了一些非常有用的命令,这些是标准 Nginx 所不具备的。

tengine -V

  • 作用: 显示 Tengine 的版本号以及编译时使用的模块和参数,这个命令非常关键,用于确认 Tengine 是否包含你需要的特定模块(如 ngx_http_concat_module)。
  • 语法: tengine -V
  • 示例:
    tengine -V
  • 输出示例:
    Tengine version: Tengine/2.3.3
    nginx version: nginx/1.18.0
    built by gcc 4.8.5 20250623 (Red Hat 4.8.5-44) (GCC)
    built with OpenSSL 1.0.2k-fips  26 Jan 2025
    TLS SNI support enabled
    configure arguments: --prefix=/usr/local/nginx ...
    # ... 这里会列出所有编译进去的模块 ...

    注意看输出中是否有你需要的模块,--with-http_concat_module

    Tengine常用命令有哪些?-图3
    (图片来源网络,侵删)

tengine -t

  • 作用: 测试配置文件语法,这是运维人员最常用的命令之一,用于在重载配置前检查配置文件是否有语法错误。
  • 语法: tengine -t
  • 示例:
    tengine -t
  • 成功输出:
    the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    configuration file /usr/local/nginx/conf/nginx.conf test is successful
  • 失败输出:
    nginx: [emerg] "server" directive is not allowed here in /usr/local/nginx/conf/nginx.conf:50
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed

    这会告诉你哪一行有语法错误。


配置文件检查与测试命令

这些命令主要用于调试,在生产环境中不常用。

tengine -T config_file

  • 作用: 详细测试配置文件,它会尝试解析配置文件,并输出每个模块的配置详情,非常有助于调试复杂的配置问题。
  • 语法: tengine -T config_file
  • 示例:
    tengine -T /usr/local/nginx/conf/nginx.conf

tengine -q

  • 作用: 在测试配置文件时,只输出错误信息,忽略成功信息,适合用在脚本中,只关心是否有错误。
  • 语法: tengine -q -t
  • 示例:
    tengine -q -t

    如果有错误,会打印出来;如果没有错误,则没有任何输出。


查看状态与日志命令

ps aux | grep tengine

  • 作用: 查看当前正在运行的 Tengine 进程,你会看到一个 master 进程和多个 worker 进程。
  • 示例:
    ps aux | grep tengine
  • 输出:
    root     12345  0.0  0.0  46608  1124 ?        Ss   10:00   0:00 tengine: master process tengine
    nobody   12347  0.0  0.1  49288  5324 ?        Sl   10:00   0:00 tengine: worker process
    nobody   12348  0.0  0.1  49288  5324 ?        Sl   10:00   0:00 tengine: worker process

tail -f /path/to/access.log

  • 作用: 实时查看访问日志,用于监控网站的实时访问情况。
  • 示例:
    tail -f /usr/local/nginx/logs/access.log

tail -f /path/to/error.log

  • 作用: 实时查看错误日志,用于排查问题。
  • 示例:
    tail -f /usr/local/nginx/logs/error.log

升级与回滚命令

这是 Tengine 的一个亮点功能,可以实现 Tengine 的平滑升级和回滚,而不会中断服务。

tengine -t

  • 作用: 在升级前,必须先测试新版本的配置文件,确保语法正确。
  • 示例:
    # 假设新版本的二进制文件是 tengine.new
    ./tengine.new -t

tengine -s upgrade

  • 作用: 平滑升级,它会启动新的 master 进程(使用新二进制文件),新的 master 进程会接管旧的 worker 进程,旧进程会在处理完所有请求后自动退出。
  • 步骤:
    1. 将新版本的 Tengine 二进制文件(tengine.new)放到服务器的某个目录,并赋予执行权限。
    2. 将旧二进制文件(tengine)重命名备份(tengine.old)。
    3. 将新二进制文件重命名为 tengine
    4. 执行升级命令。
  • 示例:
    # 1. 备份旧二进制
    sudo mv /usr/local/nginx/sbin/tengine /usr/local/nginx/sbin/tengine.old
    # 2. 放入新二进制并重命名
    sudo mv /path/to/tengine.new /usr/local/nginx/sbin/tengine
    sudo chmod +x /usr/local/nginx/sbin/tengine
    # 3. 执行平滑升级
    sudo /usr/local/nginx/sbin/tengine -s upgrade

tengine -s stop

  • 作用: 在升级失败后,使用此命令停止新的 master 进程,从而回滚到旧版本。
  • 示例:
    # 如果升级后发现新版本有问题,可以停止新进程
    sudo /usr/local/nginx/sbin/tengine -s stop

    执行后,旧版本的进程可能还在运行,或者你可以手动恢复旧二进制文件并重启。

总结与最佳实践

命令 作用 场景 备注
tengine -V 查看版本和编译参数 安装后确认模块支持 非常重要
tengine -t 测试配置文件语法 修改配置后,重载前 必用,防止服务中断
tengine -s reload 平滑重载配置 日常运维,更新配置 最常用的服务不中断更新
tengine -s quit 优雅停止服务 关机或维护前 stop 更安全
tengine -s reopen 重新打开日志文件 日志轮转 配合 logrotate 使用
tengine -s upgrade 平滑升级版本 版本更新 Tengine 特有功能,非常强大

最佳实践流程:

  1. 修改配置文件 (vim nginx.conf)。
  2. 测试语法 (tengine -t)。
  3. 如果语法正确,平滑重载 (tengine -s reload)。
  4. 如果语法错误,根据提示修改,然后重复步骤 2 和 3。
分享:
扫描分享到社交APP
上一篇
下一篇