PublicCMS 多站点管理实战指南:3 步在一个后台管起多个网站

发布时间:2026/8/24 10:39:51
PublicCMS 多站点管理实战指南:3 步在一个后台管起多个网站 PublicCMS 多站点管理实战指南3 步在一个后台管起多个网站【免费下载链接】PublicCMSMore than 2.7 million lines of code modification continuously iterated for 9 years to modernize java cms, easily supporting tens of millions of data, tens of millions of PV; Support static, server side includes; Currently has 0.0005% of the worlds users (w3techs provided data), language support in Chinese, Japanese, English项目地址: https://gitcode.com/gh_mirrors/pu/PublicCMS一个后台要管好几个网站来回切换、重复建设太麻烦如果你正在运营公司官网、区域分站或几个不同风格的站点PublicCMS 的多站点管理功能正好解决这个问题一套系统、一个管理后台同时维护多个相互隔离又共享核心资源的网站。本文带你从零走完建站点 → 配域名 → 套模板的完整流程。 一分钟搞懂多站点管理PublicCMS 把站点做成了一等公民每个站点有独立的目录模板目录、静态资源目录、独立的栏目和内容但它们共用同一套数据库、同一套账号体系和一套代码。访客请求进来时系统拦截器根据请求的域名即浏览器地址栏里的 Host自动匹配到对应站点再加载该站点的模板渲染页面——所以多个网站跑在同一个应用里却互不干扰。 动手前的准备环境JDK 1.8 及以上V5 需 Java 17V6 需 Java 21MySQL 5.5 及以上获取源码唯一需要的命令git clone https://gitcode.com/gh_mirrors/pu/PublicCMS编译运行后访问http://localhost:8080/按页面提示初始化数据库管理后台在http://localhost:8080/admin/内置管理员账号admin/admin如果你用 docker compose 部署仓库根目录自带docker-compose.yml直接docker compose up -d即可 跟着我做1. 创建第一个新站点登录管理后台在左侧导航找到站点菜单多站点管理的统一入口点击新增填写站点名称和目录如site_2系统用它生成物理目录全局唯一填写静态站点地址生成的 HTML 输出到哪和动态站点地址未静态化页面的访问路径保存。系统会自动创建data/publiccms/template/site_2/模板目录和data/publiccms/web/site_2/静态资源目录无需手动建目录2. 给站点配独立域名站点和域名的对应关系存在sys_domain表中对应实体 publiccms-parent/publiccms-core/src/main/java/com/publiccms/entities/sys/SysDomain.java支持通配域名适合每个区域一个二级域名的场景。配置步骤在站点管理中为站点绑定域名可开启通配匹配在 Nginx 中为该域名新增一个 server 块。仓库里有一份现成样例data/nginx-config/site_1.conf核心就三件事proxy_pass http://cms;把请求转发给 PublicCMS 应用upstream 定义在data/nginx-config/cms.confproxy_set_header Host $http_host;保留原始 Host 头这是站点匹配能生效的关键ssi on;开启服务器端包含SSI并配置/include/、/webfile/的静态目录映射3. 为站点套用模板新站点建好后外观完全由它的模板目录决定进入data/publiccms/template/site_2/你会看到index.html首页、content.html内容页等模板文件修改模板即可换肤模板指令与变量写法可参考doc/PublicCMS Directive and Method Manual.html图片、CSS、JS 等资源放到data/publiccms/web/site_2/assets/下站点页面按相对路径引用✨ 让它更好用按站点开关静态化站点实体SysSite.java上有启用静态化和启用 SSI两个开关。流量大的主站开静态化降低服务器压力内容更新频繁的分站可以只走动态 SSI 局部包含站群模式把主站标记为站群multiple字段后可以通过currentSiteId参数在同一次访问中切换子站点适合一个主站入口、多套分站内容的门户结构匹配逻辑在 SiteInterceptor.java 中多语言分站示例里的 site_2 就带了英文模板template/site_2/en/与index_en.html给站点配多语言后同一站点可按语言输出不同页面分权管理创建站点时可指定管理角色、部门和管理员账号让不同团队各管各站互不越权前端效果参考示例站点的首页横幅长这样静态资源组织方式可直接照着抄 踩坑与自查域名访问不生效一直落到默认站点站点匹配靠的是请求的 Host。先确认 Nginx 里有没有proxy_set_header Host $http_host;或proxy_pass时带了$host变量再检查后台域名配置里拼写、通配符是否与 DNS 实际解析一致。静态页面 404 或资源路径错乱对比三处路径是否一致站点静态站点地址配置、Nginx 中/webfile/、/include/的 alias 目录、data/publiccms/web/site_x/实际目录。三者任何一处对不上文章页能打开但图片、包含块就会丢。站群切换子站点无效确认两点主站已开启站群开关currentSiteId传的是直属子站点的 id拦截器只允许切换到当前站的直接子站。收尾走通以上三步你就拥有了一个可水平扩展的站点矩阵新增网站不再需要部署一套系统只是后台里多一条记录加两个目录。更多细节部署参数、集群配置、模板指令全集请查阅仓库doc/中文手册/下的部署手册与模板制作手册以及 doc/ 目录里的数据字典文档。【免费下载链接】PublicCMSMore than 2.7 million lines of code modification continuously iterated for 9 years to modernize java cms, easily supporting tens of millions of data, tens of millions of PV; Support static, server side includes; Currently has 0.0005% of the worlds users (w3techs provided data), language support in Chinese, Japanese, English项目地址: https://gitcode.com/gh_mirrors/pu/PublicCMS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考