如何在AnQiCMS单服务器上部署多个CMS实例?

作为一位精通AnQiCMS的网站运营人员,我深知在日益增长的业务需求下,高效、灵活地管理多个网站的重要性。有时,这意味着我们需要在单一服务器上部署多个独立的CMS实例,以应对不同的项目需求或更高的隔离性要求。AnQiCMS作为一个基于Go语言的企业级内容管理系统,其轻量、高效的特性,使其非常适合这样的部署场景。

本文将详细探讨如何在AnQiCMS单服务器上部署多个CMS实例,这与AnQiCMS内置的多站点管理功能有所不同。内置的多站点管理是指一个AnQiCMS应用程序管理多个逻辑站点,而部署多个CMS实例则是指在同一台服务器上运行多个独立的AnQiCMS应用程序进程。

理解AnQiCMS的多实例与多站点概念

在深入部署之前,我们需要明确AnQiCMS提供的两种“多网站”能力。

首先是AnQiCMS内置的多站点管理功能。这是AnQiCMS的核心优势之一,允许您在单个AnQiCMS应用实例下,通过后台配置和独立数据库,管理多个域名下的网站。这种模式的优点在于,您只需要维护一套AnQiCMS程序代码,更新和管理相对集中,适用于那些希望集中管理但内容隔离的站点。在这种模式下,您只需在AnQiCMS的“多站点管理”中添加新站点,并为每个站点指定独立的根目录(用于存放各自的缓存、上传文件等)和数据库。反向代理会把不同域名请求都指向同一个AnQiCMS进程监听的端口。

其次,也是本文将重点介绍的,是部署多个独立的AnQiCMS实例。这意味着您将在同一台服务器上运行多个AnQiCMS应用程序进程。每个进程都是一个完整的、独立的CMS,拥有自己的程序文件、配置文件、数据库和监听端口。这种方式提供了更高的隔离性和独立性,适用于完全不相关的项目,或者需要不同AnQiCMS版本、独立配置的项目。

部署多个AnQiCMS独立实例的准备工作

在您的服务器上部署多个AnQiCMS实例,需要确保满足一些基本条件。您将需要一台Linux服务器(或用于测试的Windows/macOS环境),并确保您拥有足够的系统资源,如CPU、内存和存储空间,以支撑多个CMS实例的运行。建议使用宝塔面板、1Panel或其他类似的服务器管理工具来简化操作,或者直接通过命令行进行部署。

每个AnQiCMS实例都需要一个独立的MySQL数据库。在开始部署前,请确保您的MySQL服务已安装并运行,并准备好为每个CMS实例创建独立的数据库和用户。

逐步部署多个AnQiCMS独立实例

我们将以Linux服务器环境为例,介绍如何部署多个独立的AnQiCMS实例。

为每个实例准备独立的文件目录

您需要为每个AnQiCMS实例准备一套独立的程序文件。首先,将下载好的AnQiCMS安装包解压到服务器上的一个目录,例如 /www/wwwroot/anqicms_site1。然后,将这个完整的AnQiCMS目录复制到另一个位置,例如 /www/wwwroot/anqicms_site2,作为第二个CMS实例的程序目录。以此类推,为每一个独立的CMS实例创建专属的程序文件目录。

为每个实例配置唯一的监听端口

AnQiCMS默认监听8001端口。然而,在同一台服务器上,每个独立的AnQiCMS实例必须使用一个唯一的端口来运行,以避免端口冲突。进入每个AnQiCMS实例的根目录,找到并编辑 config.json 文件。在其中,您需要将 port 字段的值修改为不同的端口号。例如,第一个实例使用8001,第二个实例使用8002,第三个实例使用8003,以此类推。

重命名AnQiCMS可执行文件(可选但推荐)

为了方便管理和区分不同实例的进程,您可以选择重命名每个实例目录下的 anqicms 可执行文件。例如,将 /www/wwwroot/anqicms_site1/anqicms 重命名为 anqicms_site1_app,将 /www/wwwroot/anqicms_site2/anqicms 重命名为 anqicms_site2_app。这将有助于您在查看系统进程时,更清晰地识别每个AnQiCMS实例。

创建独立的启动与停止脚本

每个独立的AnQiCMS实例都需要一套自己的启动 (start.sh) 和停止 (stop.sh) 脚本,这些脚本应指向各自实例的程序目录和重命名后的可执行文件。这些脚本将负责检查对应实例的运行状态,并在必要时启动或停止它。脚本内容应根据实际的目录路径和可执行文件名称进行调整。

例如,对于 anqicms_site2_app 实例,其 start.sh 文件中的 BINPATH 应指向 /www/wwwroot/anqicms_site2BINNAMEgrep 命令中的名称也应改为 anqicms_site2_app

配置系统进程守护

为了确保每个AnQiCMS实例在服务器重启后能够自动启动,并在出现异常时自动恢复运行,您需要为每个实例配置进程守护。

如果您使用的是宝塔面板,可以通过“网站” -> “Go项目”(或“其他项目”)功能为每个实例添加一个Go项目。在配置时,项目执行文件指向对应实例的可执行文件(例如 /www/wwwroot/anqicms_site2/anqicms_site2_app),项目端口填写该实例在 config.json 中配置的唯一端口(例如 8002),执行命令同样是可执行文件的路径,并勾选“开机启动”。

如果通过命令行部署,您可以为每个实例设置一个crontab任务,让它每分钟检查并启动对应的AnQiCMS进程,确保其持续运行。

# 编辑crontab任务
crontab -e

# 为每个AnQiCMS实例添加一行类似下面的任务,请根据实际路径和名称修改
# 假设 anqicms_site2 的程序目录是 /www/wwwroot/anqicms_site2,可执行文件是 anqicms_site2_app
*/1 * * * * /www/wwwroot/anqicms_site2/start.sh

配置Web服务器反向代理

每个AnQiCMS实例都需要通过一个域名对外提供服务。您需要在您的Web服务器(如Nginx或Apache)上为每个域名配置一个反向代理,将外部请求转发到对应AnQiCMS实例监听的唯一端口。

例如,对于 site2.com 这个域名,您可以配置Nginx反向代理将其请求转发到 http://127.0.0.1:8002

”`nginx server {