本项目使用 Cloud Native Build (CNB) 实现自动化拉取 GitHub 仓库代码、编译并打包 Nginx,最终生成可发布的 Release 版本。整个流程无需手动配置环境依赖,支持定时构建与发布,适用于 DevOps 自动化部署场景。
Linux 操作系统:运行构建脚本和编译任务 Cloud Native Build (CNB):自动检测和配置构建环境 CNB Cron:定时触发构建流程 Shell / Python 脚本:用于拉取代码、执行构建、打包和发布 Git:拉取源码仓库 Docker(可选):如果使用容器化构建
├── .cnb.yml # 构建配置文件
├── README.md # 项目说明文档
├── latest_version.json # 最新版本信息文件
└── pull.py # 主脚本(拉取、编译、打包)
pull.py 是项目的核心脚本,一条命令完成所有操作:
python3 pull.py
/usr/local/nginx 目录打包为 nginx-{version}.tar.gzlatest_version.json 到 git 仓库(含重试机制)脚本以 JSON 格式输出结果:
{
"code": 200,
"msg": "✅ 下载、编译、打包全部完成",
"data": {
"filename": "nginx-1.25.3.tar.gz",
"version": "1.25.3"
}
}
状态码说明:
200: 成功完成所有流程(下载、编译、打包)201: 已是最新版本,跳过下载500: 操作失败定时任务触发:使用 CNB cron 定时拉取最新代码。 代码拉取:脚本自动从指定的 GitHub 仓库拉取 Nginx 最新源码。 CNB 构建:利用 CNB云原生构建 自动构建 Nginx。 编译打包:构建完成后,将编译产物打包为可发布的版本(如 .tar.gz)。 发布 Release
本项目编译的 Nginx 使用默认配置安装,关键目录如下:
/usr/local/nginx/
| 目录 | 路径 | 说明 |
|---|---|---|
| 主程序 | /usr/local/nginx/sbin/nginx | Nginx 可执行文件 |
| 配置文件 | /usr/local/nginx/conf/nginx.conf | 主配置文件 |
| MIME 类型 | /usr/local/nginx/conf/mime.types | MIME 类型映射 |
| HTML 文件 | /usr/local/nginx/html/ | 默认网站根目录 |
| 默认首页 | /usr/local/nginx/html/index.html | 默认欢迎页面 |
| 错误页面 | /usr/local/nginx/html/50x.html | 错误页面 |
| 日志目录 | /usr/local/nginx/logs/ | 日志文件存储 |
| 访问日志 | /usr/local/nginx/logs/access.log | 访问日志 |
| 错误日志 | /usr/local/nginx/logs/error.log | 错误日志 |
| PID 文件 | /usr/local/nginx/logs/nginx.pid | 进程 ID 文件 |
| 临时文件 | /usr/local/nginx/temp/ | 临时文件目录 |
| 客户端 body | /usr/local/nginx/temp/client_body_temp | 客户端请求体临时文件 |
| 代理临时 | /usr/local/nginx/temp/proxy_temp | 代理临时文件 |
| FastCGI | /usr/local/nginx/temp/fastcgi_temp | FastCGI 临时文件 |
| uWSGI | /usr/local/nginx/temp/uwsgi_temp | uWSGI 临时文件 |
| SCGI | /usr/local/nginx/temp/scgi_temp | SCGI 临时文件 |
/usr/local/nginx/conf/nginx.conf
worker_processes: 工作进程数events: 连接处理配置http: HTTP 服务器配置server: 虚拟服务器配置location: URL 路由配置默认网站根目录位于:
/usr/local/nginx/html/
您可以将网站文件放置在此目录下,或通过修改 nginx.conf 中的 root 指令更改网站根目录。
构建完成后,会将整个 /usr/local/nginx 目录打包为:
nginx-{version}.tar.gz
# 解压到 /usr/local/ 目录
tar -zxvf nginx-{version}.tar.gz -C /usr/local/
这会将 Nginx 安装到 /usr/local/nginx/ 目录。
# 1. 创建目标目录
sudo mkdir -p /opt/nginx
# 2. 解压到目标目录
tar -zxvf nginx-{version}.tar.gz -C /opt/
# 3. 创建软链接(可选)
sudo ln -s /opt/nginx/nginx /usr/local/nginx
# 解压到任意目录
tar -zxvf nginx-{version}.tar.gz -C /path/to/your/directory/
# 使用绝对路径运行
/path/to/your/directory/nginx/sbin/nginx
为了方便使用,可以将 Nginx 添加到 PATH:
# 编辑 ~/.bashrc 或 ~/.zshrc
echo 'export PATH=/usr/local/nginx/sbin:$PATH' >> ~/.bashrc
# 使配置生效
source ~/.bashrc
# 之后就可以直接使用 nginx 命令
nginx -v
# 启动
/usr/local/nginx/sbin/nginx
# 停止
/usr/local/nginx/sbin/nginx -s stop
# 重启
/usr/local/nginx/sbin/nginx -s reload
# 测试配置文件
/usr/local/nginx/sbin/nginx -t