安企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 进程,修改才会生效。重启后还要在后台更新缓存。

相关推荐
Bs_MoneyMagnet7 小时前
基于springboot+vue的滑雪场票务与装备租赁系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计
AlienZHOU11 小时前
AI Coding 时代下,我的技术面试实践分享
前端·后端·面试
狗头大军之江苏分军14 小时前
《潮水漫过十七岁》开学了
后端
我要见SA姐114 小时前
告别 Copilot?Codex 本地化部署指南
运维·数据库·机器学习·oracle·回归
苏三说技术14 小时前
如何看待GPT-6在UP主众测中碾压夺冠?它是现在最强大模型吗?
后端
mldong15 小时前
一份 JSON,一条能跑的审批流:把报销流程送上工作流引擎
后端·架构
wno70415 小时前
Spring Boot WebFlux增删改查
java·spring boot·后端
Captaincc15 小时前
AI用量v0.1.11更新发布 新增 jusage doctor 诊断指令 托盘展示token 和余额 新增 AutoClaw 支持
前端·后端·vibecoding
Elastic 中国社区官方博客15 小时前
列式存储并不等同于列式数据库。Columnar 模式为 Elasticsearch 带来了什么
大数据·运维·数据库·elasticsearch·搜索引擎
aramae16 小时前
模拟实现strlen()函数 (C语言)
c语言·开发语言·后端