安企CMS的安装-源码编译安装

适用人群:需要二次开发、定制功能,或官方提供的二进制包无法满足需求的开发者。

难度:⭐⭐⭐⭐(需要熟悉 GoLang 和命令行操作)


前置条件

软件 版本要求 说明
GoLang 1.13+(推荐 1.25+) 编译 Go 源码
Git 任意版本 克隆代码仓库
MySQL 5.6.35+ 运行数据库

如果尚未安装 GoLang,请访问 go.dev/dl/ 下载安装。


获取源码

bash 复制代码
# 从 GitHub 克隆(推荐)
git clone https://github.com/fesiong/anqicms.git

# 或从 GitCode 镜像(国内用户)
git clone https://gitcode.com/anqicms/anqicms.git

# 进入项目目录
cd anqicms

编译准备

设置 Go 代理(国内用户)

bash 复制代码
go env -w GOPROXY=https://goproxy.cn,direct

下载依赖

bash 复制代码
go mod tidy
go mod vendor

编译可执行文件

方法一:测试运行(不生成二进制文件)

bash 复制代码
# 直接运行源码,用于调试和测试
go run kandaoni.com/anqicms/main

运行后,浏览器访问 http://127.0.0.1:8001 即可看到效果。

方法二:生成二进制文件

Windows 系统:

bash 复制代码
go build -ldflags '-w -s -H=windowsgui' -o ./anqicms.exe kandaoni.com/anqicms/main
  • -w -s:去除调试信息,减小文件体积
  • -H=windowsgui:Windows GUI 模式,运行时不显示命令行窗口

MacOS 系统:

bash 复制代码
go build -ldflags '-w -s' -o ./anqicms kandaoni.com/anqicms/main

Linux 系统:

推荐使用项目自带的 Makefile:

bash 复制代码
make

编译完成后,在项目根目录下生成 release/ 目录,其中包含了完整的运行环境(可执行文件、模板文件、静态资源等):

csharp 复制代码
release/
├── anqicms               # 编译好的可执行文件
├── config.sample.json    # 配置文件示例
├── template/             # 模板目录
├── public/               # Web 根目录
├── system/               # 后台管理界面
├── locales/              # 多语言包
├── data/                 # 数据目录
├── start.sh              # 启动脚本
├── stop.sh               # 停止脚本
└── doc/                  # 开发文档

也可以直接编译:

bash 复制代码
go build -ldflags '-w -s' -o ./anqicms kandaoni.com/anqicms/main

交叉编译

在不同平台上为目标平台编译:

bash 复制代码
# 在 MacOS 上编译 Linux 版本
GOOS=linux GOARCH=amd64 go build -ldflags '-w -s' -o ./anqicms-linux kandaoni.com/anqicms/main

# 在 MacOS 上编译 Windows 版本
GOOS=windows GOARCH=amd64 go build -ldflags '-w -s -H=windowsgui' -o ./anqicms.exe kandaoni.com/anqicms/main

# 在 Linux 上编译 Windows 版本
GOOS=windows GOARCH=amd64 go build -ldflags '-w -s -H=windowsgui' -o ./anqicms.exe kandaoni.com/anqicms/main

GOOSGOARCH 是 Go 交叉编译的环境变量,分别指定目标操作系统和 CPU 架构。


编译后端管理界面

注意:如果从 GitHub 克隆代码,后台管理界面(system/ 目录)默认是空的,需要单独编译或下载。

方式一:下载预构建包

anqicms-admin Releases 下载最新版 system.zip,解压到 AnQiCMS 项目根目录下的 system 文件夹。

bash 复制代码
# 下载 system.zip
wget https://github.com/fesiong/anqicms-admin/releases/latest/download/system.zip

# 解压到 system 目录
unzip system.zip -d system/

方式二:自行编译

如果需要对后台管理界面进行二次开发,可以克隆 anqicms-admin 仓库自行构建(Vue.js 项目):

bash 复制代码
git clone https://github.com/fesiong/anqicms-admin.git
cd anqicms-admin

# 安装依赖
npm install

# 构建
npm run build

# 构建产物在 dist/ 目录,将其复制到 anqicms 根目录下的 system/ 目录
cp -r dist/* /path/to/anqicms/system/

运行编译后的版本

bash 复制代码
# 1. 将编译好的文件复制到目标目录
# 2. 编辑 config.json 配置端口等信息
# 3. 启动
./start.sh

# 或直接运行
./anqicms

# 首次运行会提示初始化,访问 http://127.0.0.1:8001 进入安装界面

Makefile 常用命令

项目根目录下的 Makefile 提供了便捷的编译命令:

bash 复制代码
# 查看所有可用命令
make help

# 编译(生成 release 目录)
make

# 清理编译产物
make clean

# 运行测试
make test

# 查看版本号
make version

❓ 执行 go run kandaoni.com/anqicms/main 时提示 go: not found 怎么办?

说明 Go 语言环境没有安装或没有正确配置环境变量。

bash 复制代码
# 检查 Go 是否安装
go version
# 如果输出 "command not found",说明没有安装

# 安装 Go(Ubuntu/Debian 示例)
apt install golang-go

# 或从官网下载最新版
# 访问 https://go.dev/dl/ 下载对应系统的安装包

# 安装后验证
go version
# 应输出类似:go version go1.25.5 linux/amd64

国内用户安装 Go 后还需要设置代理:

bash 复制代码
go env -w GOPROXY=https://goproxy.cn,direct

❓ 编译出来的二进制包体积很大(上百 MB),能缩小吗?

默认编译出来的二进制包包含调试信息和符号表,体积较大。通过以下方法可以显著缩小体积:

方法 命令 效果
去除调试信息 go build -ldflags '-w -s' 约减小 40%
UPX 压缩 upx anqicms 约减小 70%

完整优化命令

bash 复制代码
# 编译时去除调试信息
go build -ldflags '-w -s' -o ./anqicms kandaoni.com/anqicms/main

# 安装 UPX(Ubuntu)
apt install upx

# 压缩二进包
upx anqicms

# 压缩后体积可降至 15-20 MB

v3.6.1 之后官方已经做了体积优化(从 103 MB 降到 51 MB),源码编译时同样有效。

❓ 我修改了源码,编译后如何确认修改已经生效?

几种验证方式:

bash 复制代码
# 方式一:通过版本号验证(如果在代码中修改了版本号)
./anqicms --version

# 方式二:通过编译时间戳验证
ls -la ./anqicms
# 查看文件的修改时间,确认是刚刚编译的

# 方式三:直接验证功能
# 如果你的修改是增加了某个新标签或新接口
# 可以直接在浏览器中访问对应的 URL 确认

# 方式四:校验文件 MD5(前后对比)
md5sum ./anqicms
# 每次编译的 MD5 都不同

记住 :每次修改源码后,必须重新编译并重启 AnQiCMS 进程,修改才会生效。重启后还要在后台更新缓存。

相关推荐
Sinclair1 小时前
安企CMS的安装-同一服务器多站点部署
运维·后端
Sinclair1 小时前
安企CMS的安装-Docker 部署
运维·docker·容器
Sinclair1 小时前
安企CMS的安装-服务器手动部署
运维·后端
shujudang1 小时前
业务闭环视角下的营销自动化(MA)平台选型逻辑
大数据·运维·数据分析·自动化·营销自动化
Sinclair2 小时前
安企CMS的安装-PHPStudy(小皮面板)部署
前端·后端
Sinclair2 小时前
安企CMS的安装-宝塔面板部署
服务器·后端
会飞的特洛伊2 小时前
IAM身份认证
前端·后端
开飞机的舒克_2 小时前
FastAPI 异步 ORM 实战:从核心特性到图书 CRUD 最佳实践
后端
码栈研说2 小时前
Go 语言大白话入门 7 - 函数:把重复代码收起来
后端·程序员