主题
运行 Pingora 服务器
要运行一个 Pingora 应用,首先需要理解它的运行模型:
Pingora 是一个基于异步事件循环的 多线程网络服务框架,每个服务都是通过 Server
实例来管理。
基本启动方式
运行 Pingora 应用的最简形式如下:
rust
use pingora::prelude::*;
#[tokio::main]
async fn main() {
let mut server = Server::new(None).unwrap();
server.bootstrap();
let app = http_proxy_service(None);
server.run_forever(app).unwrap();
}
执行:
bash
cargo run
即可启动一个默认配置的 HTTP 代理服务。
使用配置文件启动
Pingora 可以通过配置文件加载运行参数,比如监听端口、线程数、日志输出路径等。
配置文件示例:
toml
[server]
bind = "0.0.0.0:8080"
threads = 4
log_level = "info"
[proxy]
upstream = "https://example.com"
然后在代码中指定配置文件路径:
rust
let mut server = Server::new(Some("config.toml")).unwrap();
启动命令:
bash
cargo run -- --config config.toml
日志与运行输出
默认情况下,Pingora 会在标准输出中打印运行日志,包含:
- 服务启动与端口绑定信息
- 请求统计
- 连接复用、TLS 握手状态
- 错误与警告日志
可以通过环境变量或配置项自定义日志等级:
bash
RUST_LOG=pingora=debug cargo run
多线程与并发运行
Pingora 默认会根据 CPU 核心数自动分配工作线程。 你也可以在配置文件或代码中手动指定:
rust
server.options.threads = 8;
💡 提示:Pingora 的线程模型与 Tokio 类似,采用多 Reactor + Worker 模式,能够充分利用多核 CPU 的性能优势。
服务停止与退出
按 Ctrl + C
即可优雅关闭服务。 更多关于安全关闭与平滑重启的内容,请阅读下一章:优雅重启与关闭
小结
- 运行 Pingora 应用只需三步:创建
Server
→ 加载配置 → 启动服务; - 支持配置文件与命令行参数;
- 提供日志与线程管理功能;
- 后续章节将介绍如何平滑重启、配置守护进程等高级用法。